"feat: Update job templates in frontend"
This commit is contained in:
@@ -1,40 +1,23 @@
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
import threading
|
||||
import time
|
||||
import subprocess
|
||||
import socket
|
||||
import json
|
||||
import secrets
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
import atexit
|
||||
from datetime import datetime, timedelta
|
||||
from functools import wraps
|
||||
from typing import Optional, Dict, List, Tuple, Any, Union
|
||||
|
||||
from flask import Flask, render_template, request, redirect, url_for, flash, jsonify, session, send_file, Response, make_response
|
||||
from flask_login import LoginManager, login_user, logout_user, login_required, current_user, UserMixin
|
||||
from werkzeug.security import check_password_hash, generate_password_hash
|
||||
from flask import Flask, render_template, request, jsonify, redirect, url_for, flash, send_file, abort, session
|
||||
from flask_login import LoginManager, login_user, logout_user, login_required, current_user
|
||||
from werkzeug.utils import secure_filename
|
||||
import sqlalchemy.exc
|
||||
import sqlalchemy
|
||||
from sqlalchemy.orm import joinedload
|
||||
from sqlalchemy.orm import sessionmaker, joinedload
|
||||
from sqlalchemy import func
|
||||
from PyP100 import PyP110
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
from flask_wtf.csrf import CSRFError
|
||||
|
||||
from config.settings import (
|
||||
SECRET_KEY, TAPO_USERNAME, TAPO_PASSWORD, PRINTERS,
|
||||
FLASK_HOST, FLASK_PORT, FLASK_DEBUG, SESSION_LIFETIME,
|
||||
SCHEDULER_INTERVAL, SCHEDULER_ENABLED, get_ssl_context, FLASK_FALLBACK_PORT,
|
||||
SSL_ENABLED, SSL_CERT_PATH, SSL_KEY_PATH
|
||||
)
|
||||
from utils.logging_config import setup_logging, get_logger, log_startup_info, debug_request, debug_response, measure_execution_time
|
||||
from models import User, Printer, Job, Stats, GuestRequest, UserPermission, Notification, get_db_session, init_database, create_initial_admin
|
||||
from utils.job_scheduler import scheduler
|
||||
from utils.template_helpers import register_template_helpers
|
||||
from utils.database_utils import backup_manager, database_monitor, maintenance_scheduler
|
||||
# Lokale Imports
|
||||
from models import init_database, create_initial_admin, User, Printer, Job, Stats, SystemLog, get_db_session, GuestRequest, UserPermission, Notification
|
||||
from utils.logging_config import setup_logging, get_logger
|
||||
from utils.printer_status import check_printer_status, check_multiple_printers_status
|
||||
from utils.decorators import measure_execution_time
|
||||
from utils.file_manager import FileManager
|
||||
from utils.job_scheduler import JobScheduler, get_job_scheduler
|
||||
from utils.queue_manager import start_queue_manager, stop_queue_manager, get_queue_manager
|
||||
from config.settings import SECRET_KEY, UPLOAD_FOLDER, ALLOWED_EXTENSIONS, ENVIRONMENT
|
||||
|
||||
# Blueprints importieren
|
||||
from blueprints.guest import guest_blueprint
|
||||
@@ -4067,6 +4050,45 @@ def mark_all_notifications_read():
|
||||
|
||||
# ===== ENDE BENACHRICHTIGUNGS-API-ENDPUNKTE =====
|
||||
|
||||
# ===== QUEUE-MANAGER-API-ENDPUNKTE =====
|
||||
|
||||
@app.route('/api/queue/status', methods=['GET'])
|
||||
@login_required
|
||||
def get_queue_status():
|
||||
"""Gibt den aktuellen Status der Drucker-Warteschlangen zurück."""
|
||||
try:
|
||||
queue_manager = get_queue_manager()
|
||||
status = queue_manager.get_queue_status()
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"queue_status": status
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler beim Abrufen des Queue-Status: {str(e)}")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": f"Fehler beim Abrufen des Queue-Status: {str(e)}"
|
||||
}), 500
|
||||
|
||||
@app.route('/api/queue/check-now', methods=['POST'])
|
||||
@login_required
|
||||
def trigger_queue_check():
|
||||
"""Triggert eine sofortige Überprüfung der Warteschlangen."""
|
||||
try:
|
||||
# Bestehende check_waiting_jobs API verwenden
|
||||
return check_waiting_jobs()
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler beim manuellen Queue-Check: {str(e)}")
|
||||
return jsonify({
|
||||
"success": False,
|
||||
"message": f"Fehler beim manuellen Queue-Check: {str(e)}"
|
||||
}), 500
|
||||
|
||||
# ===== ENDE QUEUE-MANAGER-API-ENDPUNKTE =====
|
||||
|
||||
# ===== STARTUP UND MAIN =====
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
@@ -4082,6 +4104,21 @@ if __name__ == "__main__":
|
||||
# Template-Hilfsfunktionen registrieren
|
||||
register_template_helpers(app)
|
||||
|
||||
# Queue-Manager für automatische Drucker-Überwachung starten
|
||||
try:
|
||||
queue_manager = start_queue_manager()
|
||||
app_logger.info("✅ Printer Queue Manager erfolgreich gestartet")
|
||||
|
||||
# Shutdown-Handler registrieren
|
||||
def cleanup_queue_manager():
|
||||
app_logger.info("🔄 Beende Queue Manager...")
|
||||
stop_queue_manager()
|
||||
|
||||
atexit.register(cleanup_queue_manager)
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"❌ Fehler beim Starten des Queue-Managers: {str(e)}")
|
||||
|
||||
# Scheduler starten (falls aktiviert)
|
||||
if SCHEDULER_ENABLED:
|
||||
try:
|
||||
|
Reference in New Issue
Block a user