open_workshop/open_workshop_dokuwiki
matthias.lotz f79e126c8c DokuWiki Integration: wiki_doku_id aus Name+Modell, zentraler Namespace konfigurierbar
- wiki_doku_id wird nun aus equipment.name und equipment.model kombiniert generiert
- Systemparameter 'dokuwiki.central_documentation_namespace' für konfigurierbaren Namespace
- Verbessertes Error-Handling in dokuwiki_client mit detaillierteren Fehlermeldungen
- Docker-Netzwerk Unterstützung dokumentiert
- Gelöschte veraltete WordPress-API Dateien
2025-12-23 14:48:44 +01:00
..
data DokuWiki Integration: wiki_doku_id aus Name+Modell, zentraler Namespace konfigurierbar 2025-12-23 14:48:44 +01:00
models DokuWiki Integration: wiki_doku_id aus Name+Modell, zentraler Namespace konfigurierbar 2025-12-23 14:48:44 +01:00
security feat(dokuwiki): Add partner fields, editable smileys, category icon, and mass sync wizard 2025-12-14 20:55:21 +01:00
views feat(dokuwiki): Add partner fields, editable smileys, category icon, and mass sync wizard 2025-12-14 20:55:21 +01:00
wizard feat(dokuwiki): Add equipment overview table with DataTables 2025-12-19 20:40:29 +01:00
__init__.py feat(dokuwiki): Flexible overview table with configurable columns 2025-12-20 12:49:58 +01:00
__manifest__.py DokuWiki Integration: wiki_doku_id aus Name+Modell, zentraler Namespace konfigurierbar 2025-12-23 14:48:44 +01:00
hooks.py feat(dokuwiki): Flexible overview table with configurable columns 2025-12-20 12:49:58 +01:00
README.md DokuWiki Integration: wiki_doku_id aus Name+Modell, zentraler Namespace konfigurierbar 2025-12-23 14:48:44 +01:00

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

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):

# Seiten-ID wo die Übersicht erstellt wird
dokuwiki.overview_page_id = werkstatt:ausruestung:start

# 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

  1. In Odoo: Wartung → Konfiguration → Wiki-Synchronisation
  2. Wähle: "Übersichtstabelle aktualisieren"
  3. Klicke: "Synchronisieren"

Die Übersichtsseite wird erstellt unter: werkstatt:ausruestung:start

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:ausruestung:  │
│ start                   │
└─────────────────────────┘

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?

  1. Equipment-Detailseite wird immer aktualisiert wenn:

    • Eines der überwachten Felder geändert wurde (siehe unten)
    • wiki_auto_sync für das Equipment aktiviert ist (Standard: True)
    • Equipment bereits synchronisiert wurde (wiki_synced = True)
  2. Übersichtstabelle wird zusätzlich aktualisiert wenn:

    • Alle Bedingungen von (1) erfüllt sind UND
    • Systemparameter dokuwiki.auto_update_overview_table = True gesetzt ist

Überwachte Felder (lösen Sync aus):

  • name, serial_no, ows_area_id, category_id, status_id
  • model, 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}