DokuWiki: Reset-Funktion für Wiki-Sync-Status

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)
This commit is contained in:
Matthias Lotz 2025-12-27 20:25:17 +01:00
parent a1c6903893
commit e460acddf3
2 changed files with 59 additions and 0 deletions

View File

@ -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,
}
}

View File

@ -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 = []