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.
Source Distribution
Built Distribution
File details
Details for the file django-rest-action-permissions-2.0.0.tar.gz
.
File metadata
- Download URL: django-rest-action-permissions-2.0.0.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ffd33367a2e836f1e5c7b9bda00d82095ac10cbc62afbe9aea19b5fb8fc51a3f |
|
MD5 | 6c8baffc90efbd2bd5e56ba644b9eead |
|
BLAKE2b-256 | 278d30034b1fac43ce57fa88acba2d1b050bcb6c06fb4c2a20e7cf4ea5aeb12f |
File details
Details for the file django_rest_action_permissions-2.0.0-py2.py3-none-any.whl
.
File metadata
- Download URL: django_rest_action_permissions-2.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 910736301849f5d3fe22087a8514ce5ef0734ff8991f424a6fb4fc2414d14103 |
|
MD5 | 64cb757a46a46d3129dfb082428277e1 |
|
BLAKE2b-256 | f8db7250df7ed5ef0af5236ad826cedccfd1d910bd8faaa1b37cea19ec58d86b |