From 50579850244af8db1ffba8ed18e2e9233cf60c8d Mon Sep 17 00:00:00 2001 From: "matthias.lotz" Date: Sat, 13 Dec 2025 19:23:11 +0100 Subject: [PATCH] docs(feature-plan): Change namespace to werkstatt:ausruestung and add initial ACL phase - Changed namespace from ausruestung:* to werkstatt:ausruestung:* - Main pages: werkstatt:ausruestung:bereich:maschinenname - Doku pages: werkstatt:ausruestung:bereich:maschinenname:doku - Added two-phase ACL approach: - Phase 1: Only @odoo has access (initial setup/testing) - werkstatt:ausruestung:* @odoo 8 - werkstatt:ausruestung:* @ALL 0 - Phase 2: Werkstatt gets read/edit access (later rollout) - Main pages: @werkstatt read-only - Doku pages: @werkstatt editable - Updated all code examples with new namespace - Updated ACL permission table - Added phased rollout advantage --- FEATURE_REQUEST/open_workshop_feature_plan.md | 60 +++++++++++-------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/FEATURE_REQUEST/open_workshop_feature_plan.md b/FEATURE_REQUEST/open_workshop_feature_plan.md index 3d8e2b9..66bac34 100644 --- a/FEATURE_REQUEST/open_workshop_feature_plan.md +++ b/FEATURE_REQUEST/open_workshop_feature_plan.md @@ -169,7 +169,7 @@ Odoo (maintenance.equipment) ↓ DokuWiki API (wiki.putPage) ↓ -ausruestung:bereich:maschinenname +werkstatt:ausruestung:bereich:maschinenname ``` ## 5.3 DokuWiki-Seitenstruktur @@ -177,19 +177,20 @@ ausruestung:bereich:maschinenname **Zwei-Seiten-System pro Equipment:** ``` -ausruestung:holzwerkstatt:formatkreissaege ← Hauptseite (Odoo generiert) -ausruestung:holzwerkstatt:formatkreissaege:doku ← Doku-Seite (User editieren) -ausruestung:lasercutter:epilog_fusion_m2 ← Hauptseite -ausruestung:lasercutter:epilog_fusion_m2:doku ← Doku-Seite +werkstatt:ausruestung:holzwerkstatt:formatkreissaege ← Hauptseite (Odoo generiert) +werkstatt:ausruestung:holzwerkstatt:formatkreissaege:doku ← Doku-Seite (User editieren) +werkstatt:ausruestung:lasercutter:epilog_fusion_m2 ← Hauptseite +werkstatt:ausruestung:lasercutter:epilog_fusion_m2:doku ← Doku-Seite ``` **Namespace-Regeln:** -- **Hauptseite**: `ausruestung:bereich:maschinenname` +- **Hauptnamespace**: `werkstatt:ausruestung:` +- **Hauptseite**: `werkstatt:ausruestung:bereich:maschinenname` - Bereich: ows_area_id (normalisiert, lowercase) - Maschinenname: Equipment name (normalisiert, ohne Sonderzeichen) - **Komplett Odoo-generiert**, User können nicht editieren -- **Doku-Seite**: `ausruestung:bereich:maschinenname:doku` +- **Doku-Seite**: `werkstatt:ausruestung:bereich:maschinenname:doku` - **User editieren hier frei** (Anleitungen, Tipps, Bilder) - Wird via Include in Hauptseite eingebunden - User können weitere Unterseiten anlegen (`:doku:bilder`, `:doku:videos`) @@ -203,7 +204,7 @@ Odoo erstellt die komplette Hauptseite inklusive Include für User-Dokumentation ===== Grunddaten ===== * **Seriennummer:** FKS-2024-001 - * **Bereich:** [[ausruestung:holzwerkstatt|Holzwerkstatt]] + * **Bereich:** [[werkstatt:ausruestung:holzwerkstatt|Holzwerkstatt]] * **Kategorie:** 🔴 Kategorie 3 (Einweisung erforderlich) * **Standort:** Schrank A, Regal 2 * **Hersteller:** Bosch @@ -276,7 +277,7 @@ def sync_to_dokuwiki(self): content += f"[[.:{{wiki_id}}:doku|✏️ Dokumentation bearbeiten]]\n" # 3. Schreibe Hauptseite (überschreibt komplett) - main_page = f"ausruestung:{self.ows_area_id.wiki_name}:{wiki_id}" + main_page = f"werkstatt:ausruestung:{self.ows_area_id.wiki_name}:{wiki_id}" dokuwiki_client.putPage(main_page, content, "Odoo Auto-Sync") # 4. Erstelle leere Doku-Seite falls nicht vorhanden @@ -291,7 +292,7 @@ def _generate_equipment_page(self): ===== Grunddaten ===== * **Seriennummer:** {self.serial_no or 'N/A'} - * **Bereich:** [[ausruestung:{self.ows_area_id.wiki_name}|{self.ows_area_id.name}]] + * **Bereich:** [[werkstatt:ausruestung:{self.ows_area_id.wiki_name}|{self.ows_area_id.name}]] * **Kategorie:** {self._get_category_icon()} {self._get_category_label()} * **Standort:** {self.location or 'N/A'} * **Hersteller:** {self.partner_id.name or 'N/A'} @@ -318,32 +319,41 @@ def _generate_equipment_page(self): ## 5.6 ACL-System (Generisch & Wartungsfrei) -**DokuWiki ACL-Regeln:** +**Phase 1: Nur für Odoo sichtbar (Initial-Setup)** + +``` +# Komplett gesperrt für alle außer Odoo +werkstatt:ausruestung:* @odoo 8 # Voller Zugriff +werkstatt:ausruestung:* @ALL 0 # Kein Zugriff +``` + +**Phase 2: Werkstatt-Betreiber erhalten Zugriff (später)** ``` # User-Doku-Seiten editierbar (spezifischere Regel zuerst!) -ausruestung:*:doku @werkstatt 2 # Editieren erlaubt -ausruestung:*:doku:* @werkstatt 2 # Auch Unterseiten (Bilder, Videos, etc.) +werkstatt:ausruestung:*:doku @werkstatt 2 # Editieren erlaubt +werkstatt:ausruestung:*:doku:* @werkstatt 2 # Auch Unterseiten (Bilder, Videos, etc.) # Hauptseiten nur lesen -ausruestung:* @werkstatt 1 # Nur Lesezugriff -ausruestung:* @ALL 1 # Alle können lesen +werkstatt:ausruestung:* @werkstatt 1 # Nur Lesezugriff +werkstatt:ausruestung:* @ALL 1 # Alle können lesen # Odoo hat vollen Zugriff überall -ausruestung:* @odoo 8 # Voller Zugriff -ausruestung:*:doku @odoo 8 # Auch auf Doku-Seiten (für Initial-Erstellung) -``` - -**ACL-Level Bedeutung:** -- `1` = Lesen -- `2` = Bearbeiten -- `8` = Upload + Löschen -- `16` = Admin (alle Rechte) - +werkstatt:ausruestung:* @odoo 8 # Voller Zugriff +werkstatt:ausruestung:*:doku @odoo 8 # Auch auf Doku-Seiten (für Initial-Erstellung) **Wie es funktioniert:** | Seite | User @werkstatt | User @odoo | Ergebnis | |-------|-----------------|------------|----------| +| `werkstatt:ausruestung:holzwerkstatt:formatkreissaege` | Matched: `werkstatt:ausruestung:*` → 1 | Matched: `werkstatt:ausruestung:*` → 8 | User: Lesen, Odoo: Schreiben | +| `werkstatt:ausruestung:holzwerkstatt:formatkreissaege:doku` | Matched: `werkstatt:ausruestung:*:doku` → 2 | Matched: `werkstatt:ausruestung:*:doku` → 8 | User: Editieren, Odoo: Voll | +- `16` = Admin (alle Rechte) +**Vorteile:** +- ✅ **Komplett generisch**: Gilt automatisch für alle Equipment +- ✅ **Wartungsfrei**: Kein manuelles ACL-Setup pro Equipment +- ✅ **Phasenweise Freischaltung**: Erst Odoo-Only, dann schrittweise für Werkstatt +- ✅ **Selbsterklärend**: User sehen sofort wo sie editieren können +- ✅ **Skalierbar**: Funktioniert auch für 1000+ Equipment-Seiten | `ausruestung:holzwerkstatt:formatkreissaege` | Matched: `ausruestung:*` → 1 | Matched: `ausruestung:*` → 8 | User: Lesen, Odoo: Schreiben | | `ausruestung:holzwerkstatt:formatkreissaege:doku` | Matched: `ausruestung:*:doku` → 2 | Matched: `ausruestung:*:doku` → 8 | User: Editieren, Odoo: Voll |