pybragerone.models.menu¶
Menu models with validation and automatic prefix cleanup.
This module provides Pydantic models for BragerOne menu structure with automatic cleanup of prefixes (A.*, e.*, a.*) and normalization of parameters.
Classes
|
Menu route metadata with automatic cleanup. |
|
Single parameter in a menu route with automatic cleanup. |
|
Collection of parameters organized by type (read/write/status/special). |
|
Complete menu result with validation and statistics. |
|
Single menu route with automatic cleanup and validation. |
- class pybragerone.models.menu.MenuMeta(**data: Any)[source]¶
Bases:
BaseModelMenu route metadata with automatic cleanup.
- Parameters:
displayName (str)
icon (str | None)
permission (Permission | None)
isVisibleOnSideMenu (bool | None)
parameters (MenuParameters)
displayDropdown (str | None)
permissionModule (str | None)
raw_icon (str | None)
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- parameters: MenuParameters¶
- permission: Permission | None¶
- class pybragerone.models.menu.MenuParameter(**data: Any)[source]¶
Bases:
BaseModelSingle parameter in a menu route with automatic cleanup.
Automatically extracts token from parameter expressions like: - e(E.WRITE,”PARAM_123”) → “PARAM_123” - E(A.READ,”TEMP_SENSOR”) → “TEMP_SENSOR”
And normalizes permissions by removing detected prefixes: - A.DISPLAY_PARAMETER_LEVEL_1 → DISPLAY_PARAMETER_LEVEL_1 - e.HeaterManagement → HeaterManagement - a.DISPLAY_MENU_DHW → DISPLAY_MENU_DHW
- Parameters:
token (str)
permission (Permission | None)
parameter (str)
permissionModule (str | None)
extra_data (Any)
- PARAM_REGEX: ClassVar[Pattern[str]] = re.compile('\\b[A-Za-z_$][\\w$]*\\([^,]*?,\\s*[\'\\"]([^\'\\"]+)[\'\\"]\\)')¶
- classmethod extract_fields(data: Any)[source]¶
Extract token from parameter and normalize permission.
- model_config: ClassVar[ConfigDict] = {'extra': 'allow'}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- classmethod normalize_permission(v: Any)[source]¶
Normalize permission by removing common prefixes.
- Return type:
- Parameters:
v (Any)
- permission: Permission | None¶
- class pybragerone.models.menu.MenuParameters(**data: Any)[source]¶
Bases:
BaseModelCollection of parameters organized by type (read/write/status/special).
- Parameters:
read (list[MenuParameter])
write (list[MenuParameter])
status (list[MenuParameter])
special (list[MenuParameter])
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- read: list[MenuParameter]¶
- special: list[MenuParameter]¶
- status: list[MenuParameter]¶
- write: list[MenuParameter]¶
- class pybragerone.models.menu.MenuResult(**data: Any)[source]¶
Bases:
BaseModelComplete menu result with validation and statistics.
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class pybragerone.models.menu.MenuRoute(**data: Any)[source]¶
Bases:
BaseModelSingle menu route with automatic cleanup and validation.
- Parameters:
- all_permissions()[source]¶
Get all permissions from this route and its children recursively.
- Return type:
- model_config: ClassVar[ConfigDict] = {}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- parameters: MenuParameters¶