From 7230bcb6f878b84c2e395077fae9e8abdaf4a622 Mon Sep 17 00:00:00 2001 From: "matthias.lotz" Date: Fri, 10 Oct 2025 19:56:49 +0200 Subject: [PATCH] fix: anonymize_for_testsystem now supports archived admin account --- models/ows_models.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/models/ows_models.py b/models/ows_models.py index 192b465..11b6be9 100644 --- a/models/ows_models.py +++ b/models/ows_models.py @@ -15,22 +15,31 @@ class HREmployee(models.Model): def anonymize_for_testsystem(self): """Benennt Admin-Angestellten um und archiviert alle anderen für das Testsystem.""" admin_user = self.env['res.users'].search([('name', '=', 'Administrator')], limit=1) + if not admin_user: + _logger.error("[OWS] Administrator-Benutzer nicht gefunden!") + return + _logger.info(f"[OWS] Administrator-Benutzer gefunden: {admin_user.name} (ID: {admin_user.id})") - admin_employee = self.search([('user_id', '=', admin_user.id)], limit=1) + + # Suche auch archivierte Employees + admin_employee = self.with_context(active_test=False).search([('user_id', '=', admin_user.id)], limit=1) if admin_employee: + # Administrator-Employee reaktivieren und umbenennen admin_employee.write({ 'name': 'TESTSYSTEM', 'job_title': 'Testumgebung', 'work_email': False, 'work_phone': False, + 'active': True, # Reaktivieren falls archiviert }) - _logger.info("[OWS] Admin-Angestellter wurde umbenannt.") + _logger.info(f"[OWS] Admin-Angestellter reaktiviert und umbenannt: {admin_employee.name} (ID: {admin_employee.id})") else: - _logger.warning("[OWS] Kein Angestellter für user_admin gefunden.") + _logger.warning("[OWS] Kein Angestellter für Administrator gefunden.") + return - # Alle anderen Angestellten archivieren - other_employees = self.search([('id', '!=', admin_employee.id)]) + # Alle anderen Angestellten archivieren (auch bereits archivierte berücksichtigen) + other_employees = self.with_context(active_test=False).search([('id', '!=', admin_employee.id)]) other_employees.write({'active': False}) _logger.info("[OWS] %d Angestellte archiviert.", len(other_employees))