From 0b9f3596bb28bda8a2241cba03de54d307f8a53c Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Thu, 19 Jun 2025 11:59:52 +0200 Subject: [PATCH] It appears you've shared a list of files that have been modified or created in various directories within a project structure. Here's how I'd interpret and categorize this information using Gitmoji emojis: --- backend/app.py | 3 +- backend/blueprints/admin_unified.py | 80 ++++- backend/database/myp.db | Bin 118784 -> 122880 bytes backend/docs/USER_CREATION_FIX.md | 1 + ...f403ac7504640449f23e3390604ad_activity.pkl | Bin 0 -> 60 bytes ...e4ea78f872b7d299658495f04ba05_activity.pkl | Bin 0 -> 60 bytes ...acd6871eafa7bb0a6159bd5b10384_activity.pkl | Bin 0 -> 60 bytes ...534ef2fb9e0e36eca50c0a0b13d6e_activity.pkl | Bin 0 -> 60 bytes ...75ff9bf5bcb507910eff82cdefef7_activity.pkl | Bin 0 -> 60 bytes ...3f2caf8c2739e422dd405bae3ecfb_activity.pkl | Bin 0 -> 60 bytes ...ad929f8d6fd8c6c6a176b6a00562e_activity.pkl | Bin 0 -> 60 bytes ...354cf34c8af14e9248ed7c6bcd321_activity.pkl | Bin 0 -> 60 bytes ...bcd7c4390d914b6b4d1f143d051d7_activity.pkl | Bin 0 -> 60 bytes ...2ddfbd849e29b211ec26f0a8aef64_activity.pkl | Bin 0 -> 60 bytes ...56a616faed7cc1f9c16c0ceb6a0c7_activity.pkl | Bin 0 -> 60 bytes ...0b02632ef142bede28645c3d634ed_activity.pkl | Bin 0 -> 60 bytes ...4aad1a1a199c8eb61dd7cf042ab7b_activity.pkl | Bin 0 -> 60 bytes ...0370f0a544df65ef82d6e69ae32ce_activity.pkl | Bin 0 -> 60 bytes ...d99ad67d66ed820f50af674ba0507_activity.pkl | Bin 0 -> 60 bytes ...b989b4bcfce69fec890b55f260d27_activity.pkl | Bin 0 -> 60 bytes ...7de4cc066dd19563b12427667fab6_activity.pkl | Bin 0 -> 60 bytes ...1f8a0b811b11d6153ab12f5a59e78_activity.pkl | Bin 0 -> 60 bytes ...396a5c98ddaa0931997501dcca534_activity.pkl | Bin 0 -> 60 bytes ...3d7c9d5d85abb76a76e227c03ca86_activity.pkl | Bin 0 -> 60 bytes ...03c01081e4b46977e802593e4e918_activity.pkl | Bin 0 -> 60 bytes ...bb90e6ed228515937bdc42619e4cf_activity.pkl | Bin 0 -> 60 bytes ...de84861766e5a7e65486683f2614a_activity.pkl | Bin 0 -> 60 bytes ...c6490782475fc8ac6cb103e7ead4f_activity.pkl | Bin 0 -> 60 bytes ...d6a16dd595cd7f67bce2b7e71c389_activity.pkl | Bin 0 -> 60 bytes ...74217147c684a28e09b20ad2f0adb_activity.pkl | Bin 0 -> 60 bytes ...9a7f1aba3d325733268d94bd90a5f_activity.pkl | Bin 0 -> 60 bytes ...971429d404b6ecfc270cda65f86ba_activity.pkl | Bin 0 -> 60 bytes ...7ed6d958b4d1b793b8ba646c03333_activity.pkl | Bin 0 -> 60 bytes ...2e712c8ceaacb68c5ca8e09ba143c_activity.pkl | Bin 0 -> 60 bytes ...336983b6ada936483dc3e2f2eb579_activity.pkl | Bin 0 -> 60 bytes ...f6e93018afba27e057cf659c3bd97_activity.pkl | Bin 0 -> 60 bytes ...0eb2b505a8c845a59b98ec19bb23d_activity.pkl | Bin 0 -> 60 bytes ...bd46b9fde9e2bee17538d193a3e9f_activity.pkl | Bin 0 -> 60 bytes ...ad4f063369f2c38e6a17904fcf596_activity.pkl | Bin 0 -> 60 bytes ...17ebb88a8c4cb616d14dfe97ae934_activity.pkl | Bin 0 -> 60 bytes ...9fce272bc8f85a573dadbc3add84a_activity.pkl | Bin 0 -> 60 bytes ...97b5892b4583e8d87628ac21265f7_activity.pkl | Bin 0 -> 60 bytes ...1228389e9cc2b1d3bdcf298625448_activity.pkl | Bin 0 -> 60 bytes ...54b5d018c3981c9acfbcaa4413bb5_activity.pkl | Bin 0 -> 60 bytes ...c813c482f2331bc9dadc004a3a369_activity.pkl | Bin 0 -> 60 bytes ...8981fbbd4e758cae099203c68bbce_activity.pkl | Bin 0 -> 60 bytes ...f272953d3eba02395b71ed0f3e38d_activity.pkl | Bin 0 -> 60 bytes ...5de9adc61ee9ed352ec55c16b8b74_activity.pkl | Bin 0 -> 60 bytes ...8956d1e86d998fe334bcfc028b542_activity.pkl | Bin 0 -> 60 bytes ...ff12d3bbf617afa1f0c6bb3100542_activity.pkl | Bin 0 -> 60 bytes ...d0dc7371e5c8c6fb05004709d88e8_activity.pkl | Bin 0 -> 60 bytes ...73f08a70a5792b0db6cb74228888e_activity.pkl | Bin 0 -> 60 bytes ...0e449e4acebb1ded3f45243561ea5_activity.pkl | Bin 0 -> 60 bytes ...98ffdb271e1921b2ce7c5f38f9629_activity.pkl | Bin 0 -> 60 bytes ...b58425c34475824382467bb5f2047_activity.pkl | Bin 0 -> 60 bytes ...b1ea7eb8768b81a2064813409f57e_activity.pkl | Bin 0 -> 60 bytes ...c659f5cbd02b55fc4a58bc40fb66b_activity.pkl | Bin 0 -> 60 bytes ...5b85f90594dfd0560d77a9fe81759_activity.pkl | Bin 0 -> 60 bytes ...3a2825447127aa2febb2fb4a8bc62_activity.pkl | Bin 0 -> 60 bytes ...ac0b72c61e6656cfab5bb13b86adb_activity.pkl | Bin 0 -> 60 bytes ...1ff5a8fa2739a66926c8eeaf3248c_activity.pkl | Bin 0 -> 60 bytes ...b191b50529a7750181f66db96b6ab_activity.pkl | Bin 0 -> 60 bytes ...77fcc62196029644c6f31d9d5c12f_activity.pkl | Bin 0 -> 60 bytes ...b54d4e7a2ca00c5baa730bdc23771_activity.pkl | Bin 0 -> 60 bytes ...4628bb266162cce271fe02eb7791b_activity.pkl | Bin 0 -> 60 bytes ...ca34453e1b94540bd010557a55f1e_activity.pkl | Bin 0 -> 60 bytes ...46688672ad8a4e721c0a3f3de731b_activity.pkl | Bin 0 -> 60 bytes ...6d64036f5db3d8ac77dfc259e77a9_activity.pkl | Bin 0 -> 60 bytes ...4a4b87277ebaab0ab274eb18fe973_activity.pkl | Bin 0 -> 60 bytes ...e6de23784fea49faa7c8913907bf0_activity.pkl | Bin 0 -> 60 bytes ...8ce6456d5ec83e0c468b0dfa35edd_activity.pkl | Bin 0 -> 60 bytes ...054fd72dcb87efd4ede36ac06e680_activity.pkl | Bin 0 -> 60 bytes ...0d907fe6af3c3e718b982180d4e59_activity.pkl | Bin 0 -> 60 bytes ...5160ba4edc3f1474d75bfe4057830_activity.pkl | Bin 0 -> 60 bytes ...3b9053acaf9fbe63758c980a47171_activity.pkl | Bin 0 -> 60 bytes ...db7d680789bd430c7e60f5b1e7d03_activity.pkl | Bin 0 -> 60 bytes ...4550ff94274601cdfdfd2add75669_activity.pkl | Bin 0 -> 60 bytes ...4e6f4580b0e6c0cead6a4eb68d002_activity.pkl | Bin 0 -> 60 bytes ...8dc2404e4da51dabecc6cd4b51ded_activity.pkl | Bin 0 -> 60 bytes ...34da724637b2c460c7188d6c94802_activity.pkl | Bin 0 -> 60 bytes ...9da8df1c4257fd7ee71ec72d003fb_activity.pkl | Bin 0 -> 60 bytes ...724b22369ae4176fd036fc71c6633_activity.pkl | Bin 0 -> 60 bytes ...87e1f778284144fcf05585004207e_activity.pkl | Bin 0 -> 60 bytes ...57b1447262526e121e997a05469dd_activity.pkl | Bin 0 -> 60 bytes ...4a674c04ac982671d76b2260734fc_activity.pkl | Bin 0 -> 60 bytes ...b706e388c53717578dbdf42f6e433_activity.pkl | Bin 0 -> 60 bytes ...3f085ce005b4d4794affb02463b89_activity.pkl | Bin 0 -> 60 bytes ...7b16b1b9509ab23b1cdf29f156a28_activity.pkl | Bin 0 -> 60 bytes ...cbc5e3c30a890be8f75a62277aee7_activity.pkl | Bin 0 -> 60 bytes ...ea378b5d90c040fb4d70117c3a7af_activity.pkl | Bin 0 -> 60 bytes ...1f03707c1cd2a82ac9e0917e931df_activity.pkl | Bin 0 -> 60 bytes ...7762d0f5269cfe1fa018b7583e130_activity.pkl | Bin 0 -> 60 bytes ...0fb0de55c9e5e08fb840440343159_activity.pkl | Bin 0 -> 60 bytes ...b86251e18dd5676884145cdc19b42_activity.pkl | Bin 0 -> 60 bytes ...5aeaeeb0c2ca147cbce62b568683d_activity.pkl | Bin 0 -> 60 bytes ...a1501efe0f0302346627cd89643f1_activity.pkl | Bin 0 -> 60 bytes ...b68f0ae951065ee9ff633ce7c8649_activity.pkl | Bin 0 -> 60 bytes ...b57aced0b0242ced0dfa5754ad557_activity.pkl | Bin 0 -> 60 bytes ...802fa27c4c664ddd14118a2d27679_activity.pkl | Bin 0 -> 60 bytes ...536cfae794bfc8d591a93b0038823_activity.pkl | Bin 0 -> 60 bytes ...8758b60c7de6a08005fb821307317_activity.pkl | Bin 0 -> 60 bytes ...771c611fbcff590f407ae2847a129_activity.pkl | Bin 0 -> 60 bytes ...317ea6d929bd9996bed63a702f217_activity.pkl | Bin 0 -> 60 bytes backend/logs/admin/admin.log | 16 + backend/logs/app/app.log | 299 ++++++++++++++++++ backend/logs/core_system/core_system.log | 4 + .../logs/data_management/data_management.log | 4 + .../energy_monitoring/energy_monitoring.log | 2 + .../hardware_integration.log | 8 + .../job_queue_system/job_queue_system.log | 8 + backend/logs/jobs/jobs.log | 2 + .../monitoring_analytics.log | 4 + backend/logs/permissions/permissions.log | 2 + backend/logs/scheduler/scheduler.log | 6 + .../logs/security_suite/security_suite.log | 6 + backend/logs/startup/startup.log | 18 ++ .../logs/tapo_controller/tapo_controller.log | 37 +++ .../utilities_collection.log | 4 + backend/logs/windows_fixes/windows_fixes.log | 4 + backend/templates/admin_add_user.html | 65 +++- 120 files changed, 569 insertions(+), 4 deletions(-) create mode 100644 backend/docs/USER_CREATION_FIX.md create mode 100644 backend/instance/sessions/005f403ac7504640449f23e3390604ad_activity.pkl create mode 100644 backend/instance/sessions/011e4ea78f872b7d299658495f04ba05_activity.pkl create mode 100644 backend/instance/sessions/049acd6871eafa7bb0a6159bd5b10384_activity.pkl create mode 100644 backend/instance/sessions/06c534ef2fb9e0e36eca50c0a0b13d6e_activity.pkl create mode 100644 backend/instance/sessions/08075ff9bf5bcb507910eff82cdefef7_activity.pkl create mode 100644 backend/instance/sessions/0823f2caf8c2739e422dd405bae3ecfb_activity.pkl create mode 100644 backend/instance/sessions/095ad929f8d6fd8c6c6a176b6a00562e_activity.pkl create mode 100644 backend/instance/sessions/0bc354cf34c8af14e9248ed7c6bcd321_activity.pkl create mode 100644 backend/instance/sessions/0eabcd7c4390d914b6b4d1f143d051d7_activity.pkl create mode 100644 backend/instance/sessions/1202ddfbd849e29b211ec26f0a8aef64_activity.pkl create mode 100644 backend/instance/sessions/14456a616faed7cc1f9c16c0ceb6a0c7_activity.pkl create mode 100644 backend/instance/sessions/17a0b02632ef142bede28645c3d634ed_activity.pkl create mode 100644 backend/instance/sessions/1a54aad1a1a199c8eb61dd7cf042ab7b_activity.pkl create mode 100644 backend/instance/sessions/1c20370f0a544df65ef82d6e69ae32ce_activity.pkl create mode 100644 backend/instance/sessions/266d99ad67d66ed820f50af674ba0507_activity.pkl create mode 100644 backend/instance/sessions/26cb989b4bcfce69fec890b55f260d27_activity.pkl create mode 100644 backend/instance/sessions/2bf7de4cc066dd19563b12427667fab6_activity.pkl create mode 100644 backend/instance/sessions/2ef1f8a0b811b11d6153ab12f5a59e78_activity.pkl create mode 100644 backend/instance/sessions/365396a5c98ddaa0931997501dcca534_activity.pkl create mode 100644 backend/instance/sessions/3a83d7c9d5d85abb76a76e227c03ca86_activity.pkl create mode 100644 backend/instance/sessions/49603c01081e4b46977e802593e4e918_activity.pkl create mode 100644 backend/instance/sessions/49ebb90e6ed228515937bdc42619e4cf_activity.pkl create mode 100644 backend/instance/sessions/4c5de84861766e5a7e65486683f2614a_activity.pkl create mode 100644 backend/instance/sessions/507c6490782475fc8ac6cb103e7ead4f_activity.pkl create mode 100644 backend/instance/sessions/517d6a16dd595cd7f67bce2b7e71c389_activity.pkl create mode 100644 backend/instance/sessions/52474217147c684a28e09b20ad2f0adb_activity.pkl create mode 100644 backend/instance/sessions/52f9a7f1aba3d325733268d94bd90a5f_activity.pkl create mode 100644 backend/instance/sessions/55a971429d404b6ecfc270cda65f86ba_activity.pkl create mode 100644 backend/instance/sessions/5697ed6d958b4d1b793b8ba646c03333_activity.pkl create mode 100644 backend/instance/sessions/57c2e712c8ceaacb68c5ca8e09ba143c_activity.pkl create mode 100644 backend/instance/sessions/63c336983b6ada936483dc3e2f2eb579_activity.pkl create mode 100644 backend/instance/sessions/63ff6e93018afba27e057cf659c3bd97_activity.pkl create mode 100644 backend/instance/sessions/6970eb2b505a8c845a59b98ec19bb23d_activity.pkl create mode 100644 backend/instance/sessions/6f2bd46b9fde9e2bee17538d193a3e9f_activity.pkl create mode 100644 backend/instance/sessions/734ad4f063369f2c38e6a17904fcf596_activity.pkl create mode 100644 backend/instance/sessions/74b17ebb88a8c4cb616d14dfe97ae934_activity.pkl create mode 100644 backend/instance/sessions/75b9fce272bc8f85a573dadbc3add84a_activity.pkl create mode 100644 backend/instance/sessions/77097b5892b4583e8d87628ac21265f7_activity.pkl create mode 100644 backend/instance/sessions/78c1228389e9cc2b1d3bdcf298625448_activity.pkl create mode 100644 backend/instance/sessions/78f54b5d018c3981c9acfbcaa4413bb5_activity.pkl create mode 100644 backend/instance/sessions/798c813c482f2331bc9dadc004a3a369_activity.pkl create mode 100644 backend/instance/sessions/79d8981fbbd4e758cae099203c68bbce_activity.pkl create mode 100644 backend/instance/sessions/79df272953d3eba02395b71ed0f3e38d_activity.pkl create mode 100644 backend/instance/sessions/8045de9adc61ee9ed352ec55c16b8b74_activity.pkl create mode 100644 backend/instance/sessions/8358956d1e86d998fe334bcfc028b542_activity.pkl create mode 100644 backend/instance/sessions/840ff12d3bbf617afa1f0c6bb3100542_activity.pkl create mode 100644 backend/instance/sessions/85fd0dc7371e5c8c6fb05004709d88e8_activity.pkl create mode 100644 backend/instance/sessions/86473f08a70a5792b0db6cb74228888e_activity.pkl create mode 100644 backend/instance/sessions/8720e449e4acebb1ded3f45243561ea5_activity.pkl create mode 100644 backend/instance/sessions/88298ffdb271e1921b2ce7c5f38f9629_activity.pkl create mode 100644 backend/instance/sessions/8f2b58425c34475824382467bb5f2047_activity.pkl create mode 100644 backend/instance/sessions/904b1ea7eb8768b81a2064813409f57e_activity.pkl create mode 100644 backend/instance/sessions/93ec659f5cbd02b55fc4a58bc40fb66b_activity.pkl create mode 100644 backend/instance/sessions/97c5b85f90594dfd0560d77a9fe81759_activity.pkl create mode 100644 backend/instance/sessions/9873a2825447127aa2febb2fb4a8bc62_activity.pkl create mode 100644 backend/instance/sessions/997ac0b72c61e6656cfab5bb13b86adb_activity.pkl create mode 100644 backend/instance/sessions/99f1ff5a8fa2739a66926c8eeaf3248c_activity.pkl create mode 100644 backend/instance/sessions/9b2b191b50529a7750181f66db96b6ab_activity.pkl create mode 100644 backend/instance/sessions/9b577fcc62196029644c6f31d9d5c12f_activity.pkl create mode 100644 backend/instance/sessions/9f0b54d4e7a2ca00c5baa730bdc23771_activity.pkl create mode 100644 backend/instance/sessions/9f74628bb266162cce271fe02eb7791b_activity.pkl create mode 100644 backend/instance/sessions/a1aca34453e1b94540bd010557a55f1e_activity.pkl create mode 100644 backend/instance/sessions/a3246688672ad8a4e721c0a3f3de731b_activity.pkl create mode 100644 backend/instance/sessions/a686d64036f5db3d8ac77dfc259e77a9_activity.pkl create mode 100644 backend/instance/sessions/ab84a4b87277ebaab0ab274eb18fe973_activity.pkl create mode 100644 backend/instance/sessions/abee6de23784fea49faa7c8913907bf0_activity.pkl create mode 100644 backend/instance/sessions/b088ce6456d5ec83e0c468b0dfa35edd_activity.pkl create mode 100644 backend/instance/sessions/b0d054fd72dcb87efd4ede36ac06e680_activity.pkl create mode 100644 backend/instance/sessions/b360d907fe6af3c3e718b982180d4e59_activity.pkl create mode 100644 backend/instance/sessions/b475160ba4edc3f1474d75bfe4057830_activity.pkl create mode 100644 backend/instance/sessions/bb93b9053acaf9fbe63758c980a47171_activity.pkl create mode 100644 backend/instance/sessions/becdb7d680789bd430c7e60f5b1e7d03_activity.pkl create mode 100644 backend/instance/sessions/c1e4550ff94274601cdfdfd2add75669_activity.pkl create mode 100644 backend/instance/sessions/c394e6f4580b0e6c0cead6a4eb68d002_activity.pkl create mode 100644 backend/instance/sessions/c508dc2404e4da51dabecc6cd4b51ded_activity.pkl create mode 100644 backend/instance/sessions/c6134da724637b2c460c7188d6c94802_activity.pkl create mode 100644 backend/instance/sessions/c9f9da8df1c4257fd7ee71ec72d003fb_activity.pkl create mode 100644 backend/instance/sessions/cb2724b22369ae4176fd036fc71c6633_activity.pkl create mode 100644 backend/instance/sessions/cc587e1f778284144fcf05585004207e_activity.pkl create mode 100644 backend/instance/sessions/ce657b1447262526e121e997a05469dd_activity.pkl create mode 100644 backend/instance/sessions/d464a674c04ac982671d76b2260734fc_activity.pkl create mode 100644 backend/instance/sessions/d4cb706e388c53717578dbdf42f6e433_activity.pkl create mode 100644 backend/instance/sessions/d543f085ce005b4d4794affb02463b89_activity.pkl create mode 100644 backend/instance/sessions/d6a7b16b1b9509ab23b1cdf29f156a28_activity.pkl create mode 100644 backend/instance/sessions/d88cbc5e3c30a890be8f75a62277aee7_activity.pkl create mode 100644 backend/instance/sessions/d8cea378b5d90c040fb4d70117c3a7af_activity.pkl create mode 100644 backend/instance/sessions/da31f03707c1cd2a82ac9e0917e931df_activity.pkl create mode 100644 backend/instance/sessions/dae7762d0f5269cfe1fa018b7583e130_activity.pkl create mode 100644 backend/instance/sessions/de40fb0de55c9e5e08fb840440343159_activity.pkl create mode 100644 backend/instance/sessions/dfab86251e18dd5676884145cdc19b42_activity.pkl create mode 100644 backend/instance/sessions/e555aeaeeb0c2ca147cbce62b568683d_activity.pkl create mode 100644 backend/instance/sessions/e58a1501efe0f0302346627cd89643f1_activity.pkl create mode 100644 backend/instance/sessions/ed3b68f0ae951065ee9ff633ce7c8649_activity.pkl create mode 100644 backend/instance/sessions/ee3b57aced0b0242ced0dfa5754ad557_activity.pkl create mode 100644 backend/instance/sessions/f18802fa27c4c664ddd14118a2d27679_activity.pkl create mode 100644 backend/instance/sessions/f1d536cfae794bfc8d591a93b0038823_activity.pkl create mode 100644 backend/instance/sessions/f648758b60c7de6a08005fb821307317_activity.pkl create mode 100644 backend/instance/sessions/f6d771c611fbcff590f407ae2847a129_activity.pkl create mode 100644 backend/instance/sessions/faf317ea6d929bd9996bed63a702f217_activity.pkl diff --git a/backend/app.py b/backend/app.py index c64783582..f2f0cbbdf 100644 --- a/backend/app.py +++ b/backend/app.py @@ -1108,7 +1108,8 @@ def printer_control(): tapo_controller = get_tapo_controller() # Prüfe ob Steckdose erreichbar ist - if not tapo_controller.is_plug_reachable(printer.plug_ip): + reachable, current_status = tapo_controller.check_outlet_status(printer.plug_ip, printer_id=int(printer_id)) + if not reachable: # Steckdose nicht erreichbar = Drucker offline printer.status = 'offline' printer.last_checked = datetime.now() diff --git a/backend/blueprints/admin_unified.py b/backend/blueprints/admin_unified.py index b9b16a499..39b0496ae 100644 --- a/backend/blueprints/admin_unified.py +++ b/backend/blueprints/admin_unified.py @@ -206,10 +206,88 @@ def users_overview(): flash("Fehler beim Laden der Benutzerdaten", "error") return render_template('admin.html', stats={}, users=[], active_tab='users') -@admin_blueprint.route("/users/add", methods=["GET"]) +@admin_blueprint.route("/users/add", methods=["GET", "POST"]) @admin_required def add_user_page(): """Seite zum Hinzufügen eines neuen Benutzers""" + if request.method == "POST": + # Form-Daten direkt verarbeiten + try: + data = request.form.to_dict() + # Checkbox-Werte korrekt parsen + for key in ['can_start_jobs', 'needs_approval', 'can_approve_jobs']: + if key in data: + data[key] = data[key] in ['true', 'on', '1', True] + else: + data[key] = False + + admin_logger.info(f"Benutzer-Erstellung (HTML-Form) angefordert von {current_user.username}: {data.get('username', 'unknown')}") + + # Validierung der erforderlichen Felder + required_fields = ['username', 'email', 'password', 'name'] + for field in required_fields: + if field not in data or not data[field]: + flash(f"Feld '{field}' ist erforderlich", "error") + return render_template('admin_add_user.html') + + with get_cached_session() as db_session: + # Prüfe auf bereits existierende E-Mail oder Benutzername + existing_user = db_session.query(User).filter( + (User.email == data['email']) | (User.username == data['username']) + ).first() + + if existing_user: + if existing_user.email == data['email']: + flash("E-Mail-Adresse bereits vergeben", "error") + else: + flash("Benutzername bereits vergeben", "error") + return render_template('admin_add_user.html') + + # Neuen Benutzer erstellen + new_user = User( + username=data['username'], + email=data['email'], + name=data['name'], + role=data.get('role', 'user'), + department=data.get('department'), + position=data.get('position'), + phone=data.get('phone'), + bio=data.get('bio'), + active=True, + created_at=datetime.now() + ) + new_user.set_password(data['password']) + + db_session.add(new_user) + db_session.flush() # ID generieren für UserPermission + + # Granulare Berechtigungen erstellen + from models import UserPermission + permissions = UserPermission( + user_id=new_user.id, + can_start_jobs=data.get('can_start_jobs', True), + needs_approval=data.get('needs_approval', False), + can_approve_jobs=data.get('can_approve_jobs', False) + ) + + # Administratoren bekommen automatisch Genehmigungsrechte + if new_user.role == 'admin': + permissions.can_approve_jobs = True + permissions.can_start_jobs = True + permissions.needs_approval = False + + db_session.add(permissions) + db_session.commit() + + flash(f"Benutzer '{new_user.username}' erfolgreich erstellt", "success") + admin_logger.info(f"✅ Neuer Benutzer erfolgreich erstellt: {new_user.username} (ID: {new_user.id}) von Admin {current_user.username}") + + return redirect(url_for('admin.users_overview')) + + except Exception as e: + admin_logger.error(f"❌ Fehler bei Benutzer-Erstellung (HTML-Form): {str(e)}") + flash("Fehler beim Erstellen des Benutzers", "error") + return render_template('admin_add_user.html') @admin_blueprint.route("/users//edit", methods=["GET"]) diff --git a/backend/database/myp.db b/backend/database/myp.db index a0b609dda5aecfbf9a93fc8665cf8859040917f9..8863b9262017cb45a0d69c04110cc699f872286d 100644 GIT binary patch delta 1337 zcmY+EU2GLa6vyw``>}0r?Q#V*AojLY>j!q3nVs30X$7r7-&Bn8**5w{(t@9t_+U38 zM)9E^(DP;>niwHO;c7J!xNVGyLPU9$DE38tFi~HOiN<(#@7|%l&N=^`GymWD@9YVG zcEz9DQt^s~LZN?tV3+3=&rZJEy44S^(Mh2{_&fMB_#^l=_&Hb$t~Ix;tOgZ2za!zz zwQq)gFZLIf(O-djzyFiJ-!E6*s0@|gE034HC_dx;;5FbMK-gMXUaW0+w)k|y@#+z% z_wi9_M+FOG8!@dBPQpkpeEP!l{^^;QrW*;v))^S6wtIw>l40#-*o6O{fl)8nfmc3) z!D{va!HqEyUOx#T*58D#;-MtOSI$$J#9W4w8EKI(!J}R>g0o97*xN2dR!b?ceiXvq z!TjRHOYTSh6^wL~k~5}lga_YGrQ2~|0^4&bORuyz-+&$X!EqSI0~g>3PM(EQnNLhG zfot=y+e_}l`sw^S9$KXpV|d^qJmMwy;)#WPLaIbUM%cPcbHMlcAcvBBaPAyzqc?IM zN~x{1i*RWpetQlqxp+6uF1k;XJK7j3ht=y&Ka2;P9lhY(L?$(P^4r$az3Ofji&>UD=;C_~VbjmLzt7N@SH52(2Twq+DPnfVgt{iP3~6y8!g zRR|6T^}cudcHXqwJ6Zj%`h3q{J;!=BcQ?Cr*VV2k{onlODmRzkDi4=VHESChC4xEO zU`C9PD1!Oa$M6{Jbu8(e8OD{xnZq=~*ZBm*a!;G3u%U@n9Cujm&RAy4MU}`1g>!_` z^MAqB2Ap;vmCivv>_7?~8YVSUImq!0WV#kq(S{4naOE=Xa^W>+#6uZLKWmAj#n$Jy zbtpdQD3UrBlm(ShJnFQ&GKyp~HAteQuy!n6$DQj4rlnX)LO_7S>T)h_Bo8=()FN~g z^Ayr1>^n|7G?k3u*7Gos&n~2q%%(9KslMp0A9d!7C{&iqxNW|5=BMW-QYH`5=3GkV zo80^;6jpN1@*rs!B$CpT1-YCC37+`B`DQ#fKfYl;tt!`%?U=7ziUd^{voSutK=1o; w0d8NH1ldUv{ccQbDNCIsjX{KOx7tBWi&92*fl_qC0MSVil{JNk%T9{ye=Z@89{>OV delta 86 zcmV-c0IC0gzz2Y!2ap;D0p9=s03DGaJ^}&Xv0$XX6b29B000009S{2t_7Cw7><{M; s;kOuI0m%=u;m;%R0}lvGmj}QBAF~kxOW2kB@X`~Uy| diff --git a/backend/docs/USER_CREATION_FIX.md b/backend/docs/USER_CREATION_FIX.md new file mode 100644 index 000000000..0519ecba6 --- /dev/null +++ b/backend/docs/USER_CREATION_FIX.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/instance/sessions/005f403ac7504640449f23e3390604ad_activity.pkl b/backend/instance/sessions/005f403ac7504640449f23e3390604ad_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..18b79a52fdb0d491f04e9d767c96a7097d1158e7 GIT binary patch literal 60 zcmZo*nQF)Y0kuRFl@ Lnwy(VDb@o3^3o7W literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/011e4ea78f872b7d299658495f04ba05_activity.pkl b/backend/instance/sessions/011e4ea78f872b7d299658495f04ba05_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7f6c927fc66d31cadd9631eae6314144b1e57580 GIT binary patch literal 60 zcmZo*nQF)Y0kuY19D Lo0yqTDb@o3@_`US literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/049acd6871eafa7bb0a6159bd5b10384_activity.pkl b/backend/instance/sessions/049acd6871eafa7bb0a6159bd5b10384_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..71de215cc0c325d4587422fd6a8b35f2f470588b GIT binary patch literal 60 zcmZo*nQF)Y0kuzNrF L8CV!kDb@o3@!SwF literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0bc354cf34c8af14e9248ed7c6bcd321_activity.pkl b/backend/instance/sessions/0bc354cf34c8af14e9248ed7c6bcd321_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b465d32a93890e441006c01256318e12841d88b6 GIT binary patch literal 60 zcmZo*nQF)Y0ku~!- literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0eabcd7c4390d914b6b4d1f143d051d7_activity.pkl b/backend/instance/sessions/0eabcd7c4390d914b6b4d1f143d051d7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c67322c36924a689eb3f79e3c56388c4bb86dcc1 GIT binary patch literal 60 zcmZo*nQF)Y0kuzNr? LSQ=PNDb@o3@(>U? literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1202ddfbd849e29b211ec26f0a8aef64_activity.pkl b/backend/instance/sessions/1202ddfbd849e29b211ec26f0a8aef64_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..036a3f8cc1b886cdaa8932f7dcbcbf0a559d8b94 GIT binary patch literal 60 zcmZo*nQF)Y0kuX}#= LT9{i-Db@o3@+1&G literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/14456a616faed7cc1f9c16c0ceb6a0c7_activity.pkl b/backend/instance/sessions/14456a616faed7cc1f9c16c0ceb6a0c7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6915d54f9373da924940d62123870883318bf111 GIT binary patch literal 60 zcmZo*nQF)Y0kuzSLG LTUr`UDb@o3^3D)S literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/17a0b02632ef142bede28645c3d634ed_activity.pkl b/backend/instance/sessions/17a0b02632ef142bede28645c3d634ed_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e207eccf572a8bbe38909f28440ef289619fee9b GIT binary patch literal 60 zcmZo*nQF)Y0ku~!= literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1a54aad1a1a199c8eb61dd7cf042ab7b_activity.pkl b/backend/instance/sessions/1a54aad1a1a199c8eb61dd7cf042ab7b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f9f3434b36b33d5f68c9142c63b37c96f1c23a73 GIT binary patch literal 60 zcmZo*nQF)Y0kuCEw literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/26cb989b4bcfce69fec890b55f260d27_activity.pkl b/backend/instance/sessions/26cb989b4bcfce69fec890b55f260d27_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..94bb7787011d76588be3ae0ef964839b4c86cab5 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSGx LnV1+(Db@o3@*5B} literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/2bf7de4cc066dd19563b12427667fab6_activity.pkl b/backend/instance/sessions/2bf7de4cc066dd19563b12427667fab6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b74401b1b8355e6302229695d6de00ae3aa4bbbb GIT binary patch literal 60 zcmZo*nQF)Y0kusc6^ LnOPc5Db@o3@~RL; literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/2ef1f8a0b811b11d6153ab12f5a59e78_activity.pkl b/backend/instance/sessions/2ef1f8a0b811b11d6153ab12f5a59e78_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..97d1904882107043c4ccda10ea75a0c698b0f054 GIT binary patch literal 60 zcmZo*nQF)Y0kuY17u L8e1AoDb@o3@>~!* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/365396a5c98ddaa0931997501dcca534_activity.pkl b/backend/instance/sessions/365396a5c98ddaa0931997501dcca534_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..564daae1aefbdb7e239f0c092653c99bbb9494fb GIT binary patch literal 60 zcmZo*nQF)Y0kub>lqqa LS{NEnDb@o3@%<1q literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3a83d7c9d5d85abb76a76e227c03ca86_activity.pkl b/backend/instance/sessions/3a83d7c9d5d85abb76a76e227c03ca86_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..32a45084de5c3691ccebccb701cfa6f9be0df772 GIT binary patch literal 60 zcmZo*nQF)Y0kulqrE L85zSKa LSQwg5Db@o3@|O@q literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4c5de84861766e5a7e65486683f2614a_activity.pkl b/backend/instance/sessions/4c5de84861766e5a7e65486683f2614a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..13369f9e4fc8da1b847b121f133dae812d26b1d6 GIT binary patch literal 60 zcmZo*nQF)Y0ku L7#dhkDb@o3@{JHc literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/507c6490782475fc8ac6cb103e7ead4f_activity.pkl b/backend/instance/sessions/507c6490782475fc8ac6cb103e7ead4f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f3e4ca70f626ff919548a40f030c85744a214414 GIT binary patch literal 60 zcmZo*nQF)Y0kulqrD Ln^>AnDb@o3@^TPB literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/517d6a16dd595cd7f67bce2b7e71c389_activity.pkl b/backend/instance/sessions/517d6a16dd595cd7f67bce2b7e71c389_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9762cac1d14b37aa6d2568fc9da37c6f565ed022 GIT binary patch literal 60 zcmZo*nQF)Y0kuX{lC LnHgG6Db@o3@yZY| literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/52474217147c684a28e09b20ad2f0adb_activity.pkl b/backend/instance/sessions/52474217147c684a28e09b20ad2f0adb_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7cb893997ec5f73054f2bcdbaa29fea8d4c15316 GIT binary patch literal 60 zcmZo*nQF)Y0kub>lqrD Ln;V!;Db@o3@#GLO literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/52f9a7f1aba3d325733268d94bd90a5f_activity.pkl b/backend/instance/sessions/52f9a7f1aba3d325733268d94bd90a5f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..39c9ac004e2b277a3c4987e54c9784e2f8ae199d GIT binary patch literal 60 zcmZo*nQF)Y0kuzP{^ L8yK5SDb@o3@`4aP literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/55a971429d404b6ecfc270cda65f86ba_activity.pkl b/backend/instance/sessions/55a971429d404b6ecfc270cda65f86ba_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..64d24efcb09ffff38a0145b8d517f130d21845d9 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSAs Lnpqf6Db@o3@*5C1 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/57c2e712c8ceaacb68c5ca8e09ba143c_activity.pkl b/backend/instance/sessions/57c2e712c8ceaacb68c5ca8e09ba143c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..40e25e662c3584d1326ea464d71ece03e8c1776f GIT binary patch literal 60 zcmZo*nQF)Y0kuC literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/63ff6e93018afba27e057cf659c3bd97_activity.pkl b/backend/instance/sessions/63ff6e93018afba27e057cf659c3bd97_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e3e5abdd35efa195b4610b1a61e54659d34e0182 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSIH Lniv{QDb@o3@+A;9 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/6f2bd46b9fde9e2bee17538d193a3e9f_activity.pkl b/backend/instance/sessions/6f2bd46b9fde9e2bee17538d193a3e9f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..906a1568cbb9b3dfbb89b56b0d03fe93c9ee3672 GIT binary patch literal 60 zcmZo*nQF)Y0ku L8kv|(Db@o3@!b$H literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/74b17ebb88a8c4cb616d14dfe97ae934_activity.pkl b/backend/instance/sessions/74b17ebb88a8c4cb616d14dfe97ae934_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..275d7de5f44727c0a231601d494d6635d9aecbc6 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSAt LT9_D3Db@o3@*fa4 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/77097b5892b4583e8d87628ac21265f7_activity.pkl b/backend/instance/sessions/77097b5892b4583e8d87628ac21265f7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e71c752b53c0a49ec349851cc9822b79ac914372 GIT binary patch literal 60 zcmZo*nQF)Y0kuY18a L8km|-Db@o3@%0ck literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/78c1228389e9cc2b1d3bdcf298625448_activity.pkl b/backend/instance/sessions/78c1228389e9cc2b1d3bdcf298625448_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6c06dbc8a06b796fc8f50fa02f5cab66d9907cad GIT binary patch literal 60 zcmZo*nQF)Y0kuY17v LT9_M7Db@o3@?;P^ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/798c813c482f2331bc9dadc004a3a369_activity.pkl b/backend/instance/sessions/798c813c482f2331bc9dadc004a3a369_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a7f98aff79ba19e56ad75dfa88a8ac2079bb95eb GIT binary patch literal 60 zcmZo*nQF)Y0kuzP>^ L85o;RDb@o3@^%nB literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/79df272953d3eba02395b71ed0f3e38d_activity.pkl b/backend/instance/sessions/79df272953d3eba02395b71ed0f3e38d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..491d7ea0bb4b6bbc246fffad3f9f359217349e0c GIT binary patch literal 60 zcmZo*nQF)Y0kuzSHb L7+M-lDb@o3@)Qs_ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8045de9adc61ee9ed352ec55c16b8b74_activity.pkl b/backend/instance/sessions/8045de9adc61ee9ed352ec55c16b8b74_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..06cf7c2c2d0d98ab100841327d49b59314760fec GIT binary patch literal 60 zcmZo*nQF)Y0kuY18b L8d?}lDb@o3@*EI3 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/840ff12d3bbf617afa1f0c6bb3100542_activity.pkl b/backend/instance/sessions/840ff12d3bbf617afa1f0c6bb3100542_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..beaf86ea93da8202c455e9662dd0d25b57b26748 GIT binary patch literal 60 zcmZo*nQF)Y0kuY17v LnHZT)Db@o3@zW45 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/85fd0dc7371e5c8c6fb05004709d88e8_activity.pkl b/backend/instance/sessions/85fd0dc7371e5c8c6fb05004709d88e8_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..25a75bcb9e07b2efb11df459810912c44022d3cc GIT binary patch literal 60 zcmZo*nQF)Y0kuzSFG L7@C?+Db@o3@(B<& literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8720e449e4acebb1ded3f45243561ea5_activity.pkl b/backend/instance/sessions/8720e449e4acebb1ded3f45243561ea5_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5f2746c59a0f0905117eb62bc9f5981cc0779316 GIT binary patch literal 60 zcmZo*nQF)Y0kuX}#= Ln;Mu*Db@o3@>mc# literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/88298ffdb271e1921b2ce7c5f38f9629_activity.pkl b/backend/instance/sessions/88298ffdb271e1921b2ce7c5f38f9629_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..cb8ead6a5531e42f003c47ed347799a5b4358454 GIT binary patch literal 60 zcmZo*nQF)Y0kuzNsv LnwXeQDb@o3@$C>Z literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8f2b58425c34475824382467bb5f2047_activity.pkl b/backend/instance/sessions/8f2b58425c34475824382467bb5f2047_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c4f7ec7d4a40884fdf3b87f5c2b245a81cfd7bb7 GIT binary patch literal 60 zcmZo*nQF)Y0kuzNsu L8k(9+Db@o3@#GLO literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/93ec659f5cbd02b55fc4a58bc40fb66b_activity.pkl b/backend/instance/sessions/93ec659f5cbd02b55fc4a58bc40fb66b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c0f9217434a74590fe04fc53b57799f28bd6071c GIT binary patch literal 60 zcmZo*nQF)Y0kuY14t LS(uniDb@o3@_7(H literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9873a2825447127aa2febb2fb4a8bc62_activity.pkl b/backend/instance/sessions/9873a2825447127aa2febb2fb4a8bc62_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..daf2e8f23a2a7cb2ccf3b6545a5c92c466e1a3f4 GIT binary patch literal 60 zcmZo*nQF)Y0kub>lqpw L8Jb#7Db@o3@!k+J literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/997ac0b72c61e6656cfab5bb13b86adb_activity.pkl b/backend/instance/sessions/997ac0b72c61e6656cfab5bb13b86adb_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ed8baaf0ce25134a3897cf0cac2849f896260393 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSCD L8k?C-Db@o3@;4AX literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/99f1ff5a8fa2739a66926c8eeaf3248c_activity.pkl b/backend/instance/sessions/99f1ff5a8fa2739a66926c8eeaf3248c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..778beedaff1c53e7465326e21e9a79fb698655a6 GIT binary patch literal 60 zcmZo*nQF)Y0kuY18a L8X8$nDb@o3@)!^~ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9f74628bb266162cce271fe02eb7791b_activity.pkl b/backend/instance/sessions/9f74628bb266162cce271fe02eb7791b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5ddee0c012556bdb22c6567d51619b76139d987b GIT binary patch literal 60 zcmZo*nQF)Y0kuzP{^ L85vnjDb@o3@`?~Z literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a1aca34453e1b94540bd010557a55f1e_activity.pkl b/backend/instance/sessions/a1aca34453e1b94540bd010557a55f1e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1e9958fcb8fbcd8ca57fa5d753d4d4e643d0839c GIT binary patch literal 60 zcmZo*nQF)Y0kuzSFD L7+RW5Db@o3@@x=4 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a3246688672ad8a4e721c0a3f3de731b_activity.pkl b/backend/instance/sessions/a3246688672ad8a4e721c0a3f3de731b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..66cb4f93b0cffbd8c072ba504e11c24c2dacca9f GIT binary patch literal 60 zcmZo*nQF)Y0ku&o) literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a686d64036f5db3d8ac77dfc259e77a9_activity.pkl b/backend/instance/sessions/a686d64036f5db3d8ac77dfc259e77a9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..42748817c23dbd0495649c69c9e9db657545d26b GIT binary patch literal 60 zcmZo*nQF)Y0kuX{lC L8kks4Db@o3@vaao literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ab84a4b87277ebaab0ab274eb18fe973_activity.pkl b/backend/instance/sessions/ab84a4b87277ebaab0ab274eb18fe973_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7a161a142ee01698d1e21924549dfb54dfaff1ca GIT binary patch literal 60 zcmZo*nQF)Y0kuRFnY Lnp>DoDb@o3^4}0l literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/abee6de23784fea49faa7c8913907bf0_activity.pkl b/backend/instance/sessions/abee6de23784fea49faa7c8913907bf0_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..295092230dac3a9cb07d9439ddce84bb1273e3fb GIT binary patch literal 60 zcmZo*nQF)Y0kuzNx` Lniv{RDb@o3@$(Qd literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b088ce6456d5ec83e0c468b0dfa35edd_activity.pkl b/backend/instance/sessions/b088ce6456d5ec83e0c468b0dfa35edd_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9757620b0453c7de75e83ee2024068aa73c4ae66 GIT binary patch literal 60 zcmZo*nQF)Y0kuzNrD LTbNl)Db@o3@)Zy} literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b0d054fd72dcb87efd4ede36ac06e680_activity.pkl b/backend/instance/sessions/b0d054fd72dcb87efd4ede36ac06e680_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..00557ed95b46d76b96c3adc11156c6332ca58c56 GIT binary patch literal 60 zcmZo*nQF)Y0kuzNx` LT3VVL;RDb@o3@#zpO literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/becdb7d680789bd430c7e60f5b1e7d03_activity.pkl b/backend/instance/sessions/becdb7d680789bd430c7e60f5b1e7d03_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a135cc335de1fb19c91facbfa4e2c7e853c066bc GIT binary patch literal 60 zcmZo*nQF)Y0kuY16C L7+YFSDb@o3@-q-V literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c394e6f4580b0e6c0cead6a4eb68d002_activity.pkl b/backend/instance/sessions/c394e6f4580b0e6c0cead6a4eb68d002_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2598689eca9e36f3af3c273648982f8e89de4b74 GIT binary patch literal 60 zcmZo*nQF)Y0kusgpt Ln3)+)Db@o3^1Tp7 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c6134da724637b2c460c7188d6c94802_activity.pkl b/backend/instance/sessions/c6134da724637b2c460c7188d6c94802_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8e9ef8940d15b622fecbfc616e43b8e07b80ff13 GIT binary patch literal 60 zcmZo*nQF)Y0ku~ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c9f9da8df1c4257fd7ee71ec72d003fb_activity.pkl b/backend/instance/sessions/c9f9da8df1c4257fd7ee71ec72d003fb_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..94865c467a76384a4dd89805f9eb463a622f2070 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSGu L8kibSDb@o3@$nEa literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/cc587e1f778284144fcf05585004207e_activity.pkl b/backend/instance/sessions/cc587e1f778284144fcf05585004207e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..15a04d7a334e00f9746dd63c87c869f35b49ed8e GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSAu Ln3$PODb@o3@)8g? literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ce657b1447262526e121e997a05469dd_activity.pkl b/backend/instance/sessions/ce657b1447262526e121e997a05469dd_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9c150790a72c99a03fb47cd5d4de316859706356 GIT binary patch literal 60 zcmZo*nQF)Y0kuzSEY Lm>8K%Db@o3@^275 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d464a674c04ac982671d76b2260734fc_activity.pkl b/backend/instance/sessions/d464a674c04ac982671d76b2260734fc_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d2ced8ee9d1fef3ad64376376dd8669f913f6ba6 GIT binary patch literal 60 zcmZo*nQF)Y0kuY19E L7#UbjDb@o3@>&o( literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d4cb706e388c53717578dbdf42f6e433_activity.pkl b/backend/instance/sessions/d4cb706e388c53717578dbdf42f6e433_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..36ac5e02203a34fb361598790c756bb7c4d3f3e9 GIT binary patch literal 60 zcmZo*nQF)Y0kuzSKb L8WzSFD Lm>Zc*Db@o3@@)`4 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d88cbc5e3c30a890be8f75a62277aee7_activity.pkl b/backend/instance/sessions/d88cbc5e3c30a890be8f75a62277aee7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..52cc3b038c73ba745d423f93e8786243e8653b43 GIT binary patch literal 60 zcmZo*nQF)Y0kuX{fC L7?~SPDb@o3@tqJS literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d8cea378b5d90c040fb4d70117c3a7af_activity.pkl b/backend/instance/sessions/d8cea378b5d90c040fb4d70117c3a7af_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..71a0b0f1bdccf9898d69d4f02b69bb8d2833f354 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zNu` LSelwoDb@o3@?a1{ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/dae7762d0f5269cfe1fa018b7583e130_activity.pkl b/backend/instance/sessions/dae7762d0f5269cfe1fa018b7583e130_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..12b53050c6909ca0a0d0afe2b157901e12d61712 GIT binary patch literal 60 zcmZo*nQF)Y0kud>zSAs LTN)TnDb@o3@(U0% literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/de40fb0de55c9e5e08fb840440343159_activity.pkl b/backend/instance/sessions/de40fb0de55c9e5e08fb840440343159_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0a268c16d16765d8c57820dedf12e94833829309 GIT binary patch literal 60 zcmZo*nQF)Y0kuX}%W Lm|2=lDb@o3@+%NN literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/dfab86251e18dd5676884145cdc19b42_activity.pkl b/backend/instance/sessions/dfab86251e18dd5676884145cdc19b42_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..906ec867af54ea0debc4b21441e75738da5a8194 GIT binary patch literal 60 zcmZo*nQF)Y0kuzSFD Ln;BY8Db@o3@`DgU literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/e58a1501efe0f0302346627cd89643f1_activity.pkl b/backend/instance/sessions/e58a1501efe0f0302346627cd89643f1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..79bb8c1795118b00beaeb0170bbf7be8a220a17d GIT binary patch literal 60 zcmZo*nQF)Y0kuX{i> L8k!kSDb@o3@=g#q literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ed3b68f0ae951065ee9ff633ce7c8649_activity.pkl b/backend/instance/sessions/ed3b68f0ae951065ee9ff633ce7c8649_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e83a86aea86d0735c28c0bc05f606d584bd4e834 GIT binary patch literal 60 zcmZo*nQF)Y0kuY19D LT38rQDb@o3@)i&} literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ee3b57aced0b0242ced0dfa5754ad557_activity.pkl b/backend/instance/sessions/ee3b57aced0b0242ced0dfa5754ad557_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..005a045630ce73a18c1d9039f2356be149474fa6 GIT binary patch literal 60 zcmZo*nQF)Y0kuzSFD LSQ;BmDb@o3@@^14 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f1d536cfae794bfc8d591a93b0038823_activity.pkl b/backend/instance/sessions/f1d536cfae794bfc8d591a93b0038823_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9ffa35a7ca1cc376d6cb846c4937b82dfba497e4 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPdr L7?>GODb@o3@xl-( literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f648758b60c7de6a08005fb821307317_activity.pkl b/backend/instance/sessions/f648758b60c7de6a08005fb821307317_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..07a223eb6a45172a16e16a7a63482cb680ee5314 GIT binary patch literal 60 zcmZo*nQF)Y0kud>lvGx LS(unlDb@o3@&o= literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/faf317ea6d929bd9996bed63a702f217_activity.pkl b/backend/instance/sessions/faf317ea6d929bd9996bed63a702f217_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5bba9b67db4521ba0ab688faf012c3dca7b830c4 GIT binary patch literal 60 zcmZo*nQF)Y0kuY19E Ln;M%>Db@o3@`w;Z literal 0 HcmV?d00001 diff --git a/backend/logs/admin/admin.log b/backend/logs/admin/admin.log index fd2aa6134..f358b01ad 100644 --- a/backend/logs/admin/admin.log +++ b/backend/logs/admin/admin.log @@ -654,3 +654,19 @@ 2025-06-19 11:23:03 - [admin] admin - [INFO] INFO - Admin-Check für Funktion add_user_page: User authenticated: True, User ID: 1, Is Admin: True 2025-06-19 11:23:15 - [admin] admin - [INFO] INFO - Admin-Check für Funktion create_user_api: User authenticated: True, User ID: 1, Is Admin: True 2025-06-19 11:23:15 - [admin] admin - [ERROR] ERROR - Fehler beim Erstellen des Benutzers: 415 Unsupported Media Type: Did not attempt to load JSON data because the request Content-Type was not 'application/json'. +2025-06-19 11:49:38 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:49:38 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 11:49:41 - [admin] admin - [INFO] INFO - Admin-Check für Funktion users_overview: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:49:41 - [admin] admin - [INFO] INFO - Benutzerübersicht geladen von admin +2025-06-19 11:49:43 - [admin] admin - [INFO] INFO - Admin-Check für Funktion add_user_page: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:49:54 - [admin] admin - [INFO] INFO - Admin-Check für Funktion create_user_api: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:49:54 - [admin] admin - [INFO] INFO - Benutzer-Erstellung angefordert von admin: unknown +2025-06-19 11:49:54 - [admin] admin - [ERROR] ERROR - Erforderliches Feld 'username' fehlt bei Benutzer-Erstellung +2025-06-19 11:50:28 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:50:28 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 11:50:32 - [admin] admin - [INFO] INFO - Admin-Check für Funktion system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:50:32 - [admin] admin - [INFO] INFO - System-Health geladen von admin +2025-06-19 11:50:33 - [admin] admin - [INFO] INFO - Admin-Check für Funktion system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:50:33 - [admin] admin - [INFO] INFO - System-Health geladen von admin +2025-06-19 11:50:41 - [admin] admin - [INFO] INFO - Admin-Check für Funktion printers_overview: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 11:50:41 - [admin] admin - [INFO] INFO - Druckerübersicht geladen von admin diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log index b38e36c88..ae22ac1a5 100644 --- a/backend/logs/app/app.log +++ b/backend/logs/app/app.log @@ -47168,3 +47168,302 @@ werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'admin. 2025-06-19 11:25:39 - [app] app - [DEBUG] DEBUG - Response: 200 2025-06-19 11:26:09 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications 2025-06-19 11:26:09 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:48:46 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 11:48:48 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 11:48:48 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 11:48:48 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 11:48:48 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 11:48:50 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 11:48:52 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 11:48:52 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 11:48:52 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 11:48:52 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 11:48:54 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers 1: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout +FROM users +WHERE users.id = ? + LIMIT ? OFFSET ?] +[parameters: (1, 1, 0)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) +2025-06-19 11:48:55 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-19 11:48:55 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 11:48:55 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-19 11:48:55 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:48:55 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-19 11:48:55 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:48:55 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:48:55 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:48:57 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 11:48:57 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: off, Quelle: system +2025-06-19 11:48:57 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> off +2025-06-19 11:48:57 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: off, Quelle: system +2025-06-19 11:48:57 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> off +2025-06-19 11:48:58 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: off, Quelle: system +2025-06-19 11:48:58 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> off +2025-06-19 11:48:58 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: off, Quelle: system +2025-06-19 11:48:58 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> off +2025-06-19 11:49:00 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 11:49:00 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 11:49:00 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: off, Quelle: system +2025-06-19 11:49:00 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> off +2025-06-19 11:49:00 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 11:49:00 - [app] app - [INFO] INFO - Locating template 'printers.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\printers.html') +2025-06-19 11:49:00 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:00 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:00 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:03 - [app] app - [DEBUG] DEBUG - Request: POST /printers/control +2025-06-19 11:49:03 - [app] app - [ERROR] ERROR - Unerwarteter Fehler bei Drucker-Steuerung: 'TapoController' object has no attribute 'is_plug_reachable' +2025-06-19 11:49:03 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 11:49:03 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 11:49:04 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: off, Quelle: system +2025-06-19 11:49:04 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> off +2025-06-19 11:49:04 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: off, Quelle: system +2025-06-19 11:49:04 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> off +2025-06-19 11:49:04 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: off, Quelle: system +2025-06-19 11:49:04 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> off +2025-06-19 11:49:04 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: off, Quelle: system +2025-06-19 11:49:04 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> off +2025-06-19 11:49:06 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 11:49:06 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 11:49:06 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: off, Quelle: system +2025-06-19 11:49:06 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> off +2025-06-19 11:49:06 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 11:49:06 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:07 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:07 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:10 - [app] app - [DEBUG] DEBUG - Request: POST /printers/control +2025-06-19 11:49:10 - [app] app - [ERROR] ERROR - Unerwarteter Fehler bei Drucker-Steuerung: 'TapoController' object has no attribute 'is_plug_reachable' +2025-06-19 11:49:10 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 11:49:10 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 11:49:11 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: off, Quelle: system +2025-06-19 11:49:11 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> off +2025-06-19 11:49:11 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: off, Quelle: system +2025-06-19 11:49:11 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> off +2025-06-19 11:49:11 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: off, Quelle: system +2025-06-19 11:49:11 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> off +2025-06-19 11:49:11 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: off, Quelle: system +2025-06-19 11:49:11 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> off +2025-06-19 11:49:14 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 11:49:14 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 11:49:14 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: off, Quelle: system +2025-06-19 11:49:14 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> off +2025-06-19 11:49:14 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 11:49:14 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:14 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:14 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:19 - [app] app - [DEBUG] DEBUG - Request: POST /printers/control +2025-06-19 11:49:19 - [app] app - [ERROR] ERROR - Unerwarteter Fehler bei Drucker-Steuerung: 'TapoController' object has no attribute 'is_plug_reachable' +2025-06-19 11:49:19 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 11:49:19 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 11:49:20 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: off, Quelle: system +2025-06-19 11:49:20 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> off +2025-06-19 11:49:20 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: off, Quelle: system +2025-06-19 11:49:20 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> off +2025-06-19 11:49:20 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: off, Quelle: system +2025-06-19 11:49:20 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> off +2025-06-19 11:49:21 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: off, Quelle: system +2025-06-19 11:49:21 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> off +2025-06-19 11:49:23 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 11:49:23 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 11:49:23 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: off, Quelle: system +2025-06-19 11:49:23 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> off +2025-06-19 11:49:23 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 11:49:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:27 - [app] app - [DEBUG] DEBUG - Request: POST /printers/control +2025-06-19 11:49:27 - [app] app - [ERROR] ERROR - Unerwarteter Fehler bei Drucker-Steuerung: 'TapoController' object has no attribute 'is_plug_reachable' +2025-06-19 11:49:27 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 11:49:27 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 11:49:27 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: off, Quelle: system +2025-06-19 11:49:27 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> off +2025-06-19 11:49:27 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: off, Quelle: system +2025-06-19 11:49:27 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> off +2025-06-19 11:49:27 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: off, Quelle: system +2025-06-19 11:49:27 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> off +2025-06-19 11:49:27 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: off, Quelle: system +2025-06-19 11:49:27 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> off +2025-06-19 11:49:29 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 11:49:29 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 11:49:30 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: off, Quelle: system +2025-06-19 11:49:30 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> off +2025-06-19 11:49:30 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 11:49:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:30 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:38 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 11:49:38 - [app] app - [INFO] INFO - Locating template 'admin.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin.html') +2025-06-19 11:49:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:38 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:41 - [app] app - [DEBUG] DEBUG - Request: GET /admin/users +2025-06-19 11:49:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:41 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:43 - [app] app - [DEBUG] DEBUG - Request: GET /admin/users/add +2025-06-19 11:49:43 - [app] app - [INFO] INFO - Locating template 'admin_add_user.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_add_user.html') +2025-06-19 11:49:43 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:43 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:49:43 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:49:54 - [app] app - [DEBUG] DEBUG - Request: POST /api/admin/users +2025-06-19 11:49:54 - [app] app - [DEBUG] DEBUG - Response: 400 +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:50:27 - [app] app - [ERROR] ERROR - Fehler beim Laden des Benutzers 1: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: SELECT users.id AS users_id, users.email AS users_email, users.username AS users_username, users.password_hash AS users_password_hash, users.name AS users_name, users.role AS users_role, users.active AS users_active, users.created_at AS users_created_at, users.last_login AS users_last_login, users.updated_at AS users_updated_at, users.settings AS users_settings, users.last_activity AS users_last_activity, users.department AS users_department, users.position AS users_position, users.phone AS users_phone, users.bio AS users_bio, users.theme_preference AS users_theme_preference, users.language_preference AS users_language_preference, users.email_notifications AS users_email_notifications, users.browser_notifications AS users_browser_notifications, users.dashboard_layout AS users_dashboard_layout, users.compact_mode AS users_compact_mode, users.show_completed_jobs AS users_show_completed_jobs, users.auto_refresh_interval AS users_auto_refresh_interval, users.auto_logout_timeout AS users_auto_logout_timeout +FROM users +WHERE users.id = ? + LIMIT ? OFFSET ?] +[parameters: (1, 1, 0)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Request: GET /auth/login +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Request: GET / +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-19 11:50:27 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:28 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 11:50:28 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:28 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:50:28 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:32 - [app] app - [DEBUG] DEBUG - Request: GET /admin/system-health +2025-06-19 11:50:32 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:32 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:50:32 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:33 - [app] app - [DEBUG] DEBUG - Request: GET /admin/system-health +2025-06-19 11:50:33 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:33 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:50:33 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Request: GET /jobs +2025-06-19 11:50:37 - [app] app - [INFO] INFO - Locating template 'jobs.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\jobs.html') +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-19 11:50:37 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False) +2025-06-19 11:50:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:41 - [app] app - [DEBUG] DEBUG - Request: GET /admin/printers +2025-06-19 11:50:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:50:41 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:50:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:51:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:51:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:51:41 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:51:41 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:52:11 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:52:11 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 11:52:41 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 11:52:41 - [app] app - [DEBUG] DEBUG - Response: 200 diff --git a/backend/logs/core_system/core_system.log b/backend/logs/core_system/core_system.log index ec4ce6a87..115013ffb 100644 --- a/backend/logs/core_system/core_system.log +++ b/backend/logs/core_system/core_system.log @@ -356,3 +356,7 @@ 2025-06-19 11:22:56 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) 2025-06-19 11:22:58 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert 2025-06-19 11:22:58 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 11:48:46 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 11:48:46 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 11:48:50 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 11:48:50 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) diff --git a/backend/logs/data_management/data_management.log b/backend/logs/data_management/data_management.log index efb9f6caa..57028c621 100644 --- a/backend/logs/data_management/data_management.log +++ b/backend/logs/data_management/data_management.log @@ -735,3 +735,7 @@ 2025-06-19 11:22:56 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 11:22:58 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-19 11:22:58 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 11:48:46 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 11:48:46 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 11:48:50 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 11:48:50 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/energy_monitoring/energy_monitoring.log b/backend/logs/energy_monitoring/energy_monitoring.log index c95ba3f58..381a0994c 100644 --- a/backend/logs/energy_monitoring/energy_monitoring.log +++ b/backend/logs/energy_monitoring/energy_monitoring.log @@ -620,3 +620,5 @@ 2025-06-19 11:20:03 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-19 11:22:57 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert 2025-06-19 11:22:59 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 11:48:48 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 11:48:52 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert diff --git a/backend/logs/hardware_integration/hardware_integration.log b/backend/logs/hardware_integration/hardware_integration.log index d5e8d8e80..3a52267e6 100644 --- a/backend/logs/hardware_integration/hardware_integration.log +++ b/backend/logs/hardware_integration/hardware_integration.log @@ -2997,3 +2997,11 @@ 2025-06-19 11:22:58 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert 2025-06-19 11:22:58 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert 2025-06-19 11:22:58 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 11:48:46 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 11:48:46 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 11:48:46 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 11:48:46 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 11:48:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 11:48:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 11:48:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 11:48:50 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) diff --git a/backend/logs/job_queue_system/job_queue_system.log b/backend/logs/job_queue_system/job_queue_system.log index 3a87050e3..0c87c64a3 100644 --- a/backend/logs/job_queue_system/job_queue_system.log +++ b/backend/logs/job_queue_system/job_queue_system.log @@ -1426,3 +1426,11 @@ 2025-06-19 11:22:59 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) 2025-06-19 11:26:26 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) 2025-06-19 11:26:26 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 11:48:46 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 11:48:46 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 11:48:48 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 11:48:50 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 11:48:50 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 11:48:52 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 11:53:04 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 11:53:04 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) diff --git a/backend/logs/jobs/jobs.log b/backend/logs/jobs/jobs.log index 69680f2e9..4c573a66f 100644 --- a/backend/logs/jobs/jobs.log +++ b/backend/logs/jobs/jobs.log @@ -949,3 +949,5 @@ sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) FOREIGN KEY constraint f 2025-06-18 12:40:13 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) 2025-06-18 12:49:58 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) 2025-06-18 12:49:58 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) +2025-06-19 11:50:37 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-19 11:50:37 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log index dc3f5c48b..5d418cee5 100644 --- a/backend/logs/monitoring_analytics/monitoring_analytics.log +++ b/backend/logs/monitoring_analytics/monitoring_analytics.log @@ -733,3 +733,7 @@ 2025-06-19 11:22:57 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 11:22:59 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-19 11:22:59 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 11:48:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 11:48:48 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 11:48:52 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 11:48:52 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log index e55cd2f52..05fd4afdb 100644 --- a/backend/logs/permissions/permissions.log +++ b/backend/logs/permissions/permissions.log @@ -367,3 +367,5 @@ WHERE users.role = ?] 2025-06-19 11:20:03 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-19 11:22:57 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-19 11:22:59 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 11:48:48 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 11:48:52 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index 0edee3322..d809bb33d 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -2290,3 +2290,9 @@ 2025-06-19 11:22:58 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-19 11:22:59 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-19 11:22:59 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 11:48:46 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 11:48:48 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 11:48:48 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 11:48:50 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 11:48:52 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 11:48:52 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet diff --git a/backend/logs/security_suite/security_suite.log b/backend/logs/security_suite/security_suite.log index 2ac61a697..59b386b94 100644 --- a/backend/logs/security_suite/security_suite.log +++ b/backend/logs/security_suite/security_suite.log @@ -1101,3 +1101,9 @@ 2025-06-19 11:22:58 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-19 11:22:58 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 11:22:59 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 11:48:46 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 11:48:46 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 11:48:48 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 11:48:50 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 11:48:50 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 11:48:52 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index b08a97eeb..2908f13e4 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -2935,3 +2935,21 @@ 2025-06-19 11:22:59 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-19 11:22:59 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-19 11:22:59 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T11:48:48.366325 +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 11:48:48 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T11:48:52.187957 +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 11:48:52 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/tapo_controller/tapo_controller.log b/backend/logs/tapo_controller/tapo_controller.log index a8eed981e..56f7da798 100644 --- a/backend/logs/tapo_controller/tapo_controller.log +++ b/backend/logs/tapo_controller/tapo_controller.log @@ -3141,3 +3141,40 @@ 2025-06-19 11:25:08 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) 2025-06-19 11:25:08 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) 2025-06-19 11:25:09 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.106: Status = off +2025-06-19 11:48:46 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 11:48:50 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 11:48:57 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.100: Status = off +2025-06-19 11:48:57 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.101: Status = off +2025-06-19 11:48:58 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.102: Status = off +2025-06-19 11:48:58 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.103: Status = off +2025-06-19 11:49:00 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:00 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:00 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.106: Status = off +2025-06-19 11:49:04 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.100: Status = off +2025-06-19 11:49:04 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.101: Status = off +2025-06-19 11:49:04 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.102: Status = off +2025-06-19 11:49:04 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.103: Status = off +2025-06-19 11:49:06 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:06 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:06 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.106: Status = off +2025-06-19 11:49:11 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.100: Status = off +2025-06-19 11:49:11 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.101: Status = off +2025-06-19 11:49:11 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.102: Status = off +2025-06-19 11:49:11 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.103: Status = off +2025-06-19 11:49:14 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:14 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:14 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.106: Status = off +2025-06-19 11:49:20 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.100: Status = off +2025-06-19 11:49:20 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.101: Status = off +2025-06-19 11:49:20 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.102: Status = off +2025-06-19 11:49:21 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.103: Status = off +2025-06-19 11:49:23 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:23 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:23 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.106: Status = off +2025-06-19 11:49:27 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.100: Status = off +2025-06-19 11:49:27 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.101: Status = off +2025-06-19 11:49:27 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.102: Status = off +2025-06-19 11:49:27 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.103: Status = off +2025-06-19 11:49:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-19 11:49:30 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ Tapo-Steckdose 192.168.0.106: Status = off diff --git a/backend/logs/utilities_collection/utilities_collection.log b/backend/logs/utilities_collection/utilities_collection.log index a9023a4d6..0bcebc96f 100644 --- a/backend/logs/utilities_collection/utilities_collection.log +++ b/backend/logs/utilities_collection/utilities_collection.log @@ -921,3 +921,7 @@ 2025-06-19 11:22:56 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-19 11:22:58 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert 2025-06-19 11:22:58 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 11:48:46 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 11:48:46 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 11:48:50 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 11:48:50 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log index 3d150e6bf..ad2abad9e 100644 --- a/backend/logs/windows_fixes/windows_fixes.log +++ b/backend/logs/windows_fixes/windows_fixes.log @@ -359,3 +359,7 @@ 2025-06-19 11:22:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-19 11:22:58 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... 2025-06-19 11:22:58 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 11:48:46 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 11:48:46 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 11:48:50 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 11:48:50 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet diff --git a/backend/templates/admin_add_user.html b/backend/templates/admin_add_user.html index 634ab793d..236d8ac50 100644 --- a/backend/templates/admin_add_user.html +++ b/backend/templates/admin_add_user.html @@ -200,22 +200,43 @@ + +
+ + +
+ Wird automatisch aus der E-Mail-Adresse generiert, kann aber angepasst werden +
+
+
@@ -469,6 +490,46 @@ document.addEventListener('DOMContentLoaded', function() { } }); + // Benutzername automatisch aus E-Mail generieren + function generateUsername(email) { + if (!email || !email.includes('@')) return ''; + + // Nimm den Teil vor dem @ und bereinige ihn + let username = email.split('@')[0]; + + // Entferne ungültige Zeichen und ersetze sie durch Punkte + username = username.replace(/[^a-zA-Z0-9._-]/g, '.'); + + // Entferne doppelte Punkte + username = username.replace(/\.{2,}/g, '.'); + + // Entferne Punkte am Anfang und Ende + username = username.replace(/^\.+|\.+$/g, ''); + + // Stelle sicher, dass der Benutzername mindestens 3 Zeichen hat + if (username.length < 3) { + username = email.split('@')[0] + '123'; + } + + return username.toLowerCase(); + } + + // E-Mail-Eingabe überwachen für automatische Benutzername-Generierung + emailInput.addEventListener('input', function() { + const usernameInput = document.getElementById('username'); + const generatedUsername = generateUsername(this.value); + + // Nur automatisch setzen, wenn das Feld leer ist oder der bisherige Wert automatisch generiert war + if (!usernameInput.dataset.manuallyEdited && generatedUsername) { + usernameInput.value = generatedUsername; + } + }); + + // Markiere Benutzername als manuell bearbeitet, wenn der Benutzer ihn ändert + document.getElementById('username').addEventListener('input', function() { + this.dataset.manuallyEdited = 'true'; + }); + // E-Mail-Validierung function validateEmail(email) { const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;