| .. | ||
| data | ||
| models | ||
| security | ||
| views | ||
| wizard | ||
| __init__.py | ||
| __manifest__.py | ||
| hooks.py | ||
| README.md | ||
Equipment Übersichtstabelle - Setup
Voraussetzungen
Das datatables Plugin muss in DokuWiki installiert sein:
# Als DokuWiki Admin: Administration → Erweiterungsverwaltung
# Suche: "datatables"
# Installiere: "DataTables Plugin" von Matthias Schulte
Das include Plugin muss in DokuWiki installiert sein (für Einbindung von Odoo-Status-Seiten):
# Als DokuWiki Admin: Administration → Erweiterungsverwaltung
# Suche: "include"
# Installiere: "Include Plugin" - sollte standardmäßig vorhanden sein
Setup-Schritte
1. Odoo Konfiguration
Die Übersichtstabelle wird vollständig aus Odoo heraus konfiguriert - kein DokuWiki Template nötig!
Gehe zu: Einstellungen → Technisch → Parameter → Systemparameter
Standardwerte (automatisch gesetzt beim Modul-Install):
# Basis-Namespace für Equipment-Dokumentation (konfigurierbar)
dokuwiki.equipment_namespace = werkstatt:ausstattung
# Seiten-ID wo die Übersicht erstellt wird (konfigurierbar)
dokuwiki.overview_page_id = werkstatt:ausstattung:uebersicht
# Titel der Übersichtsseite
dokuwiki.overview_title = Geräte & Maschinen - Übersicht
# Spaltenüberschriften (Pipe-separiert)
dokuwiki.overview_columns = Status|Sicherheits-Kategorie|Hersteller|Bemerkung|Typ|Bild|Standort|Dokumentation
# Spaltendaten mit Platzhaltern (Pipe-separiert)
dokuwiki.overview_column_data = {status_smiley}|{ows_machine_id.category_icon}|{partner_id}|{note}|{model}|{image}|{ows_machine_id.location}|{wiki_doku_link}
2. Erste Synchronisation
- In Odoo: Wartung → Konfiguration → Wiki-Synchronisation
- Wähle: "Übersichtstabelle aktualisieren"
- Klicke: "Synchronisieren"
Die Übersichtsseite wird erstellt unter: werkstatt:ausstattung:uebersicht (konfigurierbar über Systemparameter)
Features
DataTables Funktionen
- ✅ Sortieren nach allen Spalten (Klick auf Header)
- ✅ Filter/Suche über alle Felder
- ✅ Pagination bei vielen Einträgen
- ✅ Responsive Design
Flexible Spalten
- ✅ Spalten in Odoo konfigurierbar (kein DokuWiki Template)
- ✅ Alle Platzhalter verfügbar (siehe unten)
- ✅ Spalten hinzufügen/entfernen ohne Code-Änderung
- ✅ Änderungen sofort beim nächsten Sync wirksam
Standard-Spalten
| Spalte | Platzhalter | Ausgabe |
|---|---|---|
| Status | {status_smiley} |
😊 / 😐 / ☹️ |
| Sicherheits-Kategorie | {ows_machine_id.category_icon} |
🟢 / 🟡 / 🔴 |
| Hersteller | {partner_id} |
BOSCH, Festool, ... |
| Bemerkung | {note} |
Notizen |
| Typ | {model} |
Modellbezeichnung |
| Bild | {image} |
Thumbnail 100px |
| Standort | {ows_machine_id.location} |
Regal A3, ... |
| Dokumentation | {wiki_doku_link} |
Link zur Detail-Seite |
Spalten anpassen
Beispiel 1: Seriennummer hinzufügen
# Spaltenüberschriften erweitern
dokuwiki.overview_columns = Status|Typ|Seriennummer|Hersteller|Standort|Dokumentation
# Spaltendaten erweitern
dokuwiki.overview_column_data = {status_smiley}|{model}|{serial_no}|{partner_id}|{ows_machine_id.location}|{wiki_doku_link}
Beispiel 2: Minimale Ansicht
dokuwiki.overview_columns = Name|Status|Kategorie|Dokumentation
dokuwiki.overview_column_data = {name}|{status_smiley}|{ows_machine_id.category_icon}|{wiki_doku_link}
Beispiel 3: Detaillierte Ansicht mit Kosten
dokuwiki.overview_columns = Name|Hersteller|Modell|Seriennummer|Kosten|Garantie|Standort|Kategorie
dokuwiki.overview_column_data = {name}|{partner_id}|{model}|{serial_no}|{cost}|{warranty_date}|{location}|{ows_machine_id.category_icon}
Beispiel 4: Mit Tags
dokuwiki.overview_columns = Status|Name|Typ|Tags|Standort|Dokumentation
dokuwiki.overview_column_data = {status_smiley}|{name}|{model}|{tags_list}|{location}|{wiki_doku_link}
Wichtig: Anzahl der Pipes muss übereinstimmen!
- 3 Pipes = 4 Spalten
- Spalten und Daten müssen gleiche Anzahl haben
Performance
- ⚡ Schneller Sync: Keine DB-Iteration über alle Einträge
- ⚡ Generiert nur eine Seite (statt 156 einzelne)
- ⚡ DokuWiki cached die Seite automatisch
- ⚡ Spalten-Änderung ohne Code-Deploy
Troubleshooting
DataTables funktioniert nicht
→ Installiere DataTables Plugin in DokuWiki
Bilder werden nicht angezeigt
→ Prüfe ob Equipment image_1920 Feld gesetzt hat
→ Bilder müssen zuerst via "Alle Equipment" Sync hochgeladen werden
Equipment fehlen in Tabelle
→ Nur Equipment mit gesetztem ows_area_id werden angezeigt
→ Prüfe Filter in action_sync_overview_table()
Spalten werden nicht korrekt dargestellt
→ Prüfe ob Anzahl Pipes in overview_columns und overview_column_data übereinstimmt
→ Beispiel: 3 Pipes = 4 Spalten
Platzhalter wird nicht ersetzt (z.B. {status} bleibt stehen)
→ Prüfe Schreibweise (case-sensitive!)
→ Siehe Liste der verfügbaren Platzhalter unten
→ Bei ows.machine Feldern: {ows_machine_id.feldname} verwenden
Workflow
┌─────────────────┐
│ Odoo Systempar. │
│ - Spalten │
│ - Platzhalter │
└────────┬────────┘
│
▼
┌─────────────────────────┐
│ Odoo Equipment │
│ (156 Einträge) │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ _generate_overview_ │
│ table_row() │ ← Pro Equipment eine Zeile
│ (Platzhalter ersetzen) │ mit Platzhalter-Engine
└────────┬────────────────┘
│ 156 Zeilen
▼
┌─────────────────────────┐
│ Seite zusammenbauen │
│ - Titel │
│ - DataTables Header │
│ - Zeilen │
│ - Footer │
└────────┬────────────────┘
│
▼
┌─────────────────────────┐
│ Seite speichern │
│ werkstatt:ausstattung: │
│ uebersicht │
└─────────────────────────┘
Automatische Updates
Die Übersichtstabelle kann optional automatisch bei Equipment-Änderungen aktualisiert werden.
Manueller Sync (empfohlen)
Manueller Sync empfohlen für:
- Nach Massen-Importen
- Einmal täglich/wöchentlich
- Bei strukturellen Änderungen (neue Bereiche, etc.)
Vorteil: Performanter, keine zusätzliche Last bei jeder Equipment-Änderung
Automatischer Sync bei Equipment-Änderungen
Was passiert beim Speichern eines Equipment?
-
Equipment-Detailseite wird immer aktualisiert wenn:
- Eines der überwachten Felder geändert wurde (siehe unten)
wiki_auto_syncfür das Equipment aktiviert ist (Standard:True)- Equipment bereits synchronisiert wurde (
wiki_synced = True)
-
Übersichtstabelle wird zusätzlich aktualisiert wenn:
- Alle Bedingungen von (1) erfüllt sind UND
- Systemparameter
dokuwiki.auto_update_overview_table = Truegesetzt ist
Überwachte Felder (lösen Sync aus):
name,serial_no,ows_area_id,category_id,status_idmodel,partner_id,location,note,image_1920,tag_ids
Aktivierung Übersichtstabellen-Sync:
# In Odoo: Einstellungen → Technisch → Parameter → Systemparameter
dokuwiki.auto_update_overview_table = True
Achtung:
- Bei vielen gleichzeitigen Equipment-Änderungen kann dies Performance-Probleme verursachen!
- Die komplette Übersichtstabelle wird bei jeder Änderung neu generiert (ca. 156 Zeilen)
Cronjob (Alternative)
# In Odoo: Einstellungen → Technisch → Automatisierung → Geplante Aktionen
Name: Wiki Übersichtstabelle Update
Modell: maintenance.equipment
Aktion: action_sync_overview_table()
Intervall: Täglich um 02:00 Uhr
Verfügbare Platzhalter
Alle Platzhalter aus dem Detail-Template sind verfügbar!
Basis-Felder (maintenance.equipment)
{name}- Equipment-Name{serial_no}- Seriennummer{model}- Modell{category}- Kategoriename{status}- Status (aus status_id){status_smiley}- Status als Smiley (aus status_id.smiley Feld, z.B. 😊 oder ☹️){location}- Standort{ows_area}- Bereichsname{assign_date}- Zuweisungsdatum (formatiert){cost}- Kosten{warranty_date}- Garantiedatum (formatiert){note}- Notizen{partner_id}- Lieferant (Name){partner_ref}- Lieferanten-Referenz
Tags (falls maintenance_equipment_tags installiert)
{tags}- Komma-separierte Liste aller Tags (z.B. "Holz, CNC, Einweisung erforderlich"){tags_list}- DokuWiki Bullet-Liste mit Zeilenumbrüchen (ideal für Tabellenzellen){tags_count}- Anzahl der zugewiesenen Tags
Spezial-Felder
{view_type}- "Bereich" oder "Einsatzzweck"{view_name}- Name des Bereichs/Einsatzzwecks{wiki_doku_page}- ID der zentralen Doku-Seite{wiki_doku_link}- Fertiger Link zur zentralen Doku-Seite{odoo_link}- Fertiger Link zur Odoo Equipment-Seite{odoo_url}- URL zur Odoo Equipment-Seite (ohne Link-Markup){sync_datetime}- Aktuelles Datum/Zeit{image}- Equipment-Bild (100px Breite) - Format:{{:media_id?100}}{image_large}- Equipment-Bild (Originalgröße) - Format:{{:media_id}}{image_id}- Media-ID des Bildes (z.B. werkstatt:ausruestung:media:sabako-laser.jpg)
ows.machine Felder (falls verknüpft)
{ows_machine_id.name}- Name{ows_machine_id.model}- Modell{ows_machine_id.serial_no}- Seriennummer{ows_machine_id.location}- Standort{ows_machine_id.note}- Notizen{ows_machine_id.category}- Sicherheitskategorie (red/yellow/green){ows_machine_id.category_icon}- Kategorie-Icon als Emoji (🔴/🟡/🟢)
Tipps für Platzhalter
- Case-sensitive:
{Name}funktioniert nicht, nur{name} - Pipe als Trenner: Zwischen Spalten
|verwenden - Leere Werte: Werden automatisch durch
-ersetzt - Links:
{wiki_doku_link}und{odoo_link}enthalten bereits DokuWiki Link-Syntax - Bilder:
{image}ist bereits formatiert mit{{:...?100}} - ows.machine: Immer mit Präfix
ows_machine_id.(z.B.{ows_machine_id.location})
Beispiel-Konfigurationen
Minimalistische Ansicht
Spalten: Name|Status|Kategorie
Daten: {name}|{status_smiley}|{ows_machine_id.category_icon}
Standard-Ansicht (Default)
Spalten: Status|Sicherheits-Kategorie|Hersteller|Bemerkung|Typ|Bild|Standort|Dokumentation
Daten: {status_smiley}|{ows_machine_id.category_icon}|{partner_id}|{note}|{model}|{image}|{ows_machine_id.location}|{wiki_doku_link}
Vollständige Ansicht
Spalten: Name|Status|Kategorie|Hersteller|Modell|S/N|Kosten|Garantie|Standort|Bereich|Bild|Doku
Daten: {name}|{status_smiley}|{ows_machine_id.category_icon}|{partner_id}|{model}|{serial_no}|{cost}|{warranty_date}|{location}|{ows_area}|{image}|{wiki_doku_link}
Mit Tags
Spalten: Name|Status|Tags|Hersteller|Standort|Doku
Daten: {name}|{status_smiley}|{tags_list}|{partner_id}|{location}|{wiki_doku_link}
Best Practices: DokuWiki Seitenstruktur
Erweiterbare Dokumentation ohne Umbenennung
Problem
Benutzer möchten zu Equipment-Seiten eigene Unterseiten hinzufügen, ohne die von Odoo generierten Seiten umbenennen zu müssen.
Lösung: Parallele Seite + Namespace
DokuWiki erlaubt gleichzeitig eine Seite und einen gleichnamigen Namespace:
- Datei:
equipment.txt(von Odoo generiert) - Verzeichnis:
equipment/(für Benutzer-Unterseiten)
Die Seite equipment.txt hat Vorrang und bleibt die Haupt-Equipment-Seite!
Empfohlene Struktur
werkstatt/
└── ausstattung/
├── uebersicht # 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) undodoo-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
equipment/
├── subpage1.txt
├── subpage2.txt
└── weitere/
└── details.txt
Vorteile:
- Breadcrumb zeigt:
Home » Werkstatt » Ausrüstung » Equipment » Subpage1 - Keine Duplikation oder Verwirrung
- Equipment-Hauptseite bleibt
equipment.txt
❌ DON'T: Unterverzeichnis MIT start.txt
equipment/
├── start.txt # ❌ NICHT erstellen!
├── subpage1.txt
└── subpage2.txt
Probleme:
- Breadcrumb wird verwirrend:
Equipmentkönnte auf zwei Seiten verweisen equipmentundequipment:startzeigen unterschiedliche Inhalte- Benutzer wissen nicht, welche Seite die "richtige" ist
Include-Plugin für Odoo-Status einbinden
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:
===== Analog Oscilloscope HM303-6 =====
==== Odoo Status ====
{{page>werkstatt:ausstattung:odoo-status:analog-oscilloscope-hm303-6}}
==== Eigene Dokumentation ====
Hier kann der Benutzer seine eigenen Inhalte hinzufügen...
==== Weitere Dokumentation ====
<catlist .:analog-oscilloscope-hm303-6 -noNSInBold -sortByTitle>
Syntax-Erklärung:
{{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:
- 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
- Odoo synchronisiert → Erstellt/aktualisiert
start(Übersichtstabelle) undodoo-status/equipment.txt(Status-Seiten) - Benutzer sieht Übersichtstabelle → Equipment sind verlinkt, aber Links sind rot (Seiten existieren nicht)
- Benutzer klickt roten Link → DokuWiki zeigt "Diese Seite existiert noch nicht - erstellen?"
- Benutzer erstellt Seite → Fügt
{{page>werkstatt:ausstattung:odoo-status:equipment-name}}ein und eigene Inhalte - Benutzer erstellt optional Unterseiten → Erstellt Verzeichnis
equipment/für weitere Dokumentation - Catlist zeigt automatisch Unterseiten → Wenn in Hauptseite eingebunden
- Keine Konflikte → Odoo schreibt NIEMALS in
{Bereich Name}/, nur instartundodoo-status/
Vorteile dieser Struktur
- ✅ 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_namespaceanpassbar