{ "info": { "author": "Allisson Azevedo", "author_email": "allisson@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "django-rest-framework-role-filters\n==================================\n\n.. image:: https://travis-ci.org/allisson/django-rest-framework-role-filters.svg?branch=master\n :target: https://travis-ci.org/allisson/django-rest-framework-role-filters\n\n.. image:: https://codecov.io/gh/allisson/django-rest-framework-role-filters/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/allisson/django-rest-framework-role-filters\n\n.. image:: https://img.shields.io/pypi/v/djangorestframework-role-filters.svg\n :target: https://pypi.python.org/pypi/djangorestframework-role-filters\n\n.. image:: https://img.shields.io/github/license/allisson/django-rest-framework-role-filters.svg\n :target: https://pypi.python.org/pypi/djangorestframework-role-filters\n\n.. image:: https://img.shields.io/pypi/pyversions/djangorestframework-role-filters.svg\n :target: https://pypi.python.org/pypi/djangorestframework-role-filters\n\nHow to install\n--------------\n\n.. code:: shell\n\n pip install djangorestframework-role-filters\n\nWhy i wrote this project?\n-------------------------\n\nI want work easily with roles without multiple ifs in code\n\nHow to use\n----------\n\nCreate role_filters.py with your roles definitions\n\n.. code:: python\n\n from rest_framework_role_filters.role_filters import RoleFilter\n\n from .serializers import PostSerializerForUser\n\n\n class AdminRoleFilter(RoleFilter):\n role_id = 'admin'\n\n\n class UserRoleFilter(RoleFilter):\n role_id = 'user'\n\n def get_allowed_actions(self, request, view, obj=None):\n # This example returns same list both for \"global permissions\" check,\n # and for \"object\" permissions, but different list may be returned\n # if `obj` argument is not None, and this list will be used to check\n # if action is allowed during call to `ViewSet.check_object_permissions`\n return ['create', 'list', 'retrieve', 'update', 'partial_update']\n\n def get_queryset(self, request, view, queryset):\n queryset = queryset.filter(user=request.user)\n return queryset\n\n def get_serializer_class(self, request, view):\n return PostSerializerForUser\n\n def get_serializer(self, request, view, serializer_class, *args, **kwargs):\n fields = (\n 'body',\n 'created_at',\n 'id',\n 'serializer_name',\n 'title',\n 'updated_at',\n 'user',\n )\n return serializer_class(*args, fields=fields, **kwargs)\n\nCreate viewset and override get_role_id method\n\n.. code:: python\n\n from rest_framework_role_filters.role_filters import RoleFilterGroup\n from rest_framework_role_filters.viewsets import RoleFilterModelViewSet\n\n from .models import Post\n from .role_filters import AdminRoleFilter, UserRoleFilter\n from .serializers import PostSerializer\n\n\n class PostViewSet(RoleFilterModelViewSet):\n role_filter_group = RoleFilterGroup(role_filters=[AdminRoleFilter(), UserRoleFilter()])\n queryset = Post.objects.all()\n serializer_class = PostSerializer\n\n def get_role_id(self, request):\n return request.user.role.role_id\n\n def perform_create(self, serializer):\n serializer.save(user=self.request.user)\n\nIf role_id is 'admin':\n\n* All actions are allowed\n* The default queryset is returned - :code:`Post.objects.all()`\n* The default :code:`serializer_class` is used - :code:`PostSerializer`\n* The default viewset :code:`get_serializer` method is used\n\nIf role_id is 'user':\n\n* Only actions 'create', 'list', 'retrieve', 'update', 'partial_update' are allowed\n* The queryset is filtered by user\n* The :code:`serializer_class=PostSerializerForUser` is used\n* The serializer initializing with :code:`fields` kwargs (e.g. for modified serializer as described in\n `DRF: Dynamically modifying fields `_)\n\nCheck `testapp example `_ code implementation.\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/allisson/django-rest-framework-role-filters", "keywords": "djangorestframework rest role permission", "license": "", "maintainer": "", "maintainer_email": "", "name": "djangorestframework-role-filters", "package_url": "https://pypi.org/project/djangorestframework-role-filters/", "platform": "", "project_url": "https://pypi.org/project/djangorestframework-role-filters/", "project_urls": { "Homepage": "https://github.com/allisson/django-rest-framework-role-filters" }, "release_url": "https://pypi.org/project/djangorestframework-role-filters/0.3.0/", "requires_dist": [ "djangorestframework (>=3.5.4)" ], "requires_python": "", "summary": "django-rest-framework-role-filters", "version": "0.3.0" }, "last_serial": 4712217, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "c1b10e84307fca3179f660c1a9abcecf", "sha256": "4345a1d3eca5aaa68b30ac5c1891bf8b65243d57affa3e5a36faf54d4300857a" }, "downloads": -1, "filename": "djangorestframework_role_filters-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c1b10e84307fca3179f660c1a9abcecf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5480, "upload_time": "2018-02-05T14:24:43", "url": "https://files.pythonhosted.org/packages/b2/5a/f41548689db7197bc24392aed07d1c9e4cf7d72de9bb7d04c9926d7ee11e/djangorestframework_role_filters-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a71c086d08a1bedd64443d33c5132d55", "sha256": "e7ecbacb6a3515391e18fc8b8d7f6e2bc8d82c9d9a9f6b9911bc88e13a78b5b8" }, "downloads": -1, "filename": "djangorestframework-role-filters-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a71c086d08a1bedd64443d33c5132d55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4025, "upload_time": "2018-02-05T14:24:45", "url": "https://files.pythonhosted.org/packages/22/22/6999c9e43ec3d8a2c263ff4978e323e19d80a61171280e0b007f9b80affb/djangorestframework-role-filters-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b996cdd2fbe1841643b64a14e234d621", "sha256": "61919b10236797f6ae7fb3ac1058f4b971687ee03655ce45e2c742cde62d6080" }, "downloads": -1, "filename": "djangorestframework_role_filters-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b996cdd2fbe1841643b64a14e234d621", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5986, "upload_time": "2018-02-13T12:18:29", "url": "https://files.pythonhosted.org/packages/27/e0/37a0c840388a6e82e33ebc354a6f1442c8a615dae3663b4ebdd90d289c13/djangorestframework_role_filters-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df8a285717345470c0d9219cf555ee9a", "sha256": "848ec24b5b29dc754b9f759fd0c34fdb2b58b70b819a47cb1b082a5f156a3f83" }, "downloads": -1, "filename": "djangorestframework-role-filters-0.2.0.tar.gz", "has_sig": false, "md5_digest": "df8a285717345470c0d9219cf555ee9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4380, "upload_time": "2018-02-13T12:18:32", "url": "https://files.pythonhosted.org/packages/00/a7/a3396790fe353427e1bf30e16d13c73c02767f319e3286f5fd9a7b1dba7d/djangorestframework-role-filters-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "749790e38e813e0d2abdf55eaa3999ad", "sha256": "ae88b33f8337906b892b042199da943c6c9b4be136546e561c194e81b5a36d9c" }, "downloads": -1, "filename": "djangorestframework_role_filters-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "749790e38e813e0d2abdf55eaa3999ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3938, "upload_time": "2018-04-30T12:12:00", "url": "https://files.pythonhosted.org/packages/70/dd/41e2b839f61db18985550305000c2f544e146a1ef257316338ad969c9c53/djangorestframework_role_filters-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2852ba37005d83bf0d53c6ac3cd3b621", "sha256": "0b38fedcbca153fc2519ac6188381a7fe70177a0ac061ef69370342d479c7734" }, "downloads": -1, "filename": "djangorestframework-role-filters-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2852ba37005d83bf0d53c6ac3cd3b621", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4431, "upload_time": "2018-04-30T12:12:01", "url": "https://files.pythonhosted.org/packages/45/60/978d8f1b2a54d97413c600c8de25bcaeadb592286448d6354b7a03b03eea/djangorestframework-role-filters-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "399c62d752e4ee7773bb99bdd5dd85f7", "sha256": "1661a8c33b9f23b689a9b1957280a81ea7bc6b41b8565e36828e7a5bfe5d15fc" }, "downloads": -1, "filename": "djangorestframework_role_filters-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "399c62d752e4ee7773bb99bdd5dd85f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3957, "upload_time": "2018-09-03T23:46:53", "url": "https://files.pythonhosted.org/packages/c8/08/61071e6632dc423d977b00a970989a98f5b53e758015d4dfe56587360306/djangorestframework_role_filters-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "338a116a570f9ecbfe05732e8cc8d1a0", "sha256": "1981dba2c2c05e5628b872601ab159a20254a5af6b525b58b7d61a5a3df63c2e" }, "downloads": -1, "filename": "djangorestframework-role-filters-0.2.2.tar.gz", "has_sig": false, "md5_digest": "338a116a570f9ecbfe05732e8cc8d1a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4462, "upload_time": "2018-09-03T23:46:54", "url": "https://files.pythonhosted.org/packages/1e/a5/5b4e3b1c76fb33be6a16f63cfd95a166da521dafc7955099b75656d7c2e3/djangorestframework-role-filters-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "747b86ea26b5266f68423915cf798ecd", "sha256": "fd707f243aa007eecf73e330ba1f95099aec2d89f2da11ea31aabac148aad4f7" }, "downloads": -1, "filename": "djangorestframework_role_filters-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "747b86ea26b5266f68423915cf798ecd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4817, "upload_time": "2018-11-12T11:20:34", "url": "https://files.pythonhosted.org/packages/e5/92/0fefa954faa6f60d5db9f8dffe69345e738196515689906878509a08c21c/djangorestframework_role_filters-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4fcdf5ce6c6d350a81a65ac08ae6dd7", "sha256": "bfdd3d05114d1a9592f03f34b9e1dc04ac85b503416f391f3e4e70dee1265b10" }, "downloads": -1, "filename": "djangorestframework-role-filters-0.2.3.tar.gz", "has_sig": false, "md5_digest": "f4fcdf5ce6c6d350a81a65ac08ae6dd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4561, "upload_time": "2018-11-12T11:20:36", "url": "https://files.pythonhosted.org/packages/33/fd/bb03b60976c8ea1d92dfe111262870d4acc7f185344b6863a4b69f92d5fb/djangorestframework-role-filters-0.2.3.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "dd460b2340cfcc0b5e386b31bba07c60", "sha256": "1bff481716275382591ec62200ad728f63beaa54e3df683337cdf9fffc4c69b2" }, "downloads": -1, "filename": "djangorestframework_role_filters-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "dd460b2340cfcc0b5e386b31bba07c60", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5785, "upload_time": "2019-01-18T13:29:19", "url": "https://files.pythonhosted.org/packages/9f/49/ed505553a618e1a14f8e5a94f37637db9561080fbdef04834db048a2bf07/djangorestframework_role_filters-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e17574f2c1b86830fdb52cf420130f24", "sha256": "e77d4e00f43c4bfbeabac1d4a30bc8ceeff043adab7ce9d60759786cc1d0f285" }, "downloads": -1, "filename": "djangorestframework-role-filters-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e17574f2c1b86830fdb52cf420130f24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5349, "upload_time": "2019-01-18T13:29:21", "url": "https://files.pythonhosted.org/packages/28/5c/5ae01a143589a814d7bb47e8323c7f0ba195669d167d5667da7a072b3ffb/djangorestframework-role-filters-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dd460b2340cfcc0b5e386b31bba07c60", "sha256": "1bff481716275382591ec62200ad728f63beaa54e3df683337cdf9fffc4c69b2" }, "downloads": -1, "filename": "djangorestframework_role_filters-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "dd460b2340cfcc0b5e386b31bba07c60", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5785, "upload_time": "2019-01-18T13:29:19", "url": "https://files.pythonhosted.org/packages/9f/49/ed505553a618e1a14f8e5a94f37637db9561080fbdef04834db048a2bf07/djangorestframework_role_filters-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e17574f2c1b86830fdb52cf420130f24", "sha256": "e77d4e00f43c4bfbeabac1d4a30bc8ceeff043adab7ce9d60759786cc1d0f285" }, "downloads": -1, "filename": "djangorestframework-role-filters-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e17574f2c1b86830fdb52cf420130f24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5349, "upload_time": "2019-01-18T13:29:21", "url": "https://files.pythonhosted.org/packages/28/5c/5ae01a143589a814d7bb47e8323c7f0ba195669d167d5667da7a072b3ffb/djangorestframework-role-filters-0.3.0.tar.gz" } ] }