{ "info": { "author": "Mark Pittaway", "author_email": "mark.pittaway@mlit.net.au", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Database :: Front-Ends" ], "description": "Welcome To DStore-ACL\n#####################\n\n.. image:: https://img.shields.io/coveralls/MarkLark/dstore-acl.svg\n :target: https://coveralls.io/github/MarkLark/dstore-acl?branch=master\n\n.. image:: https://img.shields.io/travis/MarkLark/dstore-acl/master.svg\n :target: https://travis-ci.org/MarkLark/dstore-acl\n\n.. image:: https://img.shields.io/pypi/v/dstore-acl.svg\n :target: https://pypi.python.org/pypi/dstore-acl\n\n.. image:: https://img.shields.io/pypi/pyversions/dstore-acl.svg\n :target: https://pypi.python.org/pypi/dstore-acl\n\nDStore-ACL is a Security Layer for DStore.\n\n\nInstalling\n==========\n\nDStore-ACL is available from the PyPi repository.\n\nThis means that all you have to do to install DStore-ACL is run the following in a console:\n\n.. code-block:: console\n\n $ pip install dstore-acl\n\nMinimal Example\n===============\n\n.. code-block:: python\n\n from dstore import MemoryStore, Model, var, mod\n from dstore_acl import ACL, Role, UserRole, AccessDenied\n\n\n class UserAccount( Model ):\n _namespace = \"users.account\"\n _vars = [\n var.RowID,\n var.String( \"name\", 32, mods = [ mod.NotNull() ])\n ]\n _acl_rules = dict(\n add_own = dict( default = True ),\n add_others = dict( default = True ),\n read_own = dict( allow = [ \"admin\", \"member\" ] ),\n read_others = dict( allow = [ \"admin\" ] ),\n update_own = dict( allow = [ \"admin\", \"member\" ] ),\n delete_own = dict( allow = [ \"admin\" ] ),\n delete_others = dict( allow = [ \"admin\" ] ),\n empty = dict( allow = [ \"admin\" ])\n )\n\n\n class Car( Model ):\n _namespace = \"cars.make\"\n _vars = [\n var.RowID,\n var.String( \"manufacturer\", 32, mods = [ mod.NotNull() ] ),\n var.String( \"make\", 32, mods = [ mod.NotNull() ] ),\n var.Number( \"year\", mods = [ mod.NotNull(), mod.Min( 1950 ), mod.Max( 2017 ) ] ),\n ]\n _acl_rules = dict(\n add = dict( allow = [ \"admin\" ]),\n read = dict( default = True ),\n update = dict( allow = [ \"admin\" ]),\n delete = dict( allow = [ \"admin\" ]),\n empty = dict( allow = [ \"admin\" ])\n )\n\n users = {}\n current_user = \"admin\"\n\n # Create the MemoryStore instance, and add Models to it\n store = MemoryStore( [ Car ] )\n\n acl = ACL(\n data_store = store,\n get_user = get_user,\n user_model = UserAccount\n )\n\n store.init_app()\n store.connect()\n store.create_all()\n\n # Create the user accounts\n for name in [ \"admin\", \"member\" ]:\n users[ name ] = UserAccount( name = name ).add()\n role = Role.filter( name = name )[0]\n UserRole( user_id = users[ name ].id, acl_role_id = role.id ).add()\n\n # Admin can add new cars\n Car( manufacturer = \"Holden\", make = \"Commodore\", year = 2009 ).add()\n\n # Member cannot add new cars\n current_user = \"member\"\n try:\n Car( manufacturer = \"Holden\", make = \"Commodore\", year = 2010 ).add()\n except AccessDenied:\n pass\n\n # Destroy all instances and shut down the application\n store.destroy_all()\n store.disconnect()\n store.destroy_app()\n\n def get_user():\n return users[ current_user ]\n\n\nDocumentation: `ReadTheDocs `_\n\nSource Code: `GitHub `_", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MarkLark/dstore-acl", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "DStore-ACL", "package_url": "https://pypi.org/project/DStore-ACL/", "platform": "any", "project_url": "https://pypi.org/project/DStore-ACL/", "project_urls": { "Homepage": "https://github.com/MarkLark/dstore-acl" }, "release_url": "https://pypi.org/project/DStore-ACL/0.1.1/", "requires_dist": [ "dstore (>=0.1.1)" ], "requires_python": "", "summary": "DStore Security using Access Control Lists", "version": "0.1.1" }, "last_serial": 2630283, "releases": { "0.1.0a1": [ { "comment_text": "", "digests": { "md5": "fcf3b7e1ae92be13811698c64ef9ecf1", "sha256": "9e0d8b37a751ec9b9f0009c666a0499c93816d2c0cda0dc670ba84df1c574495" }, "downloads": -1, "filename": "DStore_ACL-0.1.0a1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fcf3b7e1ae92be13811698c64ef9ecf1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7716, "upload_time": "2017-01-23T05:07:08", "url": "https://files.pythonhosted.org/packages/cf/f7/d5aa6966b78a5a0fbd065e9b61638daf917a32bd6bb99a0aaf6163579e5d/DStore_ACL-0.1.0a1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1bda6810f5cef5814ddac566271390d5", "sha256": "dd3bd8f34315f286429f444ce2bbc40799e6f77af12303a0585388ea763287ac" }, "downloads": -1, "filename": "DStore-ACL-0.1.0a1.tar.gz", "has_sig": false, "md5_digest": "1bda6810f5cef5814ddac566271390d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5391, "upload_time": "2017-01-23T05:07:11", "url": "https://files.pythonhosted.org/packages/e3/27/7629cd9071e59680e678f929a64cbcf248fadd3b189e593255d462317ed5/DStore-ACL-0.1.0a1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "bc51f1bde24ef3e8969bc393f5f43fbd", "sha256": "de8f7d3b2993a7cc64597b548f84de930a08d5365579f175bfe32b95fead5e87" }, "downloads": -1, "filename": "DStore_ACL-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc51f1bde24ef3e8969bc393f5f43fbd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10886, "upload_time": "2017-02-09T09:33:42", "url": "https://files.pythonhosted.org/packages/b6/56/4e8121afbca083083619e2042787bc1a37844df580d4de9d7fe9861d0310/DStore_ACL-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21222cc1aaf2e61260310a49d51b54c3", "sha256": "150b45e9405be83661e3f4e28a3dd124d4a729ed4c2af577f94ab80622559a2b" }, "downloads": -1, "filename": "DStore-ACL-0.1.1.tar.gz", "has_sig": false, "md5_digest": "21222cc1aaf2e61260310a49d51b54c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6112, "upload_time": "2017-02-09T09:33:45", "url": "https://files.pythonhosted.org/packages/03/81/422b89141aad187ec42ff7efe16a9199055c8d5d71a261c2520bf5d55773/DStore-ACL-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bc51f1bde24ef3e8969bc393f5f43fbd", "sha256": "de8f7d3b2993a7cc64597b548f84de930a08d5365579f175bfe32b95fead5e87" }, "downloads": -1, "filename": "DStore_ACL-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc51f1bde24ef3e8969bc393f5f43fbd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10886, "upload_time": "2017-02-09T09:33:42", "url": "https://files.pythonhosted.org/packages/b6/56/4e8121afbca083083619e2042787bc1a37844df580d4de9d7fe9861d0310/DStore_ACL-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21222cc1aaf2e61260310a49d51b54c3", "sha256": "150b45e9405be83661e3f4e28a3dd124d4a729ed4c2af577f94ab80622559a2b" }, "downloads": -1, "filename": "DStore-ACL-0.1.1.tar.gz", "has_sig": false, "md5_digest": "21222cc1aaf2e61260310a49d51b54c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6112, "upload_time": "2017-02-09T09:33:45", "url": "https://files.pythonhosted.org/packages/03/81/422b89141aad187ec42ff7efe16a9199055c8d5d71a261c2520bf5d55773/DStore-ACL-0.1.1.tar.gz" } ] }