From 8a2b2ce905e1b2ee4c56f4db342472f1cf534bc2 Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Sun, 1 Jun 2025 14:01:40 +0330 Subject: [PATCH] fix permissions by page --- apps/authorization/api/v1/serializers.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/authorization/api/v1/serializers.py b/apps/authorization/api/v1/serializers.py index f60ec15..329d0e5 100644 --- a/apps/authorization/api/v1/serializers.py +++ b/apps/authorization/api/v1/serializers.py @@ -6,6 +6,7 @@ from apps.authorization.models import ( ) from apps.authentication.api.v1.serializers import serializer as auth_serializer from apps.authentication.models import Organization +import itertools class PermissionSerializer(serializers.ModelSerializer): @@ -46,7 +47,17 @@ class RoleSerializer(serializers.ModelSerializer): """ representation = super().to_representation(instance) representation['type'] = auth_serializer.OrganizationTypeSerializer(instance.type).data - representation['permissions'] = PermissionSerializer(instance.permissions, many=True).data + if instance.permissions: # noqa + permissions = instance.permissions.all() + pages = {} + for permission in permissions: + if permission.page.name not in pages.keys(): + pages.update({ + f'{permission.page.name}': itertools.chain(*list( + (permission.page.permission_page.all().values_list('name')) + )) + }) + representation['permissions'] = pages return representation @@ -76,9 +87,11 @@ class UserRelationSerializer(serializers.ModelSerializer): for permission in permissions: if permission.page.name not in pages.keys(): pages.update({ - f'{permission.page.name}': permission.page.permission_page.all().values('name') + f'{permission.page.name}': itertools.chain(*list( + (permission.page.permission_page.all().values_list('name')) + )) }) - representation['perms'] = pages + representation['permissions'] = pages return representation