Coverage for src / lexigram / admin / ui / organisms / data_table / permissions.py: 42%
12 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
1"""Permission and RBAC logic for data table component."""
3from __future__ import annotations
5from typing import Any
8class PermissionManager:
9 """Manages permissions for data table operations."""
11 def __init__(
12 self,
13 user: Any = None,
14 resource_name: str | None = None,
15 permission_service: Any = None,
16 ):
17 self.user = user
18 self.resource_name = resource_name
19 self._permission_service = permission_service
21 def check_permissions(self) -> dict[str, bool]:
22 """Check CRUD permissions for the resource."""
23 if not self.user or not self.resource_name or self._permission_service is None:
24 return {
25 "can_view": True,
26 "can_create": True,
27 "can_update": True,
28 "can_delete": True,
29 }
31 _perm_svc = self._permission_service
32 return {
33 "can_view": _perm_svc.can_view(self.user, self.resource_name),
34 "can_create": _perm_svc.can_create(self.user, self.resource_name),
35 "can_update": _perm_svc.can_edit(self.user, self.resource_name),
36 "can_delete": _perm_svc.can_delete(self.user, self.resource_name),
37 }