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.
Release files for drf-fancy-permissions 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| drf-fancy-permissions-1.0.0.tar.gz | 3.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| drf_fancy_permissions-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.6 kB
Release files / drf-fancy-permissions-1.0.0.tar.gz
| Download URL | drf-fancy-permissions-1.0.0.tar.gz |
|---|---|
| Size | 3.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
15fd5f05544c791575cf3ca7a360e64e3c4726c4184969d47224ca4fda944685
|
|
BLAKE2b-256 checksum How to use checksums |
b7da181bb413485dd64fd44650fe853503234c435acc9bad290b2ee5c2f6318c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10
|
Release files / drf_fancy_permissions-1.0.0-py3-none-any.whl
| Download URL | drf_fancy_permissions-1.0.0-py3-none-any.whl |
|---|---|
| Size | 3.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c64fe27eecec5056b7e958f194643db14e61f794a8a4ff322a9bc154c7303526
|
|
BLAKE2b-256 checksum How to use checksums |
f6f2449a0070dbd110dbfa9dcb6d461c0510eb25aa1c4f999d582660bc774602
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10
|