"""Ü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, ) )