Coverage for src/lexigram/admin/config/features.py: 39%
28 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:31 +0800
1"""Feature flags and contributor configuration."""
3from __future__ import annotations
5from dataclasses import dataclass
6from typing import Any
8from lexigram.domain import DomainModel
9from lexigram.validation import Field
12@dataclass(init=False)
13class AdminFeaturesConfig(DomainModel):
14 """Feature flags for admin functionality."""
16 # UI Features
17 command_palette: bool = Field(default=True)
18 keyboard_shortcuts: bool = Field(default=True)
19 theme_toggle: bool = Field(default=True)
20 search: bool = Field(default=True)
22 # UX Features
23 optimistic_updates: bool = Field(default=True)
24 undo_redo: bool = Field(default=True)
25 autosave: bool = Field(default=False)
27 # Advanced Features
28 audit_logging: bool = Field(default=True)
29 activity_feed: bool = Field(default=False)
30 notifications: bool = Field(default=True)
31 webhooks: bool = Field(default=False)
32 api_docs: bool = Field(default=True)
34 model_config = {"extra": "allow"}
37@dataclass(init=False)
38class ContributorConfig(DomainModel):
39 """Per-contributor enable/disable and options."""
41 enabled: bool = Field(default=True)
42 options: dict[str, Any] = Field(default_factory=dict)
45@dataclass(init=False)
46class FrameworkPagesConfig(DomainModel):
47 """Framework management pages configuration."""
49 enabled: bool = Field(default=True)
50 require_permission: str = Field(default="admin:framework:access")