shinkan-jinkendo/backend/rights_registrations/exercises.py

91 lines
2.4 KiB
Python
Raw Permalink Normal View History

"""Übungen-Modul: nur Rechte/Kontingente mit echter Endpoint-Verdrahtung."""
from rights_registry import CapabilityRegistration, FeatureRegistration, register_capability, register_feature
_CLUB_WRITE_ROLES = (
"club_admin",
"trainer",
"content_editor",
"division_lead",
)
register_feature(
FeatureRegistration(
id="ai_calls",
name="KI-Aufrufe",
module="exercises",
category="ai",
limit_type="count",
reset_period="monthly",
default_limit=0,
description="KI-Aufrufe pro Monat (Suggest, Regenerate)",
)
)
register_capability(
CapabilityRegistration(
id="exercises.ai.suggest",
name="KI-Vorschlag Übung",
domain="exercises",
module="exercises",
linked_feature_id="ai_calls",
default_club_grants=tuple((r, "exercises.ai.suggest") for r in _CLUB_WRITE_ROLES),
)
)
register_capability(
CapabilityRegistration(
id="exercises.ai.regenerate",
name="KI neu generieren",
domain="exercises",
module="exercises",
linked_feature_id="ai_calls",
default_club_grants=tuple((r, "exercises.ai.regenerate") for r in _CLUB_WRITE_ROLES),
)
)
register_capability(
CapabilityRegistration(
id="exercises.create",
name="Übung anlegen",
domain="exercises",
module="exercises",
linked_feature_id="exercises",
default_club_grants=tuple((r, "exercises.create") for r in _CLUB_WRITE_ROLES),
)
)
register_capability(
CapabilityRegistration(
id="exercises.media.upload",
name="Übungsmedien hochladen",
domain="exercises",
module="exercises",
linked_feature_id="exercise_media",
default_club_grants=(
("club_admin", "exercises.media.upload"),
("trainer", "exercises.media.upload"),
("content_editor", "exercises.media.upload"),
),
)
)
register_feature(
FeatureRegistration(
id="exercises",
name="Übungen (Bestand)",
module="exercises",
category="content",
limit_type="count",
reset_period="never",
default_limit=0,
)
)
register_feature(
FeatureRegistration(
id="exercise_media",
name="Übungsmedien",
module="exercises",
category="media",
limit_type="count",
reset_period="never",
default_limit=0,
)
)