{ "info": { "author": "Denis Orehovsky", "author_email": "denis.orehovsky@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "\n.. image:: https://travis-ci.org/apirobot/django-rest-action-permissions.svg?branch=master\n :target: https://travis-ci.org/apirobot/django-rest-action-permissions\n\n.. image:: https://codecov.io/gh/apirobot/django-rest-action-permissions/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/apirobot/django-rest-action-permissions\n\n.. image:: https://badge.fury.io/py/django-rest-action-permissions.svg\n :target: https://badge.fury.io/py/django-rest-action-permissions\n\n\n==============================\nDjango REST Action Permissions\n==============================\n\n``django-rest-action-permissions`` allows you to define permissions for each action provided by your ViewSet class.\n\n\nInstallation\n------------\n\nInstall using pip:\n\n.. code-block:: bash\n\n $ pip install django-rest-action-permissions\n\n\nUsage\n-----\n\nThis library lets you define permissions like so:\n\n.. code-block:: python\n\n # permissions.py\n from rest_framework.permissions import (\n AllowAny, BasePermission, IsAdminUser, IsAuthenticated\n )\n from rest_action_permissions.permissions import ActionPermission\n\n\n class IsTweetOwner(BasePermission):\n\n def has_object_permission(self, request, view, obj):\n return obj.owner == request.user\n\n\n class TweetPermission(ActionPermission):\n # The admin user has all permissions.\n enough_perms = IsAdminUser\n\n # Corresponding permissions for each action.\n create_perms = IsAuthenticated\n retrieve_perms = AllowAny\n list_perms = AllowAny\n update_perms = IsTweetOwner\n delete_perms = IsTweetOwner\n retweet_perms = IsAuthenticated\n undo_retweet_perms = IsAuthenticated\n\n # General read/write permissions.\n # Used if corresponding action permission hasn't been specified.\n read_perms = AllowAny\n write_perms = IsAuthenticated & IsTweetOwner\n\n\nCorresponding ViewSet for the permissions defined above:\n\n.. code-block:: python\n\n # views.py\n from rest_framework import viewsets\n from rest_framework.decorators import detail_route\n from .models import Tweet\n from .permissions import TweetPermission\n from .serializers import TweetSerializer\n\n\n class TweetViewSet(viewsets.ModelViewSet):\n queryset = Tweet.objects.all()\n serializer_class = TweetSerializer\n permission_classes = (TweetPermission, )\n\n def perform_create(self, serializer):\n serializer.save(owner=self.request.user)\n\n @detail_route(methods=['POST'])\n def retweet(self, request, *args, **kwargs):\n ...\n\n @detail_route(methods=['POST'])\n def undo_retweet(self, request, *args, **kwargs):\n ...\n\n\nCredits\n-------\n\nThe interface of this library was inspired by `taiga `_ project.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/apirobot/django-rest-action-permissions", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "django-rest-action-permissions", "package_url": "https://pypi.org/project/django-rest-action-permissions/", "platform": "", "project_url": "https://pypi.org/project/django-rest-action-permissions/", "project_urls": { "Homepage": "https://github.com/apirobot/django-rest-action-permissions" }, "release_url": "https://pypi.org/project/django-rest-action-permissions/2.0.0/", "requires_dist": [ "django", "djangorestframework", "six" ], "requires_python": "", "summary": "Action based permissions for Django REST Framework.", "version": "2.0.0" }, "last_serial": 5009246, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "ac1734773f8e57b4d17b251db34c7aed", "sha256": "ac5a61fdf6e3027177392d8306e4dbd87ab4a03d299265ce20cbb2ad622aac5c" }, "downloads": -1, "filename": "django_rest_action_permissions-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ac1734773f8e57b4d17b251db34c7aed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5747, "upload_time": "2018-05-30T09:40:48", "url": "https://files.pythonhosted.org/packages/ad/43/e2622380fb3d3af7fb01ba17e6cf79ec1c762b5cda88bbaa4144ffd86c83/django_rest_action_permissions-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a009c3c29a313aad2eb565bd97e58073", "sha256": "7ffd5eb98ef7d092b8413f8fa21f032454ac248868b12b011016ce25c7cfb587" }, "downloads": -1, "filename": "django-rest-action-permissions-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a009c3c29a313aad2eb565bd97e58073", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5927, "upload_time": "2018-05-30T09:40:50", "url": "https://files.pythonhosted.org/packages/68/2f/5e0012eca1efb436f24bf7e0d0cf7f67562ee98f15795333a1fc0fb2932f/django-rest-action-permissions-1.0.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "64cb757a46a46d3129dfb082428277e1", "sha256": "910736301849f5d3fe22087a8514ce5ef0734ff8991f424a6fb4fc2414d14103" }, "downloads": -1, "filename": "django_rest_action_permissions-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "64cb757a46a46d3129dfb082428277e1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5134, "upload_time": "2019-03-31T11:41:32", "url": "https://files.pythonhosted.org/packages/f8/db/7250df7ed5ef0af5236ad826cedccfd1d910bd8faaa1b37cea19ec58d86b/django_rest_action_permissions-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c8baffc90efbd2bd5e56ba644b9eead", "sha256": "ffd33367a2e836f1e5c7b9bda00d82095ac10cbc62afbe9aea19b5fb8fc51a3f" }, "downloads": -1, "filename": "django-rest-action-permissions-2.0.0.tar.gz", "has_sig": false, "md5_digest": "6c8baffc90efbd2bd5e56ba644b9eead", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4874, "upload_time": "2019-03-31T11:41:33", "url": "https://files.pythonhosted.org/packages/27/8d/30034b1fac43ce57fa88acba2d1b050bcb6c06fb4c2a20e7cf4ea5aeb12f/django-rest-action-permissions-2.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "64cb757a46a46d3129dfb082428277e1", "sha256": "910736301849f5d3fe22087a8514ce5ef0734ff8991f424a6fb4fc2414d14103" }, "downloads": -1, "filename": "django_rest_action_permissions-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "64cb757a46a46d3129dfb082428277e1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5134, "upload_time": "2019-03-31T11:41:32", "url": "https://files.pythonhosted.org/packages/f8/db/7250df7ed5ef0af5236ad826cedccfd1d910bd8faaa1b37cea19ec58d86b/django_rest_action_permissions-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c8baffc90efbd2bd5e56ba644b9eead", "sha256": "ffd33367a2e836f1e5c7b9bda00d82095ac10cbc62afbe9aea19b5fb8fc51a3f" }, "downloads": -1, "filename": "django-rest-action-permissions-2.0.0.tar.gz", "has_sig": false, "md5_digest": "6c8baffc90efbd2bd5e56ba644b9eead", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4874, "upload_time": "2019-03-31T11:41:33", "url": "https://files.pythonhosted.org/packages/27/8d/30034b1fac43ce57fa88acba2d1b050bcb6c06fb4c2a20e7cf4ea5aeb12f/django-rest-action-permissions-2.0.0.tar.gz" } ] }