{
"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"
}
]
}