Files
RasadDam_Backend/apps/core/permissions.py

49 lines
1.7 KiB
Python

from rest_framework.permissions import BasePermissionMetaclass
from apps.authorization import models as authorize_models
import itertools
import typing
class BasePermission(metaclass=BasePermissionMetaclass):
"""
A base class from which all permission classes should inherit.
"""
def get_user_permissions(self, request, view) -> typing.Dict: # noqa
"""
get permissions by role and user specified permissions
combined permissions and returns a list
"""
organization_type = []
permissions_info = {}
relations = request.user.user_relation.select_related()
for relation in relations:
role_permissions = list(itertools.chain(*[
list(item.values()) for item in
list(relation.role.permissions.prefetch_related().values('name'))
]
))
user_permissions = list(itertools.chain(*[
list(item.values()) for item in
list(relation.permissions.prefetch_related().values('name'))])
)
result = list(set(role_permissions + user_permissions))
organization_type.append(relation.organization.type.key)
permissions_info['organization_type'] = organization_type
permissions_info['permissions'] = result
print(result, permissions_info)
return permissions_info
def has_permission(self, request, view): # noqa
"""
Return `True` if permission is granted, `False` otherwise.
"""
return True
def has_object_permission(self, request, view, obj): # noqa
"""
Return `True` if permission is granted, `False` otherwise.
"""
return True