Skip to content

feat: iil-demo-fixture — apply_demo_fixture() Hook + Authentik-User implementieren #263

@achimdehnert

Description

@achimdehnert

Kontext

Issue #248 hat das Repo achimdehnert/iil-demo-fixture gescaffold (PyPI-Skelett, apply_demo_fixture(env) als no-op + TODO). ADR-212 fordert das Package als Plattform-Fixture für Klausel-1-Repos mit Subdomain-Tenancy.

Dieses Folge-Issue trackt die erste echte Implementierung, damit das erste Klausel-1-Repo (risk-hub) das Package nutzen kann statt repo-lokal zu seeden.

Ziel

apply_demo_fixture(env) füllt die Identitäts-Fixture in die Consumer-DB:

  • Organization(slug="demo"|"staging-demo", name="Demo GmbH", …)
  • 3 Standard-User mit Authentik-OIDC-sub (Admin, Member, Guest)
  • Standard-Adresse / Kontaktdaten

Idempotent, env-bewusst, ohne Sample-Daten (die bleiben repo-lokal).

API-Skizze

from iil_demo_fixture import apply_demo_fixture

# Aufruf aus repo-lokaler Daten-Migration:
def forwards(apps, schema_editor):
    apply_demo_fixture(env=settings.DJANGO_SETTINGS_MODULE_ENV)
    # → erstellt/updated Org + 3 User; idempotent über update_or_create

Env-Mapping:

env Org-slug OIDC-sub-Prefix
local demo local-demo-
staging staging-demo staging-demo-
prod demo prod-demo-

OIDC-sub-Werte müssen mit Authentik-Provider-Konfiguration (Issue: separates Authentik-Provisioning) konsistent sein — bestehende User-Modell-Schemas der Consumer-Repos werden via Django-Modell-Resolver (ähnlich apps.get_model("auth", "User")) lokalisiert, kein hartes Import.

Akzeptanz-Kriterien

  • apply_demo_fixture(env) ist nicht mehr no-op; legt Org + 3 User + Adresse an
  • Idempotent: zweiter Aufruf ändert nichts (alle Felder via update_or_create)
  • Tests: test_should_create_org_on_first_call, test_should_be_idempotent, test_should_use_correct_slug_per_env
  • Env-Mapping in README dokumentiert
  • Mindestens ein Consumer-Repo (Empfehlung: risk-hub) ruft apply_demo_fixture(env="staging") aus seiner Daten-Migration erfolgreich auf — Integration via separates Issue (siehe „Folge-Issue")
  • Daten-Migration-Konvention dokumentiert: 0NNN_demo_identity_fixture.py (Package-Hook) vs. 0NNN_demo_sample_data.py (repo-lokal)

Folge-Issue (out-of-scope hier)

  • risk-hub: Klausel-1-Migration (verlinkt — separates Issue, kommt parallel)

Referenzen

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions