fix permissions by page
This commit is contained in:
@@ -6,6 +6,7 @@ from apps.authorization.models import (
|
|||||||
)
|
)
|
||||||
from apps.authentication.api.v1.serializers import serializer as auth_serializer
|
from apps.authentication.api.v1.serializers import serializer as auth_serializer
|
||||||
from apps.authentication.models import Organization
|
from apps.authentication.models import Organization
|
||||||
|
import itertools
|
||||||
|
|
||||||
|
|
||||||
class PermissionSerializer(serializers.ModelSerializer):
|
class PermissionSerializer(serializers.ModelSerializer):
|
||||||
@@ -46,7 +47,17 @@ class RoleSerializer(serializers.ModelSerializer):
|
|||||||
"""
|
"""
|
||||||
representation = super().to_representation(instance)
|
representation = super().to_representation(instance)
|
||||||
representation['type'] = auth_serializer.OrganizationTypeSerializer(instance.type).data
|
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
|
return representation
|
||||||
|
|
||||||
|
|
||||||
@@ -76,9 +87,11 @@ class UserRelationSerializer(serializers.ModelSerializer):
|
|||||||
for permission in permissions:
|
for permission in permissions:
|
||||||
if permission.page.name not in pages.keys():
|
if permission.page.name not in pages.keys():
|
||||||
pages.update({
|
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
|
return representation
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user