🎉 Refactored backend structure: Removed unused files including app_cleaned.py, admin_api.py, admin.py, user.py, and others. Updated settings.local.json to include additional Bash commands. Enhanced admin templates for better navigation and functionality. Improved logging and error handling across various modules.

This commit is contained in:
2025-06-09 19:33:06 +02:00
parent 876b5a64e4
commit c7f9738bbe
115 changed files with 23507 additions and 9958 deletions

View File

@ -344,6 +344,17 @@ class User(UserMixin, Base):
phone = Column(String(50), nullable=True) # Telefonnummer
bio = Column(Text, nullable=True) # Kurze Beschreibung/Bio
# Benutzereinstellungen
theme_preference = Column(String(20), default="auto") # auto, light, dark
language_preference = Column(String(10), default="de") # de, en, etc.
email_notifications = Column(Boolean, default=True)
browser_notifications = Column(Boolean, default=True)
dashboard_layout = Column(String(20), default="default") # default, compact, detailed
compact_mode = Column(Boolean, default=False)
show_completed_jobs = Column(Boolean, default=True)
auto_refresh_interval = Column(Integer, default=30) # Sekunden
auto_logout_timeout = Column(Integer, default=0) # Minuten, 0 = deaktiviert
jobs = relationship("Job", back_populates="user", foreign_keys="Job.user_id", cascade="all, delete-orphan")
owned_jobs = relationship("Job", foreign_keys="Job.owner_id", overlaps="owner")
permissions = relationship("UserPermission", back_populates="user", uselist=False, cascade="all, delete-orphan")
@ -450,9 +461,65 @@ class User(UserMixin, Base):
Aktualisiert den letzten Login-Zeitstempel.
"""
self.last_login = datetime.now()
# Cache invalidieren
invalidate_model_cache("User", self.id)
def has_permission(self, permission_name: str) -> bool:
"""
Überprüft, ob der Benutzer eine bestimmte Berechtigung hat.
Args:
permission_name: Name der Berechtigung (z.B. 'CONTROL_PRINTER', 'START_JOBS', 'APPROVE_JOBS')
Returns:
bool: True wenn Berechtigung vorhanden, sonst False
"""
# Administratoren haben alle Berechtigungen
if self.is_admin:
return True
# Inaktive Benutzer haben keine Berechtigungen
if not self.is_active:
return False
# Spezifische Berechtigungen
if permission_name == 'ADMIN':
return self.is_admin
# Überprüfe spezifische Berechtigungen über UserPermission
if self.permissions:
if permission_name == 'CONTROL_PRINTER':
return self.permissions.can_start_jobs and not self.permissions.needs_approval
elif permission_name == 'START_JOBS':
return self.permissions.can_start_jobs
elif permission_name == 'APPROVE_JOBS':
return self.permissions.can_approve_jobs
elif permission_name == 'NEEDS_APPROVAL':
return self.permissions.needs_approval
# Fallback für unbekannte Berechtigungen - nur Administratoren erlaubt
return False
def get_permission_level(self) -> str:
"""
Gibt das Berechtigungslevel des Benutzers zurück.
Returns:
str: 'admin', 'advanced', 'standard', 'restricted'
"""
if self.is_admin:
return 'admin'
if not self.is_active:
return 'restricted'
if self.permissions:
if self.permissions.can_approve_jobs:
return 'advanced'
elif self.permissions.can_start_jobs and not self.permissions.needs_approval:
return 'standard'
return 'restricted'
class Printer(Base):
__tablename__ = "printers"