Implement user-specific question numbering and update database schema. Added triggers for automatic question numbering and adjustments upon deletion. Enhanced CRUD operations to manage user_question_number effectively.
This commit is contained in:
66
services/permissions/registry.py
Normal file
66
services/permissions/registry.py
Normal file
@@ -0,0 +1,66 @@
|
||||
"""
|
||||
Глобальный реестр разрешений и фабричные функции
|
||||
"""
|
||||
from typing import Optional
|
||||
from .base import PermissionRegistry, PermissionChecker, Permission
|
||||
from services.infrastructure.database import DatabaseService
|
||||
from services.infrastructure.logger import get_logger
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
# Глобальный реестр разрешений
|
||||
_permission_registry: Optional[PermissionRegistry] = None
|
||||
_permission_checker: Optional[PermissionChecker] = None
|
||||
|
||||
|
||||
def get_permission_registry() -> PermissionRegistry:
|
||||
"""
|
||||
Получение глобального реестра разрешений
|
||||
|
||||
Returns:
|
||||
Глобальный экземпляр реестра разрешений
|
||||
"""
|
||||
global _permission_registry
|
||||
if _permission_registry is None:
|
||||
_permission_registry = PermissionRegistry()
|
||||
logger.info("Создан глобальный реестр разрешений")
|
||||
return _permission_registry
|
||||
|
||||
|
||||
def get_permission_checker() -> Optional[PermissionChecker]:
|
||||
"""
|
||||
Получение глобального проверщика разрешений
|
||||
|
||||
Returns:
|
||||
Глобальный экземпляр проверщика разрешений или None если не инициализирован
|
||||
"""
|
||||
return _permission_checker
|
||||
|
||||
|
||||
def init_permission_checker(database: DatabaseService, config) -> PermissionChecker:
|
||||
"""
|
||||
Инициализация глобального проверщика разрешений
|
||||
|
||||
Args:
|
||||
database: Сервис базы данных
|
||||
config: Конфигурация приложения
|
||||
|
||||
Returns:
|
||||
Инициализированный проверщик разрешений
|
||||
"""
|
||||
global _permission_checker
|
||||
registry = get_permission_registry()
|
||||
_permission_checker = PermissionChecker(registry, database, config)
|
||||
logger.info("Инициализирован глобальный проверщик разрешений")
|
||||
return _permission_checker
|
||||
|
||||
|
||||
def register_permission(permission: Permission) -> None:
|
||||
"""
|
||||
Регистрация разрешения в глобальном реестре
|
||||
|
||||
Args:
|
||||
permission: Разрешение для регистрации
|
||||
"""
|
||||
registry = get_permission_registry()
|
||||
registry.register(permission)
|
||||
Reference in New Issue
Block a user