diff --git a/apps/authorization/api/v1/serializers.py b/apps/authorization/api/v1/serializers.py index 177266b..cf65a54 100644 --- a/apps/authorization/api/v1/serializers.py +++ b/apps/authorization/api/v1/serializers.py @@ -66,20 +66,29 @@ class PermissionSerializer(serializers.ModelSerializer): grouped = defaultdict(set) modifier_states = defaultdict(set) - + # {'name': permission.name, 'modify_stat': permission.modify_state} for permission in permissions: if getattr(permission, 'is_active', True): page_name = getattr(permission.page, 'name', None) if page_name: grouped[page_name].add(permission.name) + grouped[f'modify_state_{page_name}'].add(permission.modify_state) modifier_states[page_name].add(permission.modify_state) + structure = [] - structure = [ - { + for page, access in grouped.items(): + if page.startswith('modify_state_'): + continue + + modify_states = grouped.get(f'modify_state_{page}', set()) + + if False not in modify_states: + continue + + structure.append({ 'page_name': page, - 'page_access': sorted(list(access)) - } for page, access in grouped.items() - ] + 'page_access': sorted(list(access)), + }) return structure