From e460acddf305238797e72062a71a343571fdc3bf Mon Sep 17 00:00:00 2001 From: "matthias.lotz" Date: Sat, 27 Dec 2025 20:25:17 +0100 Subject: [PATCH] =?UTF-8?q?DokuWiki:=20Reset-Funktion=20f=C3=BCr=20Wiki-Sy?= =?UTF-8?q?nc-Status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neue Funktion im Modul: - action_reset_wiki_sync_status() in maintenance_equipment.py - Setzt wiki_synced und wiki_last_sync zurück - Aufrufbar über Wizard: Wartung → Konfiguration → Wiki-Synchronisation - Neuer Modus: 'Sync-Status zurücksetzen' Verwendung: 1. Nach Namespace-Änderungen (ausruestung → ausstattung) 2. Wenn alle Equipment neu synchronisiert werden sollen 3. Bei Wiki-Struktur-Änderungen Setzt NUR den Status zurück, nicht die wiki_doku_id (wiki_doku_id kann bei Bedarf manuell zurückgesetzt werden) --- .../models/maintenance_equipment.py | 54 +++++++++++++++++++ .../wizard/equipment_wiki_sync_wizard.py | 5 ++ 2 files changed, 59 insertions(+) diff --git a/open_workshop_dokuwiki/models/maintenance_equipment.py b/open_workshop_dokuwiki/models/maintenance_equipment.py index 55f01a1..531170d 100644 --- a/open_workshop_dokuwiki/models/maintenance_equipment.py +++ b/open_workshop_dokuwiki/models/maintenance_equipment.py @@ -776,3 +776,57 @@ Diese Seite wird automatisch aktualisiert. 'error_messages': error_msg, 'overview_url': '', } + + @api.model + def action_reset_wiki_sync_status(self): + """ + Setzt den Wiki-Synchronisationsstatus für alle Equipment zurück. + Nützlich nach Namespace-Änderungen oder wenn alle Equipment neu synchronisiert werden sollen. + + Setzt zurück: + - wiki_synced auf False + - wiki_last_sync auf NULL + + Optional (auskommentiert): + - wiki_doku_id auf NULL (nur wenn IDs komplett neu generiert werden sollen) + + Returns: + dict: Notification mit Anzahl zurückgesetzter Equipment + """ + equipment_records = self.search([ + ('wiki_synced', '=', True) + ]) + + count = len(equipment_records) + + if count == 0: + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Wiki-Sync Reset'), + 'message': _('Keine synchronisierten Equipment gefunden.'), + 'type': 'warning', + 'sticky': False, + } + } + + # Reset durchführen + equipment_records.write({ + 'wiki_synced': False, + 'wiki_last_sync': False, + # 'wiki_doku_id': False, # Auskommentiert: Nur aktivieren wenn IDs neu generiert werden sollen + }) + + _logger.info(f"Wiki-Sync-Status für {count} Equipment zurückgesetzt") + + return { + 'type': 'ir.actions.client', + 'tag': 'display_notification', + 'params': { + 'title': _('Wiki-Sync Reset'), + 'message': _(f'{count} Equipment wurden zurückgesetzt und müssen neu synchronisiert werden.'), + 'type': 'success', + 'sticky': False, + } + } diff --git a/open_workshop_dokuwiki/wizard/equipment_wiki_sync_wizard.py b/open_workshop_dokuwiki/wizard/equipment_wiki_sync_wizard.py index 02185bd..8ca05a0 100644 --- a/open_workshop_dokuwiki/wizard/equipment_wiki_sync_wizard.py +++ b/open_workshop_dokuwiki/wizard/equipment_wiki_sync_wizard.py @@ -15,6 +15,7 @@ class EquipmentWikiSyncWizard(models.TransientModel): ('area', 'Nach Bereich filtern'), ('unsynced', 'Nur nicht synchronisierte'), ('overview_table', 'Übersichtstabelle aktualisieren'), + ('reset_sync', 'Sync-Status zurücksetzen'), ], string='Synchronisations-Modus', default='all', required=True) ows_area_id = fields.Many2one( @@ -52,6 +53,10 @@ class EquipmentWikiSyncWizard(models.TransientModel): if self.sync_mode == 'overview_table': return self._sync_overview_table() + # Reset-Modus: Sync-Status zurücksetzen + if self.sync_mode == 'reset_sync': + return self.env['maintenance.equipment'].action_reset_wiki_sync_status() + # Equipment-Liste basierend auf Modus ermitteln domain = []