Utilities for defining fine-grained permissions in the Django Rest Framework based API views
Project description
DRF fancy permissions
About
This package provides utilities for defining fine-grained permissions in the Django Rest Framework based API views.
Install
pip install drf-fancy-permissions
Usage
Use the fancy_permissions.model_action_permission_factory, fancy_permissions.object_action_permission_factory and fancy_permissions.parent_object_action_permission_factory functions in order to define authorization rules.
from rest_framework.mixins import (
CreateModelMixin,
ListModelMixin,
RetrieveModelMixin,
UpdateModelMixin,
)
from rest_framework.viewsets import ViewSet
from fancy_permissions import (
model_action_permission_factory,
object_action_permission_factory,
parent_object_action_permission_factory,
)
class SomeViewSet(
CreateModelMixin,
RetrieveModelMixin,
UpdateModelMixin,
ListModelMixin,
ViewSet,
):
serializer_class = SomeModelSerializer
permission_classes = [
model_action_permission_factory(
create=['some_app.add_somemodel'],
retrieve=None, # open for all users
partial_update=['some_app.change_somemodel'],
list=None, # open for all users,
),
object_action_permission_factory(
create=None,
retrieve=None,
partial_update=[lambda obj, user: obj.status == 'SOME_STATUS' and not obj.has_something_meaningful()],
list=None,
close=None,
),
parent_object_action_permission_factory(
create=[lambda obj, user: obj.can_create_children()],
retrieve=None,
partial_update=[lambda obj, user: obj.can_update_children()],
list=None,
close=None,
),
]
queryset = SomeModel.objects.all()
License
The Django Wicked Historian package is licensed under the FreeBSD License.
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
Close
Hashes for drf-fancy-permissions-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15fd5f05544c791575cf3ca7a360e64e3c4726c4184969d47224ca4fda944685 |
|
MD5 | a12a030aad42ce1e7946cecf8278b132 |
|
BLAKE2b-256 | b7da181bb413485dd64fd44650fe853503234c435acc9bad290b2ee5c2f6318c |
Close
Hashes for drf_fancy_permissions-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c64fe27eecec5056b7e958f194643db14e61f794a8a4ff322a9bc154c7303526 |
|
MD5 | ba166b6a233191046547f7a9f74953a5 |
|
BLAKE2b-256 | f6f2449a0070dbd110dbfa9dcb6d461c0510eb25aa1c4f999d582660bc774602 |