{ "info": { "author": "Malthe Borch and Stefan Eletzhofer", "author_email": "product-developers@lists.plone.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application" ], "description": ".. image:: https://travis-ci.org/collective/pas.plugins.sqlalchemy.svg?branch=master\n :target: https://travis-ci.org/collective/pas.plugins.sqlalchemy\n\n.. image:: https://coveralls.io/repos/collective/pas.plugins.sqlalchemy/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/collective/pas.plugins.sqlalchemy?branch=master\n\n\n.. This README is meant for consumption by humans and pypi. Pypi can render rst files so please do not use Sphinx features.\n If you want to learn more about writing documentation, please check out: http://docs.plone.org/about/documentation_styleguide_addons.html\n This text does not appear on pypi or github. It is a comment.\n\n=====================\nSQLAlchemy PAS plugin\n=====================\n\nThis package provides a Zope 2 PAS plugin implementation (Pluggable Authentication Service) based on the SQLAlchemy database abstraction layer.\n\nIt allows you to store and query users and groups using a SQL database.\n\nThis package replaces the `SQLPASPlugin `_. product.\nIt is technically a fork of that codebase.\nSome tests have been rewritten but most are preserved.\n\nAlthough not currently provided in a stable release, it's used in production (tested against the `pysqlite` and PostgreSQL databases only).\n\nSetup\n-----\n\nTo configure the plugin with a database, use ``z3c.saconfig``.\nDefine a named scoped session ``pas.plugins.sqlalchemy`` in your ``configure.zcml`` or in the ``zcml-additional`` parameter of the ``plone.recipe.zope2instance`` recipe in your buildout.\n\nExample::\n\n \n \n\n \n \n\n \n\nInstall the plugin using the included GenericSetup-profile.\nNote that tables will be created automatically on installation.\n\nYou can reinstall anytime to create non-existing tables.\nNote that tables are preserved on uninstallation.\n\nConfiguration from Plone\n-------------------------\n\nAs an alternative to specifying the database connection information in zcml, you can use `collective.saconnect `_ to make your connections configurable on the plone control panel.\n\nInstall the package by adding it to your buildout, then install the add-on it in your plone site through Plone's control panel.\nYou now have a new control panel that allows you to create and edit database connections.\n\nTo add connections with generic setup add a file ``saconnections.xml`` to the generic setup profile of your site setup package, with the\nfollowing content::\n\n \n \n \n \n\nFor good performance, don't forget to enable caching within the ZMI.\n\nMore information is available in the package description.\n\n\nCustom principal, user and group model\n--------------------------------------\n\nYou can register your own SQLAlchemy-based model class for all three categories.\n\nThe required class interfaces (required methods and attributes) are described in the ``interfaces`` module.\nNote that you can simply subclass from the default models which implement the required interfaces.\n\nThe settings are accessible in the ZMI. You can also use a custom setup handler.\n\nExample::\n\n def setup_pas_plugin(self):\n pas = self.acl_users\n plugin = pas['sql']\n\n plugin.manage_changeProperties(\n user_model=\"my_package.model.User\",\n principal_model=\"my_package.model.Principal\",\n group_model=\"my_package.model.Group\"\n )\n\nYou may need to make sure the plugins are prioritized higher than the default ones (typically ZODB-based).\n\n\nWishlist\n--------\n\nThese items are on the to-do list:\n\n- Post-only security.\n- Review of implemented interfaces - is the implementation complete?\n- Handle groups title, description and email, to match newer versions of Plone.\n- Tests for configuration of external model.\n\n\nCredits\n-------\n\nAuthors\n\n- Rocky Burt of ServerZen Software\n- Nate Aune of Jazkarta\n- Stefan Eletzhofer of InQuant\n- Malthe Borch \n\nContributors\n\n- Ruda Porto Filgueiras \n- Daniel Nouri \n- Dorneles Trem\u00e9a of Jarn\n- Wichert Akkerman of Simplon\n- Riccardo Lemmi of Reflab Srl\n- Derek Broughton \n- Rigel Di Scala \n- Sune Broendum Woeller of Headnet Aps\n\nSponsors\n\n- Thanks to ChemIndustry.com Inc. for financing the development of SQLPASPlugin\n- Thanks to Statens Byggeforskninginstitut (http://www.sbi.dk) for sponsoring the caching support.\n- Thanks to Gis & Web S.r.l. (http://www.gisweb.it) for sponsoring the groups management support.\n- Thanks to the Ocean Tracking Network (http://oceantrackingnetwork.org/) for adding Group Capabilities and migration of existing users.\n\nLicense\n-------\n\nGNU GPL v2 (see LICENCE.txt for details)\n\n\nChangelog\n=========\n\n0.4.2 (2017-10-23)\n------------------\n\n- MANIFEST was not fixed in version 0.4.1 (still a brown bag release)\n [keul]\n- Fixed brown bag release (again).\n [malthe]\n\n0.4.1 (2017-10-23)\n------------------\n\n- Fixed brown bag release.\n [malthe]\n\n0.4 (2016-03-31)\n----------------\n\n- added link to cache settings view in zmi\n [agitator]\n\n- fix: ``getPropertiesForUser`` uses principals ``_properties`` mapping now\n to map to the column used for ``zope_id`` id this is needed.\n [jensens]\n\n- do not expect a configured database connection on plugin install time in\n order to play nice with collective.saconnect. Also be less verbose if there\n is no connection configured.\n [jensens]\n\n- fix: different custom setup un-/install marker for install and uninstall\n [jensens]\n\n- Standardize name of installation profile to ``default``.\n [jensens]\n\n- modernized: Pep8, Travis CI, ...\n [jensens]\n\n- using _get_principal_by_id to get principal in doChangeUser,\n doDeleteUser, and allowPasswordSet methods\n [gborelli]\n\n- using '__mapper__' instead of '__table__' to check Column type.\n It allows to customize user model in another class with\n polymorphic_identity\n [gborelli]\n\n- fixed getPropertiesForUser, return None if principal doesn't exist\n [gborelli]\n\n- check if principal exists before updating its properties\n [gborelli]\n\n- Fixed methods ``doSetProperty`` and ``setPropertiesForUser`` such\n that they accept a generic principal and not necessarily an instance\n of the plugin's principal class.\n [malthe]\n\n- Wrap user properties in an actually mutable user property sheet\n (which writes changes back to the plugin). Previously, a mutable\n property sheet was returned, but this is incorrect since changes\n aren't persisted.\n\n While the PAS interface specifies that a dict should be returned for\n an immutable result, we opt for a hybrid: a dict-aware user property\n sheet which does not promise mutability. The motivation is that the\n pluggable authentication service only supports a select list of\n property value types and not, for instance, Python's own date and\n time classes. By returning a property sheet, we can provide a schema\n explicitly and not force the authentication service to \"guess\"\n (infer) it.\n [malthe]\n\n0.3 (2011-10-13)\n----------------\n\n- Fire `IPropertiesUpdated` (from PAS) event on `setPropertiesForUser`\n to allow components to take action when user properties are updated.\n [malthe]\n\n- Merged SVN repository (select branches) into the existing Github\n repository to consolidate improvements.\n [malthe]\n\n- Add title and description to groups.\n\n GetRolesForPrincipal needs to listen to __ignore_group_roles__ and\n __ignore_direct_roles__ from the request to work with plone 4.\n GetRolesForPrincipal needs to take group roles into account as\n default.\n [sunew]\n\n- Merged many changes from the branches: wichert-flexible,\n wichert-flexible-pw-encryption, zedr-mysql-optimized, auspex.\n\n Version 0.3 is not compatible with the earlier versions, upgrading\n will require some migration (not included).\n [sunew]\n\n- Seperate user_id and login - as in PAS. (Not complete?)\n [wichert]\n\n- Refactor user, group, and principal classes to enable more sharing\n of functionality between groups and users.\n [wichert]\n\n- Length of varchars to be compatible with MySQL\n [auspex, wichert, sunew, zedr]\n\n- Cleaned up the properties - only the plone properties are in the\n model now. Override the model if you need more fields.\n [sunew]\n\n- Password and salt readonly.\n [wichert, sunew]\n\n- remove IUpdatePlugin related stuff. Not used.\n [wichert]\n\n- Make models configurable via dotted path zmi properties.\n [wichert]\n\n- Also make the Principal class configurable.\n [sunew]\n\n- Add missing security declarations (match those for the same methods\n in PlonePAS and PluggableAuthService).\n [sunew]\n\n- Fully implement IRoleAssignerPlugin: missed doRemoveRoleFromPrincipal.\n [sunew]\n\n- More tests, tests pass for plone 4.0.7.\n [sunew]\n\n\n0.2.1 (unreleased)\n------------------------\n\n- Fixed some tests. Now tests passes on plone 4.0.7.\n [sunew]\n\n- Convert to and from UTF-8 and unicode. Plone uses UTF-8 internally\n and most Python deployments will coerce using the 'ascii' codec,\n resulting in unicode decode errors. [mborch]\n\n0.2 (released 2009/7/17)\n------------------------\n\n- Changed the 'listed' and 'ext_editor' column type to 'Integer' match\n the Plone model. [seletz]\n\n0.1 (released 2009/7/17)\n------------------------\n\n- Initial public release.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "web pas plone", "license": "GNU GPL v2", "maintainer": "", "maintainer_email": "", "name": "pas.plugins.sqlalchemy", "package_url": "https://pypi.org/project/pas.plugins.sqlalchemy/", "platform": "", "project_url": "https://pypi.org/project/pas.plugins.sqlalchemy/", "project_urls": null, "release_url": "https://pypi.org/project/pas.plugins.sqlalchemy/0.4.2/", "requires_dist": null, "requires_python": "", "summary": "SQLAlchemy-based PAS user/group/prop store.", "version": "0.4.2" }, "last_serial": 3271935, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "3195a13ca56dc0bd5501e4b591d8d784", "sha256": "a9544f08d627a214ab644893f395c9623b211f3c210fd170e536760d2ccc445c" }, "downloads": -1, "filename": "pas.plugins.sqlalchemy-0.1.tar.gz", "has_sig": false, "md5_digest": "3195a13ca56dc0bd5501e4b591d8d784", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20295, "upload_time": "2009-07-17T13:15:22", "url": "https://files.pythonhosted.org/packages/2d/dd/ff49437145d7b78774ed66895044d4f288da483940079d44ae9ef0833e6d/pas.plugins.sqlalchemy-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "37395d740c624afb1a4481d30a3c6f73", "sha256": "27c0db769407555ea5d6cd3818ddc1116ebadbc022829113cf59f41f8993b127" }, "downloads": -1, "filename": "pas.plugins.sqlalchemy-0.2.tar.gz", "has_sig": false, "md5_digest": "37395d740c624afb1a4481d30a3c6f73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20469, "upload_time": "2009-07-17T14:31:08", "url": "https://files.pythonhosted.org/packages/ba/d5/f46c989081146c21d06ac8dd3bfd1a3c89a2de2c73a08972882e16011d29/pas.plugins.sqlalchemy-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "481d5c8d3047836ffd7720df3da2f69b", "sha256": "456e34531f6d84ad3f9a2ef0065764a3eb01078d7d11cb6839777edf4de93b3e" }, "downloads": -1, "filename": "pas.plugins.sqlalchemy-0.3.tar.gz", "has_sig": false, "md5_digest": "481d5c8d3047836ffd7720df3da2f69b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26169, "upload_time": "2011-10-13T13:26:26", "url": "https://files.pythonhosted.org/packages/58/c6/6d02ee24f0b5c53d2a4944dd176700ad3bbce6f84320c9b1011aa93353a4/pas.plugins.sqlalchemy-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "1226c79f15ecf2e7e432b789c1e04f4e", "sha256": "14ead1060aec7d1ef3864f093e93d9982ac96428271e634fff045ce6422c8664" }, "downloads": -1, "filename": "pas.plugins.sqlalchemy-0.4.tar.gz", "has_sig": false, "md5_digest": "1226c79f15ecf2e7e432b789c1e04f4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25973, "upload_time": "2016-03-31T08:30:10", "url": "https://files.pythonhosted.org/packages/ce/c2/d1d006cf65e2e7806c3de86859e263f218ff2654e0883f097e8c9d6a1e0c/pas.plugins.sqlalchemy-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "02b665d45a3c0b5cbb021f65de63a024", "sha256": "a90108b565e94ab6cfeb391c55481c5e5bb13293a96f66f20e0d7f4e74af7649" }, "downloads": -1, "filename": "pas.plugins.sqlalchemy-0.4.1.tar.gz", "has_sig": false, "md5_digest": "02b665d45a3c0b5cbb021f65de63a024", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26056, "upload_time": "2017-10-23T10:39:49", "url": "https://files.pythonhosted.org/packages/a0/8a/b388ef0fb843fac534ae5b0f97dbc014616f70c90bcff8d8cdf61bbc85f1/pas.plugins.sqlalchemy-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "c06fdba69a307b1cc78b9381b31e403a", "sha256": "e1d662b4550c06c6e33b0081df35d8ad109d9290733ac0b431efa9c6cf54cd9e" }, "downloads": -1, "filename": "pas.plugins.sqlalchemy-0.4.2.tar.gz", "has_sig": false, "md5_digest": "c06fdba69a307b1cc78b9381b31e403a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27445, "upload_time": "2017-10-23T12:16:52", "url": "https://files.pythonhosted.org/packages/11/0e/9b5107219c2e3a996dcaa1a5507b2e73d7f8a10b54c88876c87545554d1a/pas.plugins.sqlalchemy-0.4.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c06fdba69a307b1cc78b9381b31e403a", "sha256": "e1d662b4550c06c6e33b0081df35d8ad109d9290733ac0b431efa9c6cf54cd9e" }, "downloads": -1, "filename": "pas.plugins.sqlalchemy-0.4.2.tar.gz", "has_sig": false, "md5_digest": "c06fdba69a307b1cc78b9381b31e403a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27445, "upload_time": "2017-10-23T12:16:52", "url": "https://files.pythonhosted.org/packages/11/0e/9b5107219c2e3a996dcaa1a5507b2e73d7f8a10b54c88876c87545554d1a/pas.plugins.sqlalchemy-0.4.2.tar.gz" } ] }