{ "info": { "author": "Taoufik Abbassid", "author_email": "abacidtaoufik@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "# DGP - Django graphene permissions\n\nPermission system inspired by DRF\n\n\n## Installation\n\nInstall the latest release:\n\n```shell\n$ pip3 install django-graphene-permissions\n```\nOr using pipenv\n\n```shell\n$ pipenv install django-graphene-permissions\n```\n\n## Usage\n\n### Permission definition\n---\n\nYou can create new permissions by subclassing `BasePermission` e.g. \n\n```python\nfrom django_graphene_permissions.permissions import BasePermission\n\nclass MyPermission(BasePermission):\n\n @staticmethod\n def has_permission(context):\n return context.user and context.user.is_authenticated\n\n @staticmethod\n def has_object_permission(context, obj):\n return True\n\n\n```\n\nThis package provides predefined permissions : \n\n* `AllowAny` : Allow any access.\n* `IsAuthenticated` : Allow only authenticated users.\n\n\n### Node Permission\n---\n\nSubclass `PermissionDjangoObjectType` and define the permissions via the static method `permission_classes` that should return an iterable of permission classes\n\n\n```python\nfrom django_graphene_permissions import PermissionDjangoObjectType\nfrom django_graphene_permissions.permissions import IsAuthenticated\n\nclass ExampleNode(PermissionDjangoObjectType):\n class Meta:\n model = Example\n interfaces = (relay.Node,)\n\n @staticmethod\n def permission_classes():\n return [IsAuthenticated]\n```\n\n### Mutation Permission\n---\n\nApply the `permissions_checker([Permission,...])` decorator to `mutate` e.g.\n\n```python\nfrom django_graphene_permissions import permissions_checker\nfrom django_graphene_permissions.permissions import IsAuthenticated\n\nclass ExampleDeleteMutation(graphene.Mutation):\n ok = graphene.Boolean()\n\n class Arguments:\n id = graphene.ID()\n\n @permissions_checker([IsAuthenticated])\n def mutate(self, info, id):\n instance = get_instance(id)\n instance.delete()\n return ExampleDeleteMutation(ok=True)\n``` \n\n### Query Permission\n---\n\nApply the `permissions_checker([Permission,...])` decorator to the field resolver e.g.\n\n```python\nfrom django_graphene_permissions import permissions_checker\nfrom django_graphene_permissions.permissions import IsAuthenticated\n\nclass Query(graphene.ObjectType):\n post = relay.Node.Field(PostNode)\n posts = DjangoFilterConnectionField(PostNode)\n\n @permissions_checker([IsAuthenticated])\n def resolve_posts(self, info, **kwargs):\n return Post.objects.all()\n```\n\n## TODO\n\n* Improvements\n* Tests\n* Add a `PermissionDjangoFilterConnectionField`\n* Better docs\n\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/taoufik07/django-graphene-permissions", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "django-graphene-permissions", "package_url": "https://pypi.org/project/django-graphene-permissions/", "platform": "", "project_url": "https://pypi.org/project/django-graphene-permissions/", "project_urls": { "Homepage": "https://github.com/taoufik07/django-graphene-permissions" }, "release_url": "https://pypi.org/project/django-graphene-permissions/0.0.4/", "requires_dist": null, "requires_python": "", "summary": "DRF like permission system for django graphene", "version": "0.0.4" }, "last_serial": 4715900, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "c23910570274a6699655ededc8d3c353", "sha256": "1c6a3e54b235deac20cc4e9e22a1a5e3532086c14fc88880417bbab5a7278ce5" }, "downloads": -1, "filename": "django_graphene_permissions-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c23910570274a6699655ededc8d3c353", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4594, "upload_time": "2018-11-19T11:24:45", "url": "https://files.pythonhosted.org/packages/f1/5c/baaee972ef11827d504abcc38898e7d75a59a0d0aadd5c5897b31656f78a/django_graphene_permissions-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f85c92a874736304cd655dc4e3a40b47", "sha256": "89e64f018d5360c7b1cd3712c7b74fff4945a6ba3f7dd02a793ddad8a4aa4a0b" }, "downloads": -1, "filename": "django_graphene_permissions-0.0.3.tar.gz", "has_sig": false, "md5_digest": "f85c92a874736304cd655dc4e3a40b47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3084, "upload_time": "2018-11-19T11:24:48", "url": "https://files.pythonhosted.org/packages/80/43/1cd0cbbeed97d13f95dc09fba01cdd3900292430a6578499dff5b861d207/django_graphene_permissions-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "5fc0af7e4a5a97e3edd1ed339ae70cda", "sha256": "837d45f621c26fa8fba332139dfbd70aa80c54fba618b27357957360170203e4" }, "downloads": -1, "filename": "django_graphene_permissions-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5fc0af7e4a5a97e3edd1ed339ae70cda", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5430, "upload_time": "2019-01-19T14:48:59", "url": "https://files.pythonhosted.org/packages/54/b1/3600f6869e6f5ac55bb31b0e2a2c85272f14bb876f0700eda7289f8ed8b6/django_graphene_permissions-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "645dbe1c97108655e2fb03cc10f5f18f", "sha256": "5ed879e9031519ed9f03d5a39794968374fccf9bbb8d89f0a91337b657285ccd" }, "downloads": -1, "filename": "django_graphene_permissions-0.0.4.tar.gz", "has_sig": false, "md5_digest": "645dbe1c97108655e2fb03cc10f5f18f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3129, "upload_time": "2019-01-19T14:49:01", "url": "https://files.pythonhosted.org/packages/74/81/42f847d9b767155ba0dad3acbb007d38657a128b1f700dbc01de2e70df43/django_graphene_permissions-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5fc0af7e4a5a97e3edd1ed339ae70cda", "sha256": "837d45f621c26fa8fba332139dfbd70aa80c54fba618b27357957360170203e4" }, "downloads": -1, "filename": "django_graphene_permissions-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5fc0af7e4a5a97e3edd1ed339ae70cda", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5430, "upload_time": "2019-01-19T14:48:59", "url": "https://files.pythonhosted.org/packages/54/b1/3600f6869e6f5ac55bb31b0e2a2c85272f14bb876f0700eda7289f8ed8b6/django_graphene_permissions-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "645dbe1c97108655e2fb03cc10f5f18f", "sha256": "5ed879e9031519ed9f03d5a39794968374fccf9bbb8d89f0a91337b657285ccd" }, "downloads": -1, "filename": "django_graphene_permissions-0.0.4.tar.gz", "has_sig": false, "md5_digest": "645dbe1c97108655e2fb03cc10f5f18f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3129, "upload_time": "2019-01-19T14:49:01", "url": "https://files.pythonhosted.org/packages/74/81/42f847d9b767155ba0dad3acbb007d38657a128b1f700dbc01de2e70df43/django_graphene_permissions-0.0.4.tar.gz" } ] }