From 75d91984d189194bf27bcef7440d99fe912a1e35 Mon Sep 17 00:00:00 2001 From: "matthias.lotz" Date: Mon, 19 Jan 2026 20:57:43 +0100 Subject: [PATCH] feat: Wiki-Links in Tree View als klickbare Namen anzeigen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Änderungen: - maintenance_equipment.py: Zwei neue computed HTML-Felder hinzugefügt: - wiki_doku_link: Zeigt wiki_doku_id als Link zur Dokumentations-Seite - wiki_status_link: Zeigt wiki_status_id als Link zur Odoo-Status-Seite - maintenance_equipment_views.xml: Tree View erweitert mit Wiki-Links - Wiki Doku: Standardmäßig sichtbar (optional='show') - Wiki Status: Standardmäßig ausgeblendet (optional='hide') - maintenance_equipment_views.xml: Formular-Layout verbessert - Doku-Seite mit prominentem Link oben Nutzen: - Benutzer sehen jetzt 'sabko-laser' statt vollständige URL - Links sind klickbar und öffnen in neuem Tab - Übersichtlichere List View mit relevanten Wiki-Informationen --- .../models/maintenance_equipment.py | 42 +++++++++++++++++++ .../views/maintenance_equipment_views.xml | 30 ++++++++----- 2 files changed, 62 insertions(+), 10 deletions(-) diff --git a/open_workshop_dokuwiki/models/maintenance_equipment.py b/open_workshop_dokuwiki/models/maintenance_equipment.py index 32819cc..722cc34 100644 --- a/open_workshop_dokuwiki/models/maintenance_equipment.py +++ b/open_workshop_dokuwiki/models/maintenance_equipment.py @@ -110,6 +110,48 @@ class MaintenanceEquipment(models.Model): default=True, help='Bei Änderungen automatisch zum Wiki synchronisieren' ) + wiki_doku_link = fields.Html( + string='Wiki Doku', + compute='_compute_wiki_doku_link', + sanitize=False, + help='Klickbarer Link zur Wiki-Dokumentationsseite' + ) + wiki_status_link = fields.Html( + string='Wiki Status', + compute='_compute_wiki_status_link', + sanitize=False, + help='Klickbarer Link zur Wiki-Status-Seite (Odoo-Daten)' + ) + + @api.depends('wiki_doku_id', 'wiki_page_url') + def _compute_wiki_doku_link(self): + """ + Generiert einen HTML-Link mit wiki_doku_id als Text und wiki_page_url als Ziel. + """ + for record in self: + if record.wiki_doku_id and record.wiki_page_url: + record.wiki_doku_link = f'{record.wiki_doku_id}' + else: + record.wiki_doku_link = '' + + @api.depends('wiki_status_id', 'name', 'comp_serial_no', 'ows_area_id') + def _compute_wiki_status_link(self): + """ + Generiert einen HTML-Link mit wiki_status_id als Text zur Odoo-Status-Seite. + """ + dokuwiki_client = self.env['dokuwiki.client'] + for record in self: + # wiki_status_id dynamisch berechnen falls noch nicht gesetzt + wiki_status_id = record.wiki_status_id or record._get_wiki_status_id() + if wiki_status_id and record.ows_area_id: + status_page_id = record._get_wiki_status_page_id() + if status_page_id: + status_url = dokuwiki_client.get_wiki_url(status_page_id) + record.wiki_status_link = f'{wiki_status_id}' + else: + record.wiki_status_link = '' + else: + record.wiki_status_link = '' @api.depends('ows_area_id') def _compute_wiki_page_url(self): diff --git a/open_workshop_dokuwiki/views/maintenance_equipment_views.xml b/open_workshop_dokuwiki/views/maintenance_equipment_views.xml index 6760737..8200459 100644 --- a/open_workshop_dokuwiki/views/maintenance_equipment_views.xml +++ b/open_workshop_dokuwiki/views/maintenance_equipment_views.xml @@ -1,6 +1,20 @@ + + + maintenance.equipment.tree.dokuwiki + maintenance.equipment + + + + + + + + + + maintenance.equipment.form.dokuwiki @@ -32,20 +46,16 @@ - - - - - - - + + + - - + + - +