Coverage for src/lexigram/admin/ui/organisms/data_table/permissions.py: 42%

12 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-21 14:26 +0800

1"""Permission and RBAC logic for data table component.""" 

2 

3from __future__ import annotations 

4 

5from typing import Any 

6 

7 

8class PermissionManager: 

9 """Manages permissions for data table operations.""" 

10 

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 

20 

21 async 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 } 

30 

31 _perm_svc = self._permission_service 

32 return { 

33 "can_view": await _perm_svc.can_view(self.user, self.resource_name), 

34 "can_create": await _perm_svc.can_create(self.user, self.resource_name), 

35 "can_update": await _perm_svc.can_edit(self.user, self.resource_name), 

36 "can_delete": await _perm_svc.can_delete(self.user, self.resource_name), 

37 }