change structure of permissions output

This commit is contained in:
2025-06-02 15:26:49 +03:30
parent 0e4076e876
commit d1549a97b6
5 changed files with 47 additions and 37 deletions

View File

@@ -13,6 +13,8 @@ import itertools
class PageSerializer(serializers.ModelSerializer):
""" Serialize every front-end page """
class Meta:
model = Page
fields = [
@@ -22,6 +24,8 @@ class PageSerializer(serializers.ModelSerializer):
class PermissionSerializer(serializers.ModelSerializer):
""" Serialize permissions """
class Meta:
model = Permissions
fields = [
@@ -34,17 +38,19 @@ class PermissionSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
representation = super().to_representation(instance)
representation['name'] = 'Hello'
representation['page'] = instance.page.name
return representation
@classmethod
def permissions_structure_output(cls, permissions: list) -> typing.Any:
""" set a structure for permissions """
structure = {}
for permission in permissions:
if permission.page.name not in structure.keys():
structure.update(
structure = []
pages_list = []
for counter, permission in enumerate(permissions):
if permission.page.name not in pages_list:
pages_list.append(permission.page.name)
structure.append(
{f'{permission.page.name}': itertools.chain(*list(
permission.page.permission_page.all().values_list('name')))
})
@@ -52,6 +58,8 @@ class PermissionSerializer(serializers.ModelSerializer):
class RoleSerializer(serializers.ModelSerializer):
""" Serialize roles of user """
class Meta:
model = Role
fields = [
@@ -78,6 +86,8 @@ class RoleSerializer(serializers.ModelSerializer):
class UserRelationSerializer(serializers.ModelSerializer):
""" Serialize relations of user like: organizations, roles, permissions """
class Meta:
model = UserRelations
fields = [
@@ -108,11 +118,9 @@ class UserRelationSerializer(serializers.ModelSerializer):
def update(self, instance, validated_data):
""" update user relation object """
if validated_data.get('role'):
instance.role = Role.objects.get(id=validated_data.get('role', instance.role))
instance.role = validated_data.get('role', instance.role.id)
if validated_data.get('organization'):
instance.organization = Organization.objects.get(
id=validated_data.get('organization', instance.organization)
)
instance.organization = validated_data.get('organization', instance.organization.id)
instance.save()
instance.permissions.clear()
instance.permissions.add(*(validated_data.get('permissions', instance.permissions)))