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.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d62681bc0a9ae1bbf75c034642e352a0a516417d39c7e308c469da7c79a7824d |
|
MD5 | bf1f5f917c3934f4340585818935cfe0 |
|
BLAKE2b-256 | 7882e04511366a53fcf29f376ae255b6f56339ce93667e8ba978115a68425ff9 |
Close
Hashes for permission_manager_drf-0.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6adacb2abbfd03b8bf3952e5b937dfafeeb8fcf46344684942ddb57005bc935 |
|
MD5 | 6b6f91e1cb081a00132ec084b2c10bb3 |
|
BLAKE2b-256 | a915600593a6a121c826b1cef94d6c6e98a8bc4d849bf1e26e625a521935d526 |