A simple way to manage object permissions in drf.
Project description
Permission Manager for django rest framework
Use permission_manager for django rest framework.
Example
from django.db import models
from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ModelViewSet
from rest_framework.decorators import action
from permission_manager_drf import DRFPermissionManager, ManagerPermission
from permission_manager import PermissionResult
# Define permission manager
class SomeModelPermissionManager(DRFPermissionManager):
def has_create_permission(self) -> bool:
return self.user.is_staff
def has_update_permission(self) -> bool:
return self.user.is_staff
def has_delete_permission(self) -> bool:
return self.user.is_staff
def has_view_permission(self) -> bool:
return True
def has_list_permission(self) -> bool:
return True
def has_custom_permission(self) -> bool:
return PermissionResult(
message="You can't do it",
value=self.user.is_staff,
)
# Define model with permission manager attribute
class SomeModel(models.Model):
permission_manager = SomeModelPermissionManager
...
# ViewSet
class TestModelViewSet(ModelViewSet):
permission_classes = [IsAuthenticated, ManagerPermission]
...
@action(detail=True)
def custom(self, request, **kwargs):
...
That's all. Now every drf action will be checked by the permission manager.
Also, you can use the serializer field for retrieve permissions you need.
from permission_manager_drf import PermissionField
from rest_framework.serializers import ModelSerializer
class SomeModelSerializer(ModelSerializer):
permissions = PermissionField(actions=('view', 'custom'),)
...
"""
Example output:
{
...,
'permissions': {
'view': {
'allow': True,
'messages': None,
},
'custom': {
'allow': False,
'messages': ["You can't do it"],
},
}
}
"""
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for permission_manager_drf-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ea6cb24dd235bbb580ae62f57be1f69f908382d7a7c58372bf9a1cf88b74673 |
|
MD5 | 0c372594b0c7029a64c0ae37225f6a7b |
|
BLAKE2b-256 | 442c4bc5fd4bea25124040a5a228816e7ee5bace2fb85251acdc5ac8df76b205 |
Close
Hashes for permission_manager_drf-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04f0d589dfa73d73f7a8a3fa6d2d8102c13a8aa3de655b7df8c94ed0f69a0090 |
|
MD5 | a99268783fb01c65ac1313c5b01e0552 |
|
BLAKE2b-256 | 753d42213d667941a4a0f86a10744adc6bc554ee4f752cbcff3edb1faaa0e448 |