A simple way to manage object permissions in drf.
Project description
Permission Manager for django rest framework
Use permission_manager for django rest framework.
Full documentation on read the docs.
Install
pip install permission-manager-drf
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.2.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e46f5b6f32c8a1a71f4ced63ca4f31a17b66d11059045b5c6cc65a2dfcf8f7b |
|
MD5 | 779e14128c0ba1f1c2c684a81b8815ff |
|
BLAKE2b-256 | df3ac5624b1a24e4aabfa591e1539390a74ae8c203bab1da9833946f7cfec089 |
Close
Hashes for permission_manager_drf-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a86f8e1f109cea59fd3611dfbcdc60c8c741b7c599fc668a5b248d941a1cd09 |
|
MD5 | c3b3b369faf831066fffae9da706e79e |
|
BLAKE2b-256 | 6ccb4d0ad7f58faf471ac212cdc7baeda8309ec92f2c6881158c5562dac3d47d |