{ "info": { "author": "Andrey Bogoyavlensky", "author_email": "abogoyavlensky@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "drf-action-permissions\n===\n\n| Release | CI | Coverage |\n|---------|----|----------|\n|[![pypi](https://img.shields.io/pypi/v/drf-action-permissions.svg)](https://pypi.python.org/pypi/drf-action-permissions)|[![build](https://img.shields.io/travis/com/abogoyavlensky/drf-action-permissions.svg)](https://travis-ci.com/abogoyavlensky/drf-action-permissions)|[![codecov](https://img.shields.io/codecov/c/github/abogoyavlensky/drf-action-permissions.svg)](https://codecov.io/gh/abogoyavlensky/drf-action-permissions)|\n\nFlexible ability to add action permissions on view level\nfor Django REST framework. Permissions can be as complex or simple as you want.\nIt can be a plain string or a function.\n\n## Requirements\n\n- Python (3.6+)\n- Django (1.11.x, 2.0+)\n- Django REST Framework (3.7+)\n\n## Installation\n\n```bash\n$ pip install drf-common-exceptions\n```\n\nYou cound define common permissions class for whole project:\n\n```\nREST_FRAMEWORK = {\n ...\n \"DEFAULT_PERMISSION_CLASSES\": (\n \"drf_action_permissions.DjangoActionPermissions\",\n )\n ...\n}\n```\n\nOr use it just for particular view or viewset in combination with others:\n\n```python\nfrom rest_framework.permissions import IsAuthenticated\nfrom drf_action_permissions import DjangoActionPermissions\n\nclass MyView(APIView):\n permission_classes = (IsAuthenticated, DjangoActionPermissions)\n perms_map_action = {\n 'retrieve': ['users.view_user'],\n }\n```\n\n## Usage examples\n\nPermission as string template or plain string:\n```python\nclass PostViewSet(ModelViewSet):\n permission_classes = (IsAuthenticated, DjangoActionPermissions)\n perms_map_action = {\n 'likes': ['%(app_label)s.view_%(model_name)s_list',\n '%(app_label)s.view_like_list'],\n }\n```\n\nPermission as function with current object access:\n```python\ndef can_view_application(user, _view, obj):\n \"\"\"Can view only archived applications.\"\"\"\n if obj.is_archived:\n return user.has_perm('applications.view_archived_application')\n return user.has_perm('applications.view_application')\n\n\nclass ApplicationView(ModelViewSet):\n permission_classes = (IsAuthenticated, DjangoActionPermissions)\n perms_map_action_obj = {\n 'retrieve': [can_view_application],\n }\n```\n\n\n## Development\n\nInstall poetry and requirements:\n\n```bash\n$ curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python\n$ python3 -m venv path/to/venv\n$ source path/to/venv/bin/activate\n$ poetry install\n```\n\nRun main commands:\n\n```bash\n$ make test\n$ make watch\n$ make clean\n$ make lint\n```\n\nPublish to pypi by default patch version:\n```bash\n$ make publish\n```\n\nor any level you want:\n```bash\n$ make publish minor\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/abogoyavlensky/drf-action-permissions", "keywords": "permissions,django,djangorestframework,drf,viewset", "license": "MIT", "maintainer": "Andrey Bogoyavlensky", "maintainer_email": "abogoyavlensky@gmail.com", "name": "drf-action-permissions", "package_url": "https://pypi.org/project/drf-action-permissions/", "platform": "", "project_url": "https://pypi.org/project/drf-action-permissions/", "project_urls": { "Documentation": "https://github.com/abogoyavlensky/drf-action-permissions/blob/master/README.md", "Homepage": "https://github.com/abogoyavlensky/drf-action-permissions", "Repository": "https://github.com/abogoyavlensky/drf-action-permissions" }, "release_url": "https://pypi.org/project/drf-action-permissions/0.1.0/", "requires_dist": [ "djangorestframework (>=3.7,<4.0)", "django (>=1.11)" ], "requires_python": ">=3.6,<4.0", "summary": "Flexible action level permissions for Django REST framework", "version": "0.1.0" }, "last_serial": 4891461, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "32b608f03b79c88520ac3921c3760caa", "sha256": "6cd46d0c8e25ae33eaecbfef2ccb89143bad6483e731edc003c9f090eb5eaaee" }, "downloads": -1, "filename": "drf_action_permissions-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "32b608f03b79c88520ac3921c3760caa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 6946, "upload_time": "2019-03-03T18:05:25", "url": "https://files.pythonhosted.org/packages/ab/99/d5deb5e43f15ac301e0008bc5456934e558ce0e975504a7db1bd36f44a0b/drf_action_permissions-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1aa83afef3f4e7721dee71d497aef243", "sha256": "611ed66e3d0c4dd9a74ae1fd417b814dd2c4ab53b414b4e85b8043c97b7b6af0" }, "downloads": -1, "filename": "drf-action-permissions-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1aa83afef3f4e7721dee71d497aef243", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 3897, "upload_time": "2019-03-03T18:05:23", "url": "https://files.pythonhosted.org/packages/99/06/7725fe53620bd46c38914900b6ac1c3d05a9a8f02289be0e190e8d79a3fb/drf-action-permissions-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "32b608f03b79c88520ac3921c3760caa", "sha256": "6cd46d0c8e25ae33eaecbfef2ccb89143bad6483e731edc003c9f090eb5eaaee" }, "downloads": -1, "filename": "drf_action_permissions-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "32b608f03b79c88520ac3921c3760caa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 6946, "upload_time": "2019-03-03T18:05:25", "url": "https://files.pythonhosted.org/packages/ab/99/d5deb5e43f15ac301e0008bc5456934e558ce0e975504a7db1bd36f44a0b/drf_action_permissions-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1aa83afef3f4e7721dee71d497aef243", "sha256": "611ed66e3d0c4dd9a74ae1fd417b814dd2c4ab53b414b4e85b8043c97b7b6af0" }, "downloads": -1, "filename": "drf-action-permissions-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1aa83afef3f4e7721dee71d497aef243", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 3897, "upload_time": "2019-03-03T18:05:23", "url": "https://files.pythonhosted.org/packages/99/06/7725fe53620bd46c38914900b6ac1c3d05a9a8f02289be0e190e8d79a3fb/drf-action-permissions-0.1.0.tar.gz" } ] }