DokuWiki Integration: Neue Namespace-Struktur mit odoo-status
BREAKING CHANGES:
- Namespace-Struktur komplett überarbeitet
- ausruestung → ausstattung (konfigurierbar über dokuwiki.equipment_namespace)
- Neue Struktur: ausstattung:odoo-status/ für Odoo-generierte Status-Seiten
- Odoo erstellt KEINE Benutzer-Seiten mehr in {bereich}/ Namespaces
Neue Systemparameter:
- dokuwiki.equipment_namespace = werkstatt:ausstattung (Basis-Namespace)
- dokuwiki.central_documentation_namespace = werkstatt:ausstattung:odoo-status
Workflow-Änderung:
1. Odoo synchronisiert → erstellt nur start und odoo-status/ Seiten
2. Übersichtstabelle verlinkt auf {bereich}/{equipment_id} → Links sind rot
3. Benutzer klickt roten Link → DokuWiki bietet Seitenerstellung an
4. Benutzer erstellt Seite mit {{page>odoo-status:equipment_id}}
Vorteile:
- Klare Trennung: odoo-status/ (nur Odoo) vs. {bereich}/ (nur Benutzer)
- Keine Überschreibgefahr - Odoo und Benutzer haben getrennte Namespaces
- Benutzer entscheiden selbst ob/wann sie Dokumentation erstellen
- ACL-Schutz: odoo-status/ nur von odoo.odoo schreibbar
This commit is contained in:
parent
a73c0cb299
commit
641bfb3ade
|
|
@ -9,6 +9,13 @@ Das **datatables Plugin** muss in DokuWiki installiert sein:
|
|||
# Installiere: "DataTables Plugin" von Matthias Schulte
|
||||
```
|
||||
|
||||
Das **include Plugin** muss in DokuWiki installiert sein (für Einbindung von Odoo-Status-Seiten):
|
||||
```bash
|
||||
# Als DokuWiki Admin: Administration → Erweiterungsverwaltung
|
||||
# Suche: "include"
|
||||
# Installiere: "Include Plugin" - sollte standardmäßig vorhanden sein
|
||||
```
|
||||
|
||||
## Setup-Schritte
|
||||
|
||||
### 1. Odoo Konfiguration
|
||||
|
|
@ -20,8 +27,11 @@ Gehe zu: **Einstellungen → Technisch → Parameter → Systemparameter**
|
|||
Standardwerte (automatisch gesetzt beim Modul-Install):
|
||||
|
||||
```python
|
||||
# Basis-Namespace für Equipment-Dokumentation (konfigurierbar)
|
||||
dokuwiki.equipment_namespace = werkstatt:ausstattung
|
||||
|
||||
# Seiten-ID wo die Übersicht erstellt wird
|
||||
dokuwiki.overview_page_id = werkstatt:ausruestung:start
|
||||
dokuwiki.overview_page_id = werkstatt:ausstattung:start
|
||||
|
||||
# Titel der Übersichtsseite
|
||||
dokuwiki.overview_title = Geräte & Maschinen - Übersicht
|
||||
|
|
@ -39,7 +49,7 @@ dokuwiki.overview_column_data = {status_smiley}|{ows_machine_id.category_icon}|{
|
|||
2. Wähle: **"Übersichtstabelle aktualisieren"**
|
||||
3. Klicke: **"Synchronisieren"**
|
||||
|
||||
Die Übersichtsseite wird erstellt unter: `werkstatt:ausruestung:start`
|
||||
Die Übersichtsseite wird erstellt unter: `werkstatt:ausstattung:start`
|
||||
|
||||
## Features
|
||||
|
||||
|
|
@ -167,7 +177,7 @@ dokuwiki.overview_column_data = {status_smiley}|{name}|{model}|{tags_list}|{loca
|
|||
▼
|
||||
┌─────────────────────────┐
|
||||
│ Seite speichern │
|
||||
│ werkstatt:ausruestung: │
|
||||
│ werkstatt:ausstattung: │
|
||||
│ start │
|
||||
└─────────────────────────┘
|
||||
```
|
||||
|
|
@ -329,19 +339,33 @@ DokuWiki erlaubt **gleichzeitig** eine Seite und einen gleichnamigen Namespace:
|
|||
### Empfohlene Struktur
|
||||
|
||||
```
|
||||
werkstatt/ausruestung/doku/
|
||||
├── analog-oscilloscope-hm303-6.txt # Von Odoo generiert
|
||||
├── analog-oscilloscope-hm303-6/ # Benutzer erstellt (optional)
|
||||
│ ├── kalibrierung.txt # Benutzer-Unterseite
|
||||
│ ├── messungen.txt # Benutzer-Unterseite
|
||||
│ └── bilder/ # Weitere Unter-Namespaces möglich
|
||||
│ └── oszillogramme.txt
|
||||
├── cnc-fraese-xyz.txt # Von Odoo generiert
|
||||
└── cnc-fraese-xyz/ # Benutzer-Namespace (optional)
|
||||
├── programme.txt
|
||||
└── werkzeuge.txt
|
||||
werkstatt/
|
||||
└── ausstattung/
|
||||
├── start # VON ODOO GENERIERT: Übersichtstabelle
|
||||
├── odoo-status/ # VON ODOO GENERIERT: Nur-Lese Seiten (nur odoo.odoo schreibt)
|
||||
│ ├── c_template.txt # Template für Equipment-Status-Seiten
|
||||
│ ├── analog-oscilloscope-hm303-6.txt # Status-Seite für include-Plugin
|
||||
│ ├── cnc-fraese-xyz.txt # Status-Seite für include-Plugin
|
||||
│ └── ...
|
||||
└── {Bereich Name}/ # VON BENUTZER ERSTELLT: Namespace wird von Odoo festgelegt
|
||||
├── analog-oscilloscope-hm303-6.txt # Benutzer erstellt diese Seite manuell (Klick auf Link in Übersicht)
|
||||
├── analog-oscilloscope-hm303-6/ # Benutzer-Unterseiten (optional)
|
||||
│ ├── kalibrierung.txt
|
||||
│ ├── messungen.txt
|
||||
│ └── bilder/
|
||||
│ └── oszillogramme.txt
|
||||
├── cnc-fraese-xyz.txt # Benutzer erstellt diese Seite manuell (Klick auf Link in Übersicht)
|
||||
└── cnc-fraese-xyz/ # Benutzer-Unterseiten (optional)
|
||||
├── programme.txt
|
||||
└── werkzeuge.txt
|
||||
```
|
||||
|
||||
**Wichtig:**
|
||||
- **Odoo erstellt NUR:** `start` (Übersichtstabelle) und `odoo-status/*.txt` (Status-Seiten)
|
||||
- **Odoo erstellt NIEMALS:** Seiten in `{Bereich Name}/` - diese werden ausschließlich von Benutzern erstellt
|
||||
- **Workflow:** Übersichtstabelle verlinkt auf `{Bereich Name}/equipment-name.txt` → Link ist rot (Seite existiert nicht) → Benutzer klickt darauf → DokuWiki bietet "Seite erstellen" an → Benutzer fügt `{{page>odoo-status:equipment-name}}` ein
|
||||
- **Berechtigungen:** `odoo-status/` Namespace hat spezielle Berechtigungen (nur odoo.odoo kann schreiben)
|
||||
|
||||
### Wichtige Regeln
|
||||
|
||||
#### ✅ DO: Unterverzeichnis OHNE start.txt
|
||||
|
|
@ -373,14 +397,22 @@ equipment/
|
|||
- `equipment` und `equipment:start` zeigen unterschiedliche Inhalte
|
||||
- Benutzer wissen nicht, welche Seite die "richtige" ist
|
||||
|
||||
### Catlist für Unterseiten-Auflistung
|
||||
### Include-Plugin für Odoo-Status einbinden
|
||||
|
||||
In der Odoo-generierten Hauptseite kann eine catlist-Anweisung eingefügt werden:
|
||||
**Wichtig:** Diese Seite wird NICHT von Odoo erstellt! Der Benutzer erstellt sie manuell nach Klick auf den Link in der Übersichtstabelle.
|
||||
|
||||
In der Benutzer-Dokumentationsseite wird der Odoo-generierte Status eingebunden:
|
||||
|
||||
```dokuwiki
|
||||
===== Dokumentation: Analog Oscilloscope HM303-6 =====
|
||||
===== Analog Oscilloscope HM303-6 =====
|
||||
|
||||
... Equipment-Details ...
|
||||
==== Odoo Status ====
|
||||
|
||||
{{page>werkstatt:ausstattung:odoo-status:analog-oscilloscope-hm303-6}}
|
||||
|
||||
==== Eigene Dokumentation ====
|
||||
|
||||
Hier kann der Benutzer seine eigenen Inhalte hinzufügen...
|
||||
|
||||
==== Weitere Dokumentation ====
|
||||
|
||||
|
|
@ -388,28 +420,37 @@ In der Odoo-generierten Hauptseite kann eine catlist-Anweisung eingefügt werden
|
|||
```
|
||||
|
||||
**Syntax-Erklärung:**
|
||||
- `.:namespace` → Relativer Namespace (Punkt + Doppelpunkt!)
|
||||
- `{{page>...}}` → Bindet Odoo-Status-Seite ein (nur lesbar für Benutzer)
|
||||
- `.:namespace` → Relativer Namespace für catlist (Punkt + Doppelpunkt!)
|
||||
- `-noNSInBold` → Namespace-Präfix nicht fett darstellen
|
||||
- `-sortByTitle` → Alphabetisch sortieren
|
||||
- `-exclude:{ns1 ns2}` → Optional: Namespaces ausschließen
|
||||
|
||||
**Ergebnis:**
|
||||
- Zeigt alle Unterseiten im `equipment/` Verzeichnis
|
||||
- Odoo-Status wird direkt in Benutzer-Seite eingebettet
|
||||
- Benutzer sehen aktuelle Odoo-Daten ohne direkt auf odoo-status zuzugreifen
|
||||
- Catlist zeigt alle Benutzer-Unterseiten im `equipment/` Verzeichnis
|
||||
- Automatisch aktualisiert wenn Benutzer neue Seiten erstellen
|
||||
- Kein manuelles Pflegen von Links nötig
|
||||
|
||||
### Workflow
|
||||
|
||||
1. **Odoo synchronisiert** → Erstellt/aktualisiert `equipment.txt`
|
||||
2. **Benutzer erstellt Unterseiten** → Erstellt Verzeichnis `equipment/` und fügt Seiten hinzu
|
||||
3. **Catlist zeigt automatisch** → Alle Unterseiten werden auf der Hauptseite gelistet
|
||||
4. **Keine Konflikte** → Odoo überschreibt nur `equipment.txt`, nie das `equipment/` Verzeichnis
|
||||
1. **Odoo synchronisiert** → Erstellt/aktualisiert `start` (Übersichtstabelle) und `odoo-status/equipment.txt` (Status-Seiten)
|
||||
2. **Benutzer sieht Übersichtstabelle** → Equipment sind verlinkt, aber Links sind rot (Seiten existieren nicht)
|
||||
3. **Benutzer klickt roten Link** → DokuWiki zeigt "Diese Seite existiert noch nicht - erstellen?"
|
||||
4. **Benutzer erstellt Seite** → Fügt `{{page>werkstatt:ausstattung:odoo-status:equipment-name}}` ein und eigene Inhalte
|
||||
5. **Benutzer erstellt optional Unterseiten** → Erstellt Verzeichnis `equipment/` für weitere Dokumentation
|
||||
6. **Catlist zeigt automatisch Unterseiten** → Wenn in Hauptseite eingebunden
|
||||
7. **Keine Konflikte** → Odoo schreibt NIEMALS in `{Bereich Name}/`, nur in `start` und `odoo-status/`
|
||||
|
||||
### Vorteile dieser Struktur
|
||||
|
||||
- ✅ Odoo-Seiten bleiben unverändert und zentral verwaltbar
|
||||
- ✅ Benutzer können frei Unterseiten erstellen ohne Odoo-Sync zu stören
|
||||
- ✅ Keine Namenskollisionen oder Breadcrumb-Probleme
|
||||
- ✅ Automatische Verlinkung via catlist
|
||||
- ✅ Skalierbar: Beliebig viele Unterseiten und Unter-Namespaces möglich
|
||||
- ✅ Klare Trennung: Was von Odoo kommt vs. was von Benutzern kommt
|
||||
- ✅ **Klare Trennung:** `odoo-status/` (nur Odoo schreibt) vs. `{Bereich Name}/` (nur Benutzer schreiben)
|
||||
- ✅ **Berechtigungsschutz:** Benutzer können Odoo-Daten nicht versehentlich überschreiben
|
||||
- ✅ **Keine Überschreibgefahr:** Odoo erstellt niemals Seiten in Benutzer-Namespaces
|
||||
- ✅ **Einfaches Einbinden:** Ein `{{page>...}}` in Benutzer-Seite, fertig
|
||||
- ✅ **Keine Namenskollisionen:** Odoo und Benutzer haben komplett getrennte Namespaces
|
||||
- ✅ **Benutzer entscheiden:** Nur wer dokumentieren will, erstellt eine Seite (über Link in Übersichtstabelle)
|
||||
- ✅ **Flexibel erweiterbar:** Benutzer können beliebig viele Unterseiten erstellen
|
||||
- ✅ **Automatische Updates:** Odoo-Status wird in alle einbindenden Seiten propagiert
|
||||
- ✅ **Konfigurierbarer Namespace:** Basis-Pfad über Systemparameter `dokuwiki.equipment_namespace` anpassbar
|
||||
|
|
|
|||
|
|
@ -13,23 +13,33 @@ Dieses Modul synchronisiert Equipment-Daten aus Odoo mit einem DokuWiki System.
|
|||
Features:
|
||||
---------
|
||||
* Automatische Erstellung von Wiki-Seiten für Equipment
|
||||
* Multi-View Architektur (nach Bereich, nach Einsatzzweck)
|
||||
* Zentrale Dokumentation mit Unterseiten
|
||||
* Include-basierte Struktur für flexible Darstellung
|
||||
* Übersichtstabelle aller Equipment (DataTables mit Sortierung/Filterung)
|
||||
* Status-Seiten für Include-Plugin (nur von Odoo generiert, nur lesbar)
|
||||
* Benutzer erstellen eigene Dokumentationsseiten und binden Odoo-Status ein
|
||||
* Smart Button "Wiki öffnen" im Equipment-Formular
|
||||
* Automatische Synchronisation bei Equipment-Änderungen
|
||||
* Automatische Synchronisation bei Equipment-Änderungen (optional)
|
||||
|
||||
Architektur:
|
||||
------------
|
||||
* Odoo generiert Hauptseiten (read-only für Users)
|
||||
* Zentrale Dokumentation unter werkstatt:ausruestung:_doku:{equipment_id}
|
||||
* Users editieren Unterseiten: _doku:{equipment_id}:bedienung, :wartung, :tipps
|
||||
* Hauptseiten inkludieren zentrale Dokumentation via DokuWiki Include Plugin
|
||||
* Odoo generiert NUR: start (Übersichtstabelle) und odoo-status/ Seiten
|
||||
* Odoo generiert NIEMALS: Benutzer-Dokumentationsseiten in {bereich}/ Namespaces
|
||||
* Namespace-Struktur (konfigurierbar über dokuwiki.equipment_namespace):
|
||||
- {equipment_namespace}:start - Übersichtstabelle (von Odoo)
|
||||
- {equipment_namespace}:odoo-status:{equipment_id} - Status-Seiten (von Odoo, nur lesbar)
|
||||
- {equipment_namespace}:odoo-status:c_template - Template für Status-Seiten
|
||||
- {equipment_namespace}:{bereich}:{equipment_id} - Benutzer-Dokumentation (von Benutzern erstellt!)
|
||||
|
||||
ACL:
|
||||
----
|
||||
* Phase 1: Nur @odoo Gruppe hat Zugriff
|
||||
* Phase 2: @werkstatt bekommt Lesezugriff auf Hauptseiten, Edit-Zugriff auf Doku-Seiten
|
||||
Workflow:
|
||||
---------
|
||||
1. Odoo synchronisiert Equipment → erstellt odoo-status/ Seiten
|
||||
2. Übersichtstabelle verlinkt auf {bereich}/{equipment_id} → Link ist rot (existiert nicht)
|
||||
3. Benutzer klickt roten Link → DokuWiki: "Seite erstellen?"
|
||||
4. Benutzer erstellt Seite und fügt {{page>odoo-status:equipment_id}} ein
|
||||
|
||||
ACL-Empfehlung:
|
||||
---------------
|
||||
* odoo-status/ Namespace: Nur odoo.odoo kann schreiben, alle anderen nur lesen
|
||||
* {bereich}/ Namespaces: Benutzer haben volle Schreibrechte
|
||||
""",
|
||||
'author': 'Hobbyhimmel',
|
||||
'website': 'https://hobbyhimmel.de',
|
||||
|
|
|
|||
|
|
@ -25,9 +25,10 @@ class MaintenanceEquipment(models.Model):
|
|||
- Automatische Übersichtstabelle aller Equipment (DataTable mit Sortierung/Filterung)
|
||||
- Automatische Synchronisation bei Feldänderungen (optional)
|
||||
Wiki-Seitenstruktur:
|
||||
- werkstatt:ausruestung:doku:{wiki_doku_id} - Zentrale Dokumentation
|
||||
- werkstatt:ausruestung:{area}:{wiki_doku_id} - Bereichsansicht
|
||||
- werkstatt:ausruestung:uebersicht - Equipment-Übersichtstabelle
|
||||
- {equipment_namespace}:start - Übersichtstabelle (von Odoo generiert)
|
||||
- {equipment_namespace}:odoo-status:{wiki_doku_id} - Status-Seite (von Odoo generiert, nur lesbar)
|
||||
- {equipment_namespace}:odoo-status:c_template - Template für Status-Seiten
|
||||
- {equipment_namespace}:{bereich}:{wiki_doku_id} - Benutzer-Dokumentation (NICHT von Odoo erstellt!)
|
||||
Neue Felder:
|
||||
- image_1920: Bild des Equipment (wird automatisch ins Wiki hochgeladen)
|
||||
- wiki_doku_id: Eindeutige ID für Wiki-Dokumentation (aus Equipment-Name generiert)
|
||||
|
|
@ -36,7 +37,7 @@ class MaintenanceEquipment(models.Model):
|
|||
- wiki_last_sync: Zeitstempel der letzten Synchronisation
|
||||
- wiki_auto_sync: Schalter für automatische Synchronisation bei Änderungen
|
||||
Template-System:
|
||||
Die Wiki-Seiten werden aus einem Template (werkstatt:ausruestung:c_template)
|
||||
Die Wiki-Seiten werden aus einem Template ({equipment_namespace}:odoo-status:c_template)
|
||||
generiert, das folgende Platzhalter unterstützt:
|
||||
- {feldname} - Direkte Equipment-Felder (z.B. {name}, {serial_no})
|
||||
- {ows_machine_id.feldname} - Maschinenfelder (z.B. {ows_machine_id.power})
|
||||
|
|
@ -63,7 +64,7 @@ class MaintenanceEquipment(models.Model):
|
|||
Notes:
|
||||
- Zentrale Dokumentationsseite wird nur beim ersten Sync erstellt
|
||||
- Bereichsansichten werden bei jedem Sync aktualisiert
|
||||
- Bilder werden als werkstatt:ausruestung:media:{wiki_doku_id}.jpg gespeichert
|
||||
- Bilder werden als {equipment_namespace}:media:{wiki_doku_id}.jpg gespeichert
|
||||
- Wiki-Namen werden normalisiert (Umlaute, Sonderzeichen, Kleinschreibung)
|
||||
- Bei fehlendem Template wird Fallback-Inhalt verwendet
|
||||
- Übersichtstabelle kann manuell oder automatisch aktualisiert werden
|
||||
|
|
@ -146,43 +147,53 @@ class MaintenanceEquipment(models.Model):
|
|||
|
||||
def _get_wiki_page_id_by_area(self):
|
||||
"""
|
||||
Generiert die Wiki-Page-ID für die Bereichs-Ansicht.
|
||||
Format: werkstatt:ausruestung:{area_name}:{wiki_doku_id}
|
||||
Generiert die Wiki-Page-ID für die Benutzer-Dokumentationsseite (nach Bereich).
|
||||
Format: {equipment_namespace}:{area_name}:{wiki_doku_id}
|
||||
|
||||
WICHTIG: Diese Seite wird NICHT von Odoo erstellt! Sie wird nur in der Übersichtstabelle
|
||||
verlinkt. Benutzer erstellen sie manuell durch Klick auf den Link.
|
||||
|
||||
Returns:
|
||||
str: Page-ID
|
||||
str: Page-ID für Benutzer-Dokumentation
|
||||
"""
|
||||
self.ensure_one()
|
||||
|
||||
if not self.ows_area_id:
|
||||
return False
|
||||
|
||||
# Equipment-Namespace aus Systemparameter laden
|
||||
IrConfigParameter = self.env['ir.config_parameter'].sudo()
|
||||
equipment_namespace = IrConfigParameter.get_param(
|
||||
'dokuwiki.equipment_namespace',
|
||||
default='werkstatt:ausstattung'
|
||||
)
|
||||
|
||||
# Area-Name normalisieren (Umlaute, Leerzeichen, Sonderzeichen)
|
||||
area_name = self._normalize_wiki_name(self.ows_area_id.name)
|
||||
|
||||
wiki_doku_id = self._get_wiki_doku_id()
|
||||
return f"werkstatt:ausruestung:{area_name}:{wiki_doku_id}"
|
||||
return f"{equipment_namespace}:{area_name}:{wiki_doku_id}"
|
||||
|
||||
def _get_wiki_doku_page_id(self):
|
||||
"""
|
||||
Generiert die Wiki-Page-ID für die zentrale Dokumentation.
|
||||
Format: {central_namespace}:{wiki_doku_id}
|
||||
Der Namespace ist über Systemparameter 'dokuwiki.central_documentation_namespace' konfigurierbar.
|
||||
Generiert die Wiki-Page-ID für die Odoo-Status-Seite (nur lesbar für Benutzer).
|
||||
Format: {equipment_namespace}:odoo-status:{wiki_doku_id}
|
||||
Diese Seite wird von Odoo generiert und kann mit dem include-Plugin eingebunden werden.
|
||||
|
||||
Returns:
|
||||
str: Page-ID der zentralen Doku
|
||||
str: Page-ID der Odoo-Status-Seite
|
||||
"""
|
||||
self.ensure_one()
|
||||
|
||||
# Namespace aus Systemparameter laden
|
||||
# Namespace aus Systemparameter laden (verwendet jetzt central_documentation_namespace)
|
||||
IrConfigParameter = self.env['ir.config_parameter'].sudo()
|
||||
central_namespace = IrConfigParameter.get_param(
|
||||
status_namespace = IrConfigParameter.get_param(
|
||||
'dokuwiki.central_documentation_namespace',
|
||||
default='werkstatt:ausruestung:doku'
|
||||
default='werkstatt:ausstattung:odoo-status'
|
||||
)
|
||||
|
||||
wiki_doku_id = self._get_wiki_doku_id()
|
||||
return f"{central_namespace}:{wiki_doku_id}"
|
||||
return f"{status_namespace}:{wiki_doku_id}"
|
||||
|
||||
def _normalize_wiki_name(self, name):
|
||||
"""
|
||||
|
|
@ -246,7 +257,14 @@ class MaintenanceEquipment(models.Model):
|
|||
self.ensure_one()
|
||||
global _template_cache
|
||||
dokuwiki_client = self.env['dokuwiki.client']
|
||||
template_page_id = 'werkstatt:ausruestung:c_template'
|
||||
|
||||
# Template-Pfad aus Systemparameter generieren
|
||||
IrConfigParameter = self.env['ir.config_parameter'].sudo()
|
||||
status_namespace = IrConfigParameter.get_param(
|
||||
'dokuwiki.central_documentation_namespace',
|
||||
default='werkstatt:ausstattung:odoo-status'
|
||||
)
|
||||
template_page_id = f"{status_namespace}:c_template"
|
||||
|
||||
try:
|
||||
# Template aus Cache oder Wiki laden
|
||||
|
|
@ -369,8 +387,13 @@ class MaintenanceEquipment(models.Model):
|
|||
# Bild-Upload und Referenz (falls vorhanden)
|
||||
if self.image_1920:
|
||||
wiki_doku_id = self._get_wiki_doku_id()
|
||||
# Media-ID: werkstatt:ausruestung:media:equipment_name.jpg
|
||||
media_id = f"werkstatt:ausruestung:media:{wiki_doku_id}.jpg"
|
||||
# Media-ID aus equipment_namespace generieren
|
||||
IrConfigParameter = self.env['ir.config_parameter'].sudo()
|
||||
equipment_namespace = IrConfigParameter.get_param(
|
||||
'dokuwiki.equipment_namespace',
|
||||
default='werkstatt:ausstattung'
|
||||
)
|
||||
media_id = f"{equipment_namespace}:media:{wiki_doku_id}.jpg"
|
||||
|
||||
# Bild ins Wiki hochladen
|
||||
try:
|
||||
|
|
@ -410,18 +433,16 @@ class MaintenanceEquipment(models.Model):
|
|||
"""
|
||||
Fallback-Methode: Generiert hart-codierten Wiki-Markup-Inhalt,
|
||||
wenn c_template.txt nicht verfügbar ist.
|
||||
Dieser Content wird in odoo-status/ gespeichert und ist nur lesbar.
|
||||
|
||||
Args:
|
||||
view_type (str): 'area' oder 'purpose'
|
||||
|
||||
Returns:
|
||||
str: Wiki-Markup-Inhalt
|
||||
str: Wiki-Markup-Inhalt für odoo-status Seite
|
||||
"""
|
||||
self.ensure_one()
|
||||
|
||||
# Zentrale Doku-Seite einbinden
|
||||
doku_page_id = self._get_wiki_doku_page_id()
|
||||
|
||||
# Header je nach View-Typ
|
||||
if view_type == 'area':
|
||||
view_name = self.ows_area_id.name if self.ows_area_id else "Unbekannt"
|
||||
|
|
@ -431,76 +452,65 @@ class MaintenanceEquipment(models.Model):
|
|||
view_name = "TODO: Einsatzzweck"
|
||||
view_label = "Einsatzzweck"
|
||||
|
||||
content = f"""====== {self.name} ======
|
||||
content = f"""====== {self.name} - Odoo Status ======
|
||||
|
||||
**{view_label}:** {view_name}
|
||||
**Kategorie:** {self.category_id.name if self.category_id else 'Keine'}
|
||||
**Seriennummer:** {self.serial_no or 'Keine'}
|
||||
**Modell:** {self.model or 'Keine'}
|
||||
**Status:** {self.status_id.name if self.status_id else 'Unbekannt'} {self.status_id.smiley if self.status_id and self.status_id.smiley else ''}
|
||||
|
||||
===== Dokumentation =====
|
||||
{{{{page>{doku_page_id}&noheader}}}}
|
||||
===== Technische Daten =====
|
||||
|
||||
**Hersteller:** {self.partner_id.name if self.partner_id else 'Unbekannt'}
|
||||
**Standort:** {self.location or 'Nicht angegeben'}
|
||||
**Kosten:** {self.cost if self.cost else 'Nicht angegeben'}
|
||||
**Garantie bis:** {self.warranty_date.strftime('%d.%m.%Y') if self.warranty_date else 'Keine'}
|
||||
|
||||
===== Notizen =====
|
||||
|
||||
{self.note or 'Keine Notizen'}
|
||||
|
||||
----
|
||||
[[{doku_page_id}|✏️ Zentrale Dokumentation bearbeiten]]
|
||||
|
||||
//Diese Seite wird automatisch von Odoo generiert und ist nur lesbar.//
|
||||
//Letzte Synchronisation: {datetime.now().strftime('%d.%m.%Y %H:%M')} //
|
||||
"""
|
||||
return content
|
||||
|
||||
def _generate_wiki_main_page_content(self, view_type='area'):
|
||||
"""
|
||||
Generiert den Wiki-Markup-Inhalt für die Haupt-Ansichtsseite.
|
||||
Generiert den Wiki-Markup-Inhalt für die Odoo-Status-Seite.
|
||||
Verwendet c_template.txt aus DokuWiki falls verfügbar, sonst Fallback.
|
||||
Diese Seite wird in odoo-status/ gespeichert und ist nur lesbar.
|
||||
|
||||
Args:
|
||||
view_type (str): 'area' oder 'purpose'
|
||||
|
||||
Returns:
|
||||
str: Wiki-Markup-Inhalt
|
||||
str: Wiki-Markup-Inhalt für odoo-status Seite
|
||||
"""
|
||||
return self._render_template_from_wiki(view_type)
|
||||
|
||||
def _generate_wiki_doku_page_content(self):
|
||||
"""
|
||||
Generiert den initialen Wiki-Markup-Inhalt für die zentrale Dokumentationsseite.
|
||||
Einfacher Basis-Inhalt, den der Nutzer nach Belieben erweitern kann.
|
||||
|
||||
Returns:
|
||||
str: Wiki-Markup-Inhalt
|
||||
DEPRECATED: Diese Methode wird nicht mehr verwendet.
|
||||
Odoo erstellt keine Benutzer-Dokumentationsseiten mehr.
|
||||
Benutzer erstellen diese Seiten manuell durch Klick auf den Link in der Übersichtstabelle.
|
||||
"""
|
||||
self.ensure_one()
|
||||
if self.model:
|
||||
model_part = f" - Modell: {self.model}"
|
||||
else:
|
||||
model_part = ""
|
||||
|
||||
content = f"""====== {self.name}{model_part} ======
|
||||
|
||||
===== Beschreibung =====
|
||||
|
||||
Hier kann die Dokumentation für {self.name} geschrieben werden.
|
||||
|
||||
**Mögliche Inhalte:**
|
||||
* Bedienungsanleitung
|
||||
* Wartungshinweise
|
||||
* Sicherheitshinweise
|
||||
* Tipps & Tricks
|
||||
|
||||
//Hinweis: Diese Seite kann beliebig strukturiert werden. Unterseiten können bei Bedarf manuell angelegt werden.//
|
||||
|
||||
----
|
||||
//Erstellt: {datetime.now().strftime('%d.%m.%Y %H:%M')} //
|
||||
"""
|
||||
return content
|
||||
_logger.warning("_generate_wiki_doku_page_content() wurde aufgerufen - diese Methode ist deprecated!")
|
||||
return ""
|
||||
|
||||
def sync_to_dokuwiki(self):
|
||||
"""
|
||||
Synchronisiert Equipment-Daten zum DokuWiki.
|
||||
|
||||
WICHTIG: Erstellt NUR die Odoo-Status-Seite in odoo-status/ Namespace!
|
||||
Benutzer-Dokumentationsseiten werden NICHT erstellt - diese erstellen Benutzer
|
||||
manuell durch Klick auf den Link in der Übersichtstabelle.
|
||||
|
||||
Erstellt/aktualisiert:
|
||||
- wiki_doku_id beim ersten Sync (falls noch nicht gesetzt)
|
||||
- Zentrale Dokumentationsseite (_doku:) - nur wenn sie noch nicht existiert
|
||||
- Haupt-Ansichtsseite nach Bereich (wird immer aktualisiert)
|
||||
- TODO: Später auch nach Einsatzzweck
|
||||
- Odoo-Status-Seite (odoo-status:wiki_doku_id) - wird immer aktualisiert
|
||||
|
||||
Returns:
|
||||
bool: True bei Erfolg
|
||||
|
|
@ -524,41 +534,20 @@ Hier kann die Dokumentation für {self.name} geschrieben werden.
|
|||
dokuwiki_client = self.env['dokuwiki.client']
|
||||
|
||||
try:
|
||||
# 1. Zentrale Dokumentationsseite erstellen (immer beim ersten Sync)
|
||||
doku_page_id = self._get_wiki_doku_page_id()
|
||||
# Odoo-Status-Seite erstellen/aktualisieren (immer beim Sync)
|
||||
status_page_id = self._get_wiki_doku_page_id()
|
||||
status_content = self._generate_wiki_main_page_content(view_type='area')
|
||||
|
||||
# Prüfen ob Seite mit echtem Inhalt existiert (nicht nur leere Template-Seite)
|
||||
page_has_content = False
|
||||
try:
|
||||
existing_content = dokuwiki_client.get_page(doku_page_id)
|
||||
# Prüfen ob es echten Inhalt hat (mehr als 100 Zeichen und nicht nur Template)
|
||||
if existing_content and len(existing_content) > 100 and 'catlist' not in existing_content.lower():
|
||||
page_has_content = True
|
||||
_logger.info(f"Zentrale Doku-Seite hat bereits Inhalt: {doku_page_id}")
|
||||
except Exception as e:
|
||||
_logger.debug(f"Seite existiert noch nicht: {e}")
|
||||
|
||||
if not page_has_content:
|
||||
doku_content = self._generate_wiki_doku_page_content()
|
||||
dokuwiki_client.create_page(
|
||||
doku_page_id,
|
||||
doku_content,
|
||||
f"Initial erstellt von Odoo: {self.name}"
|
||||
)
|
||||
_logger.info(f"Zentrale Doku-Seite für {self.name} erstellt: {doku_page_id}")
|
||||
else:
|
||||
_logger.info(f"Zentrale Doku-Seite für {self.name} existiert bereits: {doku_page_id}")
|
||||
|
||||
# 2. Haupt-Ansichtsseite nach Bereich erstellen/aktualisieren (verwendet c_template.txt)
|
||||
area_page_id = self._get_wiki_page_id_by_area()
|
||||
area_content = self._generate_wiki_main_page_content(view_type='area')
|
||||
dokuwiki_client.create_page(
|
||||
area_page_id,
|
||||
area_content,
|
||||
status_page_id,
|
||||
status_content,
|
||||
f"Synchronisiert von Odoo: {self.name}"
|
||||
)
|
||||
_logger.info(f"Odoo-Status-Seite für {self.name} aktualisiert: {status_page_id}")
|
||||
|
||||
# TODO: Später auch nach Einsatzzweck synchronisieren
|
||||
# WICHTIG: Benutzer-Dokumentationsseiten werden NICHT erstellt!
|
||||
# Diese werden nur in der Übersichtstabelle verlinkt und von Benutzern
|
||||
# manuell erstellt durch Klick auf den roten Link.
|
||||
|
||||
# Sync-Status aktualisieren
|
||||
self.write({
|
||||
|
|
|
|||
|
|
@ -30,8 +30,9 @@ class ResConfigSettings(models.TransientModel):
|
|||
'dokuwiki.url': 'https://wiki.hobbyhimmel.de',
|
||||
'dokuwiki.user': 'odoo.odoo',
|
||||
'dokuwiki.password': 'CHANGE_ME',
|
||||
'dokuwiki.central_documentation_namespace': 'werkstatt:ausruestung:doku',
|
||||
'dokuwiki.overview_page_id': 'werkstatt:ausruestung:start',
|
||||
'dokuwiki.equipment_namespace': 'werkstatt:ausstattung', # NEU: Basis-Namespace für Equipment
|
||||
'dokuwiki.central_documentation_namespace': 'werkstatt:ausstattung:odoo-status', # NEU: Namespace für Odoo-generierte Status-Seiten
|
||||
'dokuwiki.overview_page_id': 'werkstatt:ausstattung:start',
|
||||
'dokuwiki.overview_title': 'Geräte & Maschinen - Übersicht',
|
||||
'dokuwiki.overview_columns': 'Name|Zustand|Sicherheit|Bereich|Standort|Bild',
|
||||
'dokuwiki.overview_column_data': '[[{wiki_page_id}|{name}]]|{status_smiley}|{ows_machine_id.category_icon}|{ows_area}|{location}|{image}',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user