{ "info": { "author": "Fabien MICHEL", "author_email": "fabien.michel@hespul.org", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.10", "Intended Audience :: Developers", "License :: Public Domain", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "Really simple permission backend for django\n\nClass based, No database\n\nInspired by [django-permission](https://github.com/lambdalisue/django-permission)\n\nTested with Django 1.10 - python 3.5\n\n# Introduction\n\nThe app autodiscover perms.py module in your project's apps.\n\nThis modules should register PermissionLogic based class.\n\nWhen calling django's has_perm method, it will run the corresponding method name in your PermissionLogic class.\n\nSee usage section below for comprehensive example.\n\n# Usage\n\n*settings.py*\n\n```python\nINSTALLED_APPS = (\n # ...\n 'simple_perms', # Add simple_perms app to your INSTALLED_APPS\n # ...\n)\n\nAUTHENTICATION_BACKENDS = (\n 'simple_perms.PermissionBackend', # Add permission backend before django's one\n 'django.contrib.auth.backends.ModelBackend',\n)\n```\n\n*project_app/perms.py*\n\n```python\nfrom simple_perms import register, PermissionLogic\n\n\nclass ProjectLogic(PermissionLogic):\n\n def add_project(self, user, project, perm):\n return True\n\n def change_project(self, user, project, perm):\n return user.is_admin() or project.owner == user\n\n delete_project = change_project\n\n def default_permission(self, user, project, perm):\n # Optional, default to global default permission, which default to False\n return user.is_admin()\n\n\nregister('project_app', ProjectLogic)\n```\n\n```python\nuser1.has_perm('project_app.add_project') # True\nuser1.has_perm('project_app.change_project', user1_project) # True\nuser1.has_perm('project_app.delete_project', user1_project) # True\nuser2.has_perm('project_app.change_project', user1_project) # False\nadmin.has_perm('project_app.change_project', user1_project) # True\n```\n\n# Default permission\n\nIf a checked permission doesn't exists in registered PermissionLogic based classe, the backend will run the default_permission method of this class. If no default_permission defined, it default to the global default permission which default to False.\n\n**Change global default permission**\n\n*settings.py*\n\n```python\nSIMPLE_PERMS_GLOBAL_DEFAULT_PERMISSION = 'path.to.custom_global_default_permission'\n```\n\n*path/to.py*\n```python\ndef custom_global_default_permission(user, obj, perm):\n return user.is_admin()\n```\n\nglobal_default_permission and default_permission have the same arguments as others permissions : `(user, obj, perm)`\n\n\n# Change autodiscovered module name\n\nsimple_perms autodiscover perms.py modules in every django's apps. You can change the module name to autodiscover using the SIMPLE_PERMS_MODULE_NAME setting :\n\n```python\nSIMPLE_PERMS_MODULE_NAME = 'permission'\n```\n\n# Run tests\n\n```bash\npython runtests.py\n```\n\n# Helper for your tests\n\n```python\n\nfrom django.test import TestCase\nfrom simple_perms.helpers import AssertPermissions\n\n\nclass TestContractPermission(AssertPermissions, TestCase):\n def setUp(self):\n self.admin = UserFactory(role=\"admin\")\n self.contract = ContractFactory()\n\n def test_permissions_for_admin(self):\n permissions = [\n { 'usr': 'admin', 'perm': 'contracts.add', 'args': (None,), 'result': True, },\n { 'usr': 'admin', 'perm': 'contracts.view', 'args': (self.contract, ), 'result': True, },\n { 'usr': 'admin', 'perm': 'contracts.change', 'args': (self.contract, ), 'result': True, },\n ]\n self.assertPerms(permissions)\n```\n\nWhich fails:\n\n``` text\n======================================================================\nFAIL: test_permissions_for_admin (contracts.tests.perms.TestContractPermission)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n File \"/app/django/contracts/tests/perms.py\", line 48, in test_permissions_of_admin\n self.assertPerms(permissions)\n File \"/app/django/django-simple_perms/simple_perms/helpers.py\", line 37, in assertPerms\n raise e\n File \"/app/django/django-simple_perms/simple_perms/helpers.py\", line 66, in _test_permission_\n getattr(self, permission['usr']).has_perm(permission['perm'], *permission['args'])\nAssertionError: ('PERM ERROR admin contracts.add: False is not true', 'PERM ERROR admin contracts.view: False is not true', 'PERM ERROR admin contracts.change: False is not true')\n\n----------------------------------------------------------------------\n```\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/hespul/django-simple_perms", "keywords": "", "license": "WTFPL", "maintainer": "", "maintainer_email": "", "name": "django-simple-perms", "package_url": "https://pypi.org/project/django-simple-perms/", "platform": "", "project_url": "https://pypi.org/project/django-simple-perms/", "project_urls": { "Homepage": "https://bitbucket.org/hespul/django-simple_perms" }, "release_url": "https://pypi.org/project/django-simple-perms/0.2.8/", "requires_dist": [ "django" ], "requires_python": "", "summary": "A simple class based permission backend for django", "version": "0.2.8" }, "last_serial": 4681322, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "857b7667380cb1cd875e575843b9ce08", "sha256": "5701b6bed5fa2c220b45f40b134a3714f5a80c2ed4ee58b6c094576e8a3a317c" }, "downloads": -1, "filename": "django-simple_perms-0.1.tar.gz", "has_sig": false, "md5_digest": "857b7667380cb1cd875e575843b9ce08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4485, "upload_time": "2016-11-28T12:56:24", "url": "https://files.pythonhosted.org/packages/29/a0/a39cdddc242001a79e8446f95061d7286576cd2b57da6cca619a9ad162f7/django-simple_perms-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "00b70d3cab979f5baeb1a05690a0d0ba", "sha256": "32c8a200260dc9679e5bb13d821faf619a2a59bdf7909d71356b785b33b77b34" }, "downloads": -1, "filename": "django-simple_perms-0.2.tar.gz", "has_sig": false, "md5_digest": "00b70d3cab979f5baeb1a05690a0d0ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4490, "upload_time": "2016-11-28T13:09:22", "url": "https://files.pythonhosted.org/packages/04/25/cb3aa905be6dfe65566c2cdbcdd1dee27a44fad1e1d92a6d9f491749f587/django-simple_perms-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "5b66ebb21c5a1067be9b22b336f788b4", "sha256": "6fe04f81cc6f5f1e6431806a028ad62eb8d15e0aba87123a0d19d3d70e4193e9" }, "downloads": -1, "filename": "django-simple_perms-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5b66ebb21c5a1067be9b22b336f788b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4603, "upload_time": "2016-11-28T13:23:41", "url": "https://files.pythonhosted.org/packages/c1/04/89401ca7b266015a483123750dad9109fe67d9abc50438e85e28c48c5243/django-simple_perms-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "0347de8dde35f142b686a0f64f7a8df6", "sha256": "8876198d1990b91b6649445e2f2d833fcc08dcae88f423ec299f73a8c5434d64" }, "downloads": -1, "filename": "django-simple_perms-0.2.2.tar.gz", "has_sig": false, "md5_digest": "0347de8dde35f142b686a0f64f7a8df6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4633, "upload_time": "2016-11-28T14:12:08", "url": "https://files.pythonhosted.org/packages/a1/7b/0ea3363c4be9e3fbcead3321608a10d4583b3abc928ec9437a904d0b75d8/django-simple_perms-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "1432404766165d079c89d9f917aa4c22", "sha256": "123ec655846ae35a6bd1a65dcf001669e2d8118d4b16e262fc0a4ac9df2a595f" }, "downloads": -1, "filename": "django-simple_perms-0.2.3.tar.gz", "has_sig": false, "md5_digest": "1432404766165d079c89d9f917aa4c22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4666, "upload_time": "2016-11-28T14:19:24", "url": "https://files.pythonhosted.org/packages/8d/ff/7b887f3fde3cc1d47bc8b4bae10c253331452596d710d6213a732f2a5c7d/django-simple_perms-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "86d8dbdd118e55f6a6794cece3cfc57a", "sha256": "1f929ed4f16ee60dfe619f7dad4a86976ad6b3ba4db5021b7a3c9676a36290ee" }, "downloads": -1, "filename": "django_simple_perms-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "86d8dbdd118e55f6a6794cece3cfc57a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9157, "upload_time": "2018-04-06T15:03:14", "url": "https://files.pythonhosted.org/packages/84/a2/c97ce924adf02a2db2879e6eca58602476bf65942a61b880c6c7dff44478/django_simple_perms-0.2.4-py3-none-any.whl" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "417da9bb9d2a524a0807168d8c9a96b8", "sha256": "5c96eb13d122b440287cfcfec25b290fec05fc218e904e594146a424b305fba8" }, "downloads": -1, "filename": "django_simple_perms-0.2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "417da9bb9d2a524a0807168d8c9a96b8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7802, "upload_time": "2018-05-16T14:08:24", "url": "https://files.pythonhosted.org/packages/8a/35/5107851096d8169d1dd010fdce075ef22e4f4a8841e3e7db896323667eb0/django_simple_perms-0.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf50af0b9ee113b0c5876680b7739475", "sha256": "dddf751b9d4dfa8a764a803dbb885eb702ff1a1226b6383aced19dcc467fce48" }, "downloads": -1, "filename": "django-simple_perms-0.2.5.tar.gz", "has_sig": false, "md5_digest": "cf50af0b9ee113b0c5876680b7739475", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5607, "upload_time": "2018-05-16T14:08:25", "url": "https://files.pythonhosted.org/packages/70/8e/4204705d63fa1d522e022d79a0123417d992b994b2571ceb295b63ccebfe/django-simple_perms-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "c471b9cc692916cffa9966c7ebc70a9b", "sha256": "0802fc823412652bf30e842564cc303fbd1508884e5d57bccaae094a680286bb" }, "downloads": -1, "filename": "django_simple_perms-0.2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c471b9cc692916cffa9966c7ebc70a9b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7801, "upload_time": "2018-05-16T14:12:23", "url": "https://files.pythonhosted.org/packages/3d/ed/8804c297beabd123310aaf3be726465e89c07533725d516e9502d479b96a/django_simple_perms-0.2.6-py2.py3-none-any.whl" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "1851c4272b1d8e7d3a7caa8daab7b1ce", "sha256": "09675642515356a781eaed2df901764b731fa118dd3786e070d24e9964fa110d" }, "downloads": -1, "filename": "django_simple_perms-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "1851c4272b1d8e7d3a7caa8daab7b1ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7807, "upload_time": "2019-01-10T13:56:25", "url": "https://files.pythonhosted.org/packages/8f/30/4457a0511f4224d44da9bb83b7de60452dcff982522a5ce81d1f9808b9b5/django_simple_perms-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd3aa6e363a73e8d3cb8b74fdba29439", "sha256": "04f26a7da8995d840af038e7c89491aaf1d8a5c925d4d62396ca75300035fd85" }, "downloads": -1, "filename": "django-simple_perms-0.2.7.tar.gz", "has_sig": false, "md5_digest": "cd3aa6e363a73e8d3cb8b74fdba29439", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5624, "upload_time": "2019-01-10T13:56:27", "url": "https://files.pythonhosted.org/packages/16/48/18f8aa4254e8ed8d9bc6fd9d315fd14efad139e6eaad0d03368217ec511d/django-simple_perms-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "a0bbdef3d936c535a949728b2f5eccda", "sha256": "ed47a03afb7a8a362b91323a4b81cc1793f5cea7705f194198aa8260f446f295" }, "downloads": -1, "filename": "django_simple_perms-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "a0bbdef3d936c535a949728b2f5eccda", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7808, "upload_time": "2019-01-10T14:21:52", "url": "https://files.pythonhosted.org/packages/b5/c9/c9e4364974d628f28150239eb02a77376af03b4d1465cbd1d3ec1b6e2e08/django_simple_perms-0.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b5a03c35f45dfab03e9fc808b4e852d", "sha256": "771deb81b2440bd072a41ada7b1bacdeae0422dd2bf34f035738deef74b177ab" }, "downloads": -1, "filename": "django-simple_perms-0.2.8.tar.gz", "has_sig": false, "md5_digest": "7b5a03c35f45dfab03e9fc808b4e852d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5635, "upload_time": "2019-01-10T14:21:54", "url": "https://files.pythonhosted.org/packages/00/1d/8f9b30b3f30b4c7a938669d15f0401654e5781829718055bcd0731eb00e2/django-simple_perms-0.2.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a0bbdef3d936c535a949728b2f5eccda", "sha256": "ed47a03afb7a8a362b91323a4b81cc1793f5cea7705f194198aa8260f446f295" }, "downloads": -1, "filename": "django_simple_perms-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "a0bbdef3d936c535a949728b2f5eccda", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7808, "upload_time": "2019-01-10T14:21:52", "url": "https://files.pythonhosted.org/packages/b5/c9/c9e4364974d628f28150239eb02a77376af03b4d1465cbd1d3ec1b6e2e08/django_simple_perms-0.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b5a03c35f45dfab03e9fc808b4e852d", "sha256": "771deb81b2440bd072a41ada7b1bacdeae0422dd2bf34f035738deef74b177ab" }, "downloads": -1, "filename": "django-simple_perms-0.2.8.tar.gz", "has_sig": false, "md5_digest": "7b5a03c35f45dfab03e9fc808b4e852d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5635, "upload_time": "2019-01-10T14:21:54", "url": "https://files.pythonhosted.org/packages/00/1d/8f9b30b3f30b4c7a938669d15f0401654e5781829718055bcd0731eb00e2/django-simple_perms-0.2.8.tar.gz" } ] }