Skip to content

Commit ac170fb

Browse files
authored
fix(BA-2832): Seperate permission group DTOs based on whether relationship data load is needed (#6415)
1 parent c99d9d5 commit ac170fb

5 files changed

Lines changed: 22 additions & 3 deletions

File tree

changes/6451.enhance.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Introduced separate DTOs for permission groups(`PermissionGroupExtendedData`, `PermissionGroupData`) to conditionally load relationship data and prevent lazy loading errors

src/ai/backend/manager/data/permission/permission_group.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,11 @@ class PermissionGroupData:
2828
role_id: uuid.UUID
2929
scope_id: ScopeId
3030

31+
32+
@dataclass
33+
class PermissionGroupExtendedData:
34+
id: uuid.UUID
35+
role_id: uuid.UUID
36+
scope_id: ScopeId
37+
3138
permissions: list[PermissionData]

src/ai/backend/manager/data/permission/role.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
ObjectPermissionCreateInputBeforeRoleCreation,
1313
ObjectPermissionData,
1414
)
15-
from .permission_group import PermissionGroupCreatorBeforeRoleCreation, PermissionGroupData
15+
from .permission_group import (
16+
PermissionGroupCreatorBeforeRoleCreation,
17+
PermissionGroupExtendedData,
18+
)
1619
from .status import RoleStatus
1720
from .types import EntityType, OperationType, RoleSource
1821

@@ -73,7 +76,7 @@ class RoleDataWithPermissions:
7376
source: RoleSource
7477
status: RoleStatus
7578

76-
permission_groups: list[PermissionGroupData]
79+
permission_groups: list[PermissionGroupExtendedData]
7780
object_permissions: list[ObjectPermissionData]
7881

7982
created_at: datetime

src/ai/backend/manager/models/rbac_models/permission/permission_group.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from ai.backend.manager.data.permission.permission_group import (
1111
PermissionGroupCreator,
1212
PermissionGroupData,
13+
PermissionGroupExtendedData,
1314
)
1415
from ai.backend.manager.data.permission.types import (
1516
ScopeType,
@@ -73,5 +74,12 @@ def to_data(self) -> PermissionGroupData:
7374
id=self.id,
7475
role_id=self.role_id,
7576
scope_id=ScopeId(scope_type=self.scope_type, scope_id=self.scope_id),
77+
)
78+
79+
def to_extended_data(self) -> PermissionGroupExtendedData:
80+
return PermissionGroupExtendedData(
81+
id=self.id,
82+
role_id=self.role_id,
83+
scope_id=ScopeId(scope_type=self.scope_type, scope_id=self.scope_id),
7684
permissions=[permission.to_data() for permission in self.permission_rows],
7785
)

src/ai/backend/manager/models/rbac_models/role.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def to_data_with_permissions(self) -> RoleDataWithPermissions:
104104
updated_at=self.updated_at,
105105
deleted_at=self.deleted_at,
106106
description=self.description,
107-
permission_groups=[pg_row.to_data() for pg_row in self.permission_group_rows],
107+
permission_groups=[pg_row.to_extended_data() for pg_row in self.permission_group_rows],
108108
object_permissions=[op_row.to_data() for op_row in self.object_permission_rows],
109109
)
110110

0 commit comments

Comments
 (0)