{ "info": { "author": "Alec Nikolas Reiter", "author_email": "alecreiter@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Flask", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": ".. image:: https://travis-ci.org/justanr/flask-allows.svg?branch=master\n :target: https://travis-ci.org/justanr/flask-allows\n\n.. image:: https://coveralls.io/repos/github/justanr/flask-allows/badge.svg?branch=master\n :target: https://coveralls.io/github/justanr/flask-allows?branch=master\n\n\n\nflask-allows\n============\n\nAre your permissions making too much noise all the time? Are your permissions\nstomping all over your actual code? Are your permission decorators clawing\nat your line count all the time? Think there's no answer? There is! Flask-Allows.\n\n\nFlask-Allows is an authorization tool for Flask inspired by\n`django-rest-framework `_'s\npermissioning system and `rest_condition `_'s\nability to compose simple requirements into more complex ones.\n\nInstallation\n------------\n\nFlask-Allows is available on `pypi `_ and\ninstallable with::\n\n pip install flask-allows\n\nFlask Allows supports 2.7, and 3.4+. Support for 3.3 was ended in the version\n0.3 release.\n\n.. note::\n\n If you are installing ``flask-allows`` outside of a virtual environment,\n consider installing it with ``pip install --user flask-allows`` rather\n than using sudo or adminstrator privileges to avoid installing it into\n your system Python.\n\n\nMore Information\n----------------\n\n- For more information, `please visit the documentation `_.\n- Found a bug, have a question, or want to request a feature? Here is our `issue tracker `_.\n- Need the source code? Here is the `repository `_\n\n\nChange Log\n==========\n\nVersion 0.7.1 (2018-10-03)\n--------------------------\n\n* Added requirement name to deprecation message to make tracking down\n user-only requirements warnings easier.\n\nVersion 0.7 (2018-09-03)\n------------------------\n\n* Added ``flask_allows.view.guard_entire`` and\n ``flask_allows.views.exempt_from_requirements`` to make protecting entire\n blueprints easier.\n* Added ``__all__`` export markers to flask_allows modules to prevent accidental\n re-export of other symbols when using ``from flask_allows.module import *``\n\n\nVersion 0.6 (2018-05-26)\n------------------------\n\n* ``Permission`` no longer needs an application context for construction\n but does require one for evaluation now.\n* Added ``Allows.run`` a public helper that performs the complete fulfill and\n fail cycle. This cleans up the duplication between ``Allows.requires``,\n ``requires`` and ``Permission.__enter__``\n* Removed ``Permission.throw_type``\n* Removed ``PermissionedView``, ``PermissionedMethodView``\n* Added ability to disable requirements already registered on routes and inside\n handlers via the ``flask_allows.overrides.OverrideManager`` class\n* Added ability to add more requirements to be run during checks on routes\n and other handlers via the ``flask_allows.additional.AdditionalManager`` class\n\n\n\nVersion 0.5.1 (2018-04-22)\n--------------------------\n\n* Added ``wants_request`` to ease transition to user only requirements\n\n\n\nVersion 0.5 (2018-04-17)\n------------------------\n\n* Real documentation\n* Accepting request in requirements is now deprecated, pending removal in\n 1.0\n* Promoted internal ``_allows`` context local to part of the public interface\n* Bug Fix: ConditionalRequirement returned False when no requirements were provided\n it now returns True and mimics the behavior of ``all`` better\n\n\nVersion 0.4 (2017-08-29)\n------------------------\n\n* Clarify deprecation message for PermissionedView, will be removed in 0.6\n* Deprecate Permission.throw_type for 0.6 removak\n* Add optional on_fail for `allows.requires` and `requires` decoration\n* Fix coverage path problem with local testing\n\nVersion 0.3.2 (2017-08-29)\n--------------------------\n\n* Fix package data not being included\n\n\nVersion 0.3.1 (2017-08-20)\n--------------------------\n\n* Fix error that prevent sdist builds on 2.7\n\n\nVersion 0.3 (2017-08-20)\n------------------------\n\n* Drop official support for Python 3.3\n* Deprecate implicit decoration on class based views via the requirements attribute\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/justanr/flask-allows", "keywords": "flask,authorization,permissions", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "flask-allows", "package_url": "https://pypi.org/project/flask-allows/", "platform": "", "project_url": "https://pypi.org/project/flask-allows/", "project_urls": { "Homepage": "https://github.com/justanr/flask-allows" }, "release_url": "https://pypi.org/project/flask-allows/0.7.1/", "requires_dist": [ "Flask" ], "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "summary": "Impose authorization requirements on Flask routes", "version": "0.7.1" }, "last_serial": 4338739, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "b6d9c7359d7ed34d755cda16877fe5cc", "sha256": "b0ef25097b5e469b339711c7907ed2bef7b520adfd6300ae0c6606a47acac29c" }, "downloads": -1, "filename": "flask-allows-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b6d9c7359d7ed34d755cda16877fe5cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7737, "upload_time": "2015-08-20T16:48:50", "url": "https://files.pythonhosted.org/packages/72/7c/89500a9e3b3238b2c46f833ee622dda059170e8836401af33734b7742eb2/flask-allows-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "fc6a10aae15ccb99fcaf01c73fdd939f", "sha256": "d4082accb9330b5c337457b94076a67a2c82c1a2eb16a3a847dac988ade416f3" }, "downloads": -1, "filename": "flask-allows-0.2.0.tar.gz", "has_sig": false, "md5_digest": "fc6a10aae15ccb99fcaf01c73fdd939f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8386, "upload_time": "2017-01-10T13:43:48", "url": "https://files.pythonhosted.org/packages/fe/ee/691079b07fa66e429a6f814801239ccf5bc24948364c4ee312b081b4ce2b/flask-allows-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "541f9cb71015bbd6b047ae01fb06843a", "sha256": "70a71d64ca404cadd8c7c61c8fb57d20ab7c658c018f8932eb166e5073fac8f2" }, "downloads": -1, "filename": "flask_allows-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "541f9cb71015bbd6b047ae01fb06843a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10725, "upload_time": "2017-08-20T16:32:48", "url": "https://files.pythonhosted.org/packages/46/23/7aa7a66dbc11fc5ce2eec98647ac0f56264c6f307e3f4e8d485f5772bf24/flask_allows-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65319ae05b932229fdc1864bb560fe58", "sha256": "59dc5ba7fc4618e5769f7b53a27696f381415222ada39876c3dee8a2fb476cda" }, "downloads": -1, "filename": "flask-allows-0.3.0.tar.gz", "has_sig": false, "md5_digest": "65319ae05b932229fdc1864bb560fe58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10833, "upload_time": "2017-08-20T16:33:42", "url": "https://files.pythonhosted.org/packages/8e/ed/8a98d3b37a6a7772b591277905b4ac2cdf36346b5513e34ede3ba96c3782/flask-allows-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "67f3b78f4826bc61ed45a84ff942aab6", "sha256": "fbba203215244f0f31cb2d091ad877dfc9e4a36dccb0a1b11fb404baba66f5bd" }, "downloads": -1, "filename": "flask_allows-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "67f3b78f4826bc61ed45a84ff942aab6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10821, "upload_time": "2017-08-20T19:03:54", "url": "https://files.pythonhosted.org/packages/25/4c/3cc98e8238b60e38153b9e70c3fa9e9de3459e1257c271d00e478321ce24/flask_allows-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b12511c74c1f71d6f967b3cabd5c283", "sha256": "d012693a27f76395dacc2c832025792bb6989c44061e63b6fe52cc675e565b30" }, "downloads": -1, "filename": "flask-allows-0.3.1.tar.gz", "has_sig": false, "md5_digest": "1b12511c74c1f71d6f967b3cabd5c283", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10905, "upload_time": "2017-08-20T19:03:56", "url": "https://files.pythonhosted.org/packages/a8/c6/37a3d3a876da2d105c81801a33b964dc5d9cf8c498c2f1b75aa59ce45d4c/flask-allows-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "4a0586da26a3a0076ac8a0bdb9b33990", "sha256": "063f2a3094cbd3df995d12909dd56f9d49ddae2c5979354c604ac28bc23375fb" }, "downloads": -1, "filename": "flask_allows-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4a0586da26a3a0076ac8a0bdb9b33990", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10822, "upload_time": "2017-08-29T04:15:48", "url": "https://files.pythonhosted.org/packages/64/69/d45c7a113c3a5bafc3ca47c31e188744a2668015c840635f84314ec3de0f/flask_allows-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0df4289774a927d076249fa132f2545d", "sha256": "7ca0c86aa91d1650ad5f0a2d5c7a430b99b413e2e9a22ceb6ed5b9db4cb85232" }, "downloads": -1, "filename": "flask-allows-0.3.2.tar.gz", "has_sig": false, "md5_digest": "0df4289774a927d076249fa132f2545d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11961, "upload_time": "2017-08-29T04:15:50", "url": "https://files.pythonhosted.org/packages/f5/eb/6d15835a3e0cb8636b51b6cf0986479a596e82f25c0ae1ec3b497ec8dc55/flask-allows-0.3.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "2cb9de7aeebdc78374274c53b5418cc2", "sha256": "fbdf023063e76edee6758fa8ba9052489670d010d897f7f10e88493ac7c5ae3a" }, "downloads": -1, "filename": "flask_allows-0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2cb9de7aeebdc78374274c53b5418cc2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13274, "upload_time": "2017-09-02T15:20:46", "url": "https://files.pythonhosted.org/packages/29/50/3cadf541e88c7eb90a0568803ace6f58d5cd12f4eedf450cc25ac4dd3f2b/flask_allows-0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8163ab0882c85b62ef91fee31e7972ca", "sha256": "386d6535fd26fc610c4b000135ba66057fa743479ba6ef9d995de65c613c51a9" }, "downloads": -1, "filename": "flask-allows-0.4.tar.gz", "has_sig": false, "md5_digest": "8163ab0882c85b62ef91fee31e7972ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11278, "upload_time": "2017-09-02T15:20:47", "url": "https://files.pythonhosted.org/packages/d3/75/c22b6d8057e3aaef9ed6ce4a430708ea1edecc5e65c85f653e6ec8c85478/flask-allows-0.4.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "e7b581d847b5bfb8a37194829e9752af", "sha256": "c2d89e1e5e3a66bd57697c36145e122563fdd3748b5c28bbfd537b2a3980d604" }, "downloads": -1, "filename": "flask_allows-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e7b581d847b5bfb8a37194829e9752af", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8113, "upload_time": "2018-04-17T04:59:27", "url": "https://files.pythonhosted.org/packages/66/13/cc051ab02d9a8076ecbbc12d8297ab778166156088b2c480a1c749b0b287/flask_allows-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f4659e38affc1f63b3730bc156544962", "sha256": "05e0547da61f682ce657fc27a96cf019d0b21938378e66b80d3ff3def277a35b" }, "downloads": -1, "filename": "flask-allows-0.5.0.tar.gz", "has_sig": false, "md5_digest": "f4659e38affc1f63b3730bc156544962", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7563, "upload_time": "2018-04-17T04:59:28", "url": "https://files.pythonhosted.org/packages/18/e8/68814188482c5ca112f305bb1f2a5bd2717cc8014da3df128e94826c9086/flask-allows-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "7cb645002dee6fab914cb16085993ff3", "sha256": "35bea10df4b2abe8d5351ff2372d8a655944332dba16769e6830a266684131cc" }, "downloads": -1, "filename": "flask_allows-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7cb645002dee6fab914cb16085993ff3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8396, "upload_time": "2018-04-22T18:53:10", "url": "https://files.pythonhosted.org/packages/c9/2e/741848ef9711f950db88553e3d9c84aca7143b91e583eece647e4b74eb98/flask_allows-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6bdcac587a5ad43c80190fb622e5df9f", "sha256": "5ebb765df711eec1fe8f88028f01022adb1b2d673df6739e98aac284d8e6a0b0" }, "downloads": -1, "filename": "flask-allows-0.5.1.tar.gz", "has_sig": false, "md5_digest": "6bdcac587a5ad43c80190fb622e5df9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7798, "upload_time": "2018-04-22T18:53:11", "url": "https://files.pythonhosted.org/packages/99/1f/c3fd80a83a8de44ebe974c217df14fa4d2b1c90ae47da152027c74abfaaf/flask-allows-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "1eaab385d40c34665fd6bbb9694a7872", "sha256": "b7f7054eb5872657dc22151d57079868aa51a68e65e8a0b1196f81471b8093fe" }, "downloads": -1, "filename": "flask_allows-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1eaab385d40c34665fd6bbb9694a7872", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 13165, "upload_time": "2018-05-26T19:28:44", "url": "https://files.pythonhosted.org/packages/8f/03/68d25df2ad8c316bd3d695b10f94ecfe9eebb9db1153836f0fd69dfaa446/flask_allows-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bb0d343b9f9fe74c1894baa80258d656", "sha256": "edc38764457a39618fa86994a9d6c1e2f2f95130982ffa47e9899b2ed3619cd2" }, "downloads": -1, "filename": "flask-allows-0.6.0.tar.gz", "has_sig": false, "md5_digest": "bb0d343b9f9fe74c1894baa80258d656", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 11102, "upload_time": "2018-05-26T19:28:45", "url": "https://files.pythonhosted.org/packages/a6/01/3fc339f5544822f7492af25dbad500a8f3f2e8ab3c4adeb89a53824da41e/flask-allows-0.6.0.tar.gz" } ], "0.6.0.dev0": [ { "comment_text": "", "digests": { "md5": "49c895e62b0459fe306c431b02b388a4", "sha256": "46d9c915d7f0a6e92ac5a49c13aa543104119122438f3d82b83a3c1c4bea8b6b" }, "downloads": -1, "filename": "flask_allows-0.6.0.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "49c895e62b0459fe306c431b02b388a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 13244, "upload_time": "2018-05-20T18:58:19", "url": "https://files.pythonhosted.org/packages/e8/33/4d1607ac72f5044a516b2b6fb25a8c87af169a77193bb83319fa228b8bb7/flask_allows-0.6.0.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f9e444cf0bcac92432360da9f11be3e", "sha256": "4145c29a6a36a2387ab8dcd2b1dd4b5b465ae43d206d0a2a0976e2316f8c4e0f" }, "downloads": -1, "filename": "flask-allows-0.6.0.dev0.tar.gz", "has_sig": false, "md5_digest": "0f9e444cf0bcac92432360da9f11be3e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 11165, "upload_time": "2018-05-20T18:58:20", "url": "https://files.pythonhosted.org/packages/b0/36/8fdb1877710234dd619e5d23753f5261f5fe8da7c868b6d921910df7d2bd/flask-allows-0.6.0.dev0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "2c860e2d95f7258ff24b09132c4177ce", "sha256": "f0d7e28430f51e350fdb0312a60de03b18e54d5d72595c34591f95e3c2db285e" }, "downloads": -1, "filename": "flask_allows-0.7.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2c860e2d95f7258ff24b09132c4177ce", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 14656, "upload_time": "2018-09-03T20:14:21", "url": "https://files.pythonhosted.org/packages/c6/90/3d35bbf518fe70cb05cb42ed658ed5daf07c60ad12f2317568759b148b5e/flask_allows-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99843015d2c8e46b9c8aff16609401bf", "sha256": "e0a084bf07d9fa519560ef1a0ce4c61fe0dde1c44696dd6cd79ffa6b44cace92" }, "downloads": -1, "filename": "flask-allows-0.7.0.tar.gz", "has_sig": false, "md5_digest": "99843015d2c8e46b9c8aff16609401bf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 14306, "upload_time": "2018-09-03T20:14:22", "url": "https://files.pythonhosted.org/packages/1f/b3/53a4ddf5864b178cb85b726031c7aaa5f794f67c8923dac3b274b8120517/flask-allows-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "9ea0d26b42e85d43ed60940a5aaf724e", "sha256": "d30304801536c20e903605697a013de7106e02f2ab61c7243318f7a98980c044" }, "downloads": -1, "filename": "flask_allows-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9ea0d26b42e85d43ed60940a5aaf724e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 16671, "upload_time": "2018-10-04T01:44:31", "url": "https://files.pythonhosted.org/packages/4a/4e/ccd3a92eb331f1f2652f62cba496d28f3f9771888c3f467fe95f97b91562/flask_allows-0.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0d00964e96ce6a37269bcbc52f876ee", "sha256": "c6760e9ef6692cfbae8d50d4c16b987618301bc7ddc55b7667e1bc9cf3287aa0" }, "downloads": -1, "filename": "flask-allows-0.7.1.tar.gz", "has_sig": false, "md5_digest": "f0d00964e96ce6a37269bcbc52f876ee", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 14398, "upload_time": "2018-10-04T01:44:33", "url": "https://files.pythonhosted.org/packages/d4/90/caa1eea65cf2d2e4d9d6be79ef7f4dfba4d36026110902e1c9e78c861486/flask-allows-0.7.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9ea0d26b42e85d43ed60940a5aaf724e", "sha256": "d30304801536c20e903605697a013de7106e02f2ab61c7243318f7a98980c044" }, "downloads": -1, "filename": "flask_allows-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9ea0d26b42e85d43ed60940a5aaf724e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 16671, "upload_time": "2018-10-04T01:44:31", "url": "https://files.pythonhosted.org/packages/4a/4e/ccd3a92eb331f1f2652f62cba496d28f3f9771888c3f467fe95f97b91562/flask_allows-0.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0d00964e96ce6a37269bcbc52f876ee", "sha256": "c6760e9ef6692cfbae8d50d4c16b987618301bc7ddc55b7667e1bc9cf3287aa0" }, "downloads": -1, "filename": "flask-allows-0.7.1.tar.gz", "has_sig": false, "md5_digest": "f0d00964e96ce6a37269bcbc52f876ee", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*", "size": 14398, "upload_time": "2018-10-04T01:44:33", "url": "https://files.pythonhosted.org/packages/d4/90/caa1eea65cf2d2e4d9d6be79ef7f4dfba4d36026110902e1c9e78c861486/flask-allows-0.7.1.tar.gz" } ] }