Action based permissions for Django REST Framework.
Project description
Django REST Action Permissions
django-rest-action-permissions allows you to define permissions for each action provided by your ViewSet class.
Installation
Install using pip:
$ pip install django-rest-action-permissions
Usage
This library lets you define permissions like so:
# permissions.py from rest_framework.permissions import ( AllowAny, BasePermission, IsAdminUser, IsAuthenticated ) from rest_action_permissions.permissions import ActionPermission class IsTweetOwner(BasePermission): def has_object_permission(self, request, view, obj): return obj.owner == request.user class TweetPermission(ActionPermission): # The admin user has all permissions. enough_perms = IsAdminUser # Corresponding permissions for each action. create_perms = IsAuthenticated retrieve_perms = AllowAny list_perms = AllowAny update_perms = IsTweetOwner delete_perms = IsTweetOwner retweet_perms = IsAuthenticated undo_retweet_perms = IsAuthenticated # General read/write permissions. # Used if corresponding action permission hasn't been specified. read_perms = AllowAny write_perms = IsAuthenticated & IsTweetOwner
Corresponding ViewSet for the permissions defined above:
# views.py from rest_framework import viewsets from rest_framework.decorators import detail_route from .models import Tweet from .permissions import TweetPermission from .serializers import TweetSerializer class TweetViewSet(viewsets.ModelViewSet): queryset = Tweet.objects.all() serializer_class = TweetSerializer permission_classes = (TweetPermission, ) def perform_create(self, serializer): serializer.save(owner=self.request.user) @detail_route(methods=['POST']) def retweet(self, request, *args, **kwargs): ... @detail_route(methods=['POST']) def undo_retweet(self, request, *args, **kwargs): ...
Credits
The interface of this library was inspired by taiga project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size django_rest_action_permissions-2.0.0-py2.py3-none-any.whl (5.1 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size django-rest-action-permissions-2.0.0.tar.gz (4.9 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for django_rest_action_permissions-2.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 910736301849f5d3fe22087a8514ce5ef0734ff8991f424a6fb4fc2414d14103 |
|
MD5 | 64cb757a46a46d3129dfb082428277e1 |
|
BLAKE2-256 | f8db7250df7ed5ef0af5236ad826cedccfd1d910bd8faaa1b37cea19ec58d86b |
Close
Hashes for django-rest-action-permissions-2.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ffd33367a2e836f1e5c7b9bda00d82095ac10cbc62afbe9aea19b5fb8fc51a3f |
|
MD5 | 6c8baffc90efbd2bd5e56ba644b9eead |
|
BLAKE2-256 | 278d30034b1fac43ce57fa88acba2d1b050bcb6c06fb4c2a20e7cf4ea5aeb12f |