🎉 Improved log management system & added advanced settings 🚀
This commit is contained in:
@@ -4967,6 +4967,87 @@ def optimization_settings():
|
||||
finally:
|
||||
db_session.close()
|
||||
|
||||
@app.route('/admin/advanced-settings')
|
||||
@login_required
|
||||
@admin_required
|
||||
def admin_advanced_settings():
|
||||
"""Erweiterte Admin-Einstellungen - HTML-Seite"""
|
||||
try:
|
||||
app_logger.info(f"🔧 Erweiterte Einstellungen aufgerufen von Admin {current_user.username}")
|
||||
|
||||
db_session = get_db_session()
|
||||
|
||||
# Aktuelle Optimierungs-Einstellungen laden
|
||||
default_settings = {
|
||||
'algorithm': 'round_robin',
|
||||
'consider_distance': True,
|
||||
'minimize_changeover': True,
|
||||
'max_batch_size': 10,
|
||||
'time_window': 24,
|
||||
'auto_optimization_enabled': False
|
||||
}
|
||||
|
||||
user_settings = session.get('user_settings', {})
|
||||
optimization_settings = user_settings.get('optimization', default_settings)
|
||||
|
||||
# System-Statistiken sammeln
|
||||
stats = {
|
||||
'total_users': db_session.query(User).count(),
|
||||
'total_printers': db_session.query(Printer).count(),
|
||||
'active_printers': db_session.query(Printer).filter(Printer.active == True).count(),
|
||||
'total_jobs': db_session.query(Job).count(),
|
||||
'pending_jobs': db_session.query(Job).filter(Job.status.in_(['queued', 'pending'])).count(),
|
||||
'completed_jobs': db_session.query(Job).filter(Job.status == 'completed').count()
|
||||
}
|
||||
|
||||
# Wartungs-Informationen
|
||||
maintenance_info = {
|
||||
'last_backup': 'Nie',
|
||||
'last_optimization': 'Nie',
|
||||
'cache_size': '0 MB',
|
||||
'log_files_count': 0
|
||||
}
|
||||
|
||||
# Backup-Informationen laden
|
||||
try:
|
||||
backup_dir = os.path.join(app.root_path, 'database', 'backups')
|
||||
if os.path.exists(backup_dir):
|
||||
backup_files = [f for f in os.listdir(backup_dir) if f.startswith('myp_backup_') and f.endswith('.zip')]
|
||||
if backup_files:
|
||||
backup_files.sort(reverse=True)
|
||||
latest_backup = backup_files[0]
|
||||
backup_path = os.path.join(backup_dir, latest_backup)
|
||||
backup_time = datetime.fromtimestamp(os.path.getctime(backup_path))
|
||||
maintenance_info['last_backup'] = backup_time.strftime('%d.%m.%Y %H:%M')
|
||||
except Exception as e:
|
||||
app_logger.warning(f"Fehler beim Laden der Backup-Informationen: {str(e)}")
|
||||
|
||||
# Log-Dateien zählen
|
||||
try:
|
||||
logs_dir = os.path.join(app.root_path, 'logs')
|
||||
if os.path.exists(logs_dir):
|
||||
log_count = 0
|
||||
for root, dirs, files in os.walk(logs_dir):
|
||||
log_count += len([f for f in files if f.endswith('.log')])
|
||||
maintenance_info['log_files_count'] = log_count
|
||||
except Exception as e:
|
||||
app_logger.warning(f"Fehler beim Zählen der Log-Dateien: {str(e)}")
|
||||
|
||||
db_session.close()
|
||||
|
||||
return render_template(
|
||||
'admin_advanced_settings.html',
|
||||
title='Erweiterte Einstellungen',
|
||||
optimization_settings=optimization_settings,
|
||||
stats=stats,
|
||||
maintenance_info=maintenance_info
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"❌ Fehler beim Laden der erweiterten Einstellungen: {str(e)}")
|
||||
flash('Fehler beim Laden der erweiterten Einstellungen', 'error')
|
||||
return redirect(url_for('admin_page'))
|
||||
|
||||
# ===== OPTIMIERUNGS-ALGORITHMUS-FUNKTIONEN =====
|
||||
|
||||
def apply_round_robin_optimization(jobs, printers, db_session):
|
||||
|
Reference in New Issue
Block a user