{
"info": {
"author": "Martin Aspeli",
"author_email": "optilude@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Framework :: Plone",
"Programming Language :: Python",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "Introduction\n============\n\nThis package provides support for building managing member properties via\nzope.schema type schemata. It installs as a PAS property plugin, which, by\ndefault stores data in the ZODB.\n\nOnce the plugin is installed, you can write a schema interface as normal,\ne.g.::\n\n >>> from zope.interface import Interface\n >>> from zope import schema\n >>> class Hobbies(Interface):\n ... \"\"\"Details member's hobbies\n ... \"\"\"\n ...\n ... favorite_hobby = schema.TextLine(title=u\"Favorite hobby\")\n ... num_hobbies = schema.Int(title=u\"Number of hobbies\", min=0)\n\nIf this was in a module my.memberdata.schema, you could add the following\nto the `schemata` property found in\nacl_users/schema_properties/manage_propertiesForm in your Plone site::\n\n my.memberdata.schema.Hobbies\n\nProperties can then be accessed with the usual API, e.g.::\n\n >>> member.getProperty('favorite_hobby')\n\nNote that field names must be unique. If a field exists in more than one\nschemata, the first schemata listed takes precedence.\n\nDefault fields\n--------------\n\nThere are a number of default fields, split across several schemata. These\nare all found in plone.app.memberschema.default, and include:\n\n Basics -- full name and email address\n Location -- location and language\n Details -- biography and home page\n Settings -- other individual settings\n\nGenericSetup importer\n---------------------\n\nYou can install a new schemata like this using GenericSetup. Add a file called\nmemberschema.xml to your profile, with data like::\n\n \n my.memberdata.schema.Hobbies\n \n\nIf you wish to purge the list before adding your own schemata, set an\nattribute `purge=\"true\"` on the element. By default, your\nnew schema will go at the end of the list. You can change the order by adding\neither an `insert-before` or an `insert-after` attribute to the \nelement. The value is either another fully qualified interface name, or \"*\",\nto indicate that the element should go first/last.\n\nForms\n-----\n\nThe package provides a member data edit form using the plone.autoform package.\nBy default, it will list each schema in its own fieldset. You may annotate\nyour schema interface with the various hints that plone.autform expects,\neither manually, by loading the schema from a plone.supermodel XML file, or\nusing the grokkers in plone.directives.form. See those packages for more\ndetails.\n\nThere are two views provided out of the box: '@@edit-profile' must take a\nuser id as a query string parameter ('id'). It is protected by the permission\nzope2.ManageUsers. '@@my-profile' is used to edit the current user's profile.\nIt is protected by cmf.SetOwnProperties.\n\nNote that this package does not wire the views up anywhere, so you'll need to\nlink to them yourself, and possibly hide or override Plone's standard\n'personalize_form' template.\n\nAlternate storages\n------------------\n\nThe PAS API is still the canonical way to get and set member properties. If\nyou want to make sure that a given field comes from, say, LDAP, the easiest\nway is often to make sure that there's an appropriate PAS plugin activated\nas an IPropertiesPlugin that sits before the schema_properties plugin and\nprovides the relevant property.\n\nAlternatively, if you want to implement your own storage, you can implement\nan `IBags` adapter. This should adapt the plugin (you can, for example, set\na custom marker interface on the plugin class to achieve such an override)\nand must return an `IBag` - really, just an object onto which values can get\nset or from which retrieved.\n\nAcknowledgements\n----------------\n\nplone.app.memberschema draws inspiration from ore.member by Kapil Thangavelu.\n\nChangelog\n=========\n\n1.0a2 - 2009-07-12\n------------------\n\n* Catch up with changes in plone.autoform's API.\n [optilude]\n\n1.0a1 - 2009-04-17\n------------------\n\n* Initial release",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://pypi.python.org/pypi/plone.app.memberschema",
"keywords": "plone zope pas member schema interface",
"license": "GPL",
"maintainer": null,
"maintainer_email": null,
"name": "plone.app.memberschema",
"package_url": "https://pypi.org/project/plone.app.memberschema/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/plone.app.memberschema/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "http://pypi.python.org/pypi/plone.app.memberschema"
},
"release_url": "https://pypi.org/project/plone.app.memberschema/1.0a3/",
"requires_dist": null,
"requires_python": null,
"summary": "Support for storing member data based on interfaces",
"version": "1.0a3"
},
"last_serial": 796368,
"releases": {
"1.0a1": [
{
"comment_text": "",
"digests": {
"md5": "dca06afa020ca42ce2bb8ecd955f7987",
"sha256": "26cd155f2656ae29a8e5f8f26f6317a885856d9381d7350f5970e1d1797c217d"
},
"downloads": -1,
"filename": "plone.app.memberschema-1.0a1.tar.gz",
"has_sig": false,
"md5_digest": "dca06afa020ca42ce2bb8ecd955f7987",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23739,
"upload_time": "2009-04-17T06:54:55",
"url": "https://files.pythonhosted.org/packages/9a/06/9be4bf46addd3bac6900a7ece4272979b7dfa18eab59f5abda8a61ecb7e6/plone.app.memberschema-1.0a1.tar.gz"
}
],
"1.0a2": [
{
"comment_text": "",
"digests": {
"md5": "0d38250e2ee6beb813061b814b5071ab",
"sha256": "f031256effc9829c9e61fca8ecb746ea6688be0728bd31b84153def5298fc1c1"
},
"downloads": -1,
"filename": "plone.app.memberschema-1.0a2.tar.gz",
"has_sig": false,
"md5_digest": "0d38250e2ee6beb813061b814b5071ab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23668,
"upload_time": "2009-07-12T10:31:18",
"url": "https://files.pythonhosted.org/packages/70/1e/4f042a9ef52ddbf38f0290ba7d6a25ddf0e51f5a612fce8f56da9914d178/plone.app.memberschema-1.0a2.tar.gz"
}
],
"1.0a3": [
{
"comment_text": "",
"digests": {
"md5": "c1dbb7f446d0d1acd5294c2fdca839da",
"sha256": "e999dc0ab029d119a5f0c8aa536bfe9b311c9b37d7b69bc536a9d64df8b451f2"
},
"downloads": -1,
"filename": "plone.app.memberschema-1.0a3.tar.gz",
"has_sig": false,
"md5_digest": "c1dbb7f446d0d1acd5294c2fdca839da",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23653,
"upload_time": "2009-07-12T17:20:58",
"url": "https://files.pythonhosted.org/packages/c0/bd/364f075257fffc3133e43d35c2a01d043d68b0e1fcf8acc8131da348bf6f/plone.app.memberschema-1.0a3.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "c1dbb7f446d0d1acd5294c2fdca839da",
"sha256": "e999dc0ab029d119a5f0c8aa536bfe9b311c9b37d7b69bc536a9d64df8b451f2"
},
"downloads": -1,
"filename": "plone.app.memberschema-1.0a3.tar.gz",
"has_sig": false,
"md5_digest": "c1dbb7f446d0d1acd5294c2fdca839da",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23653,
"upload_time": "2009-07-12T17:20:58",
"url": "https://files.pythonhosted.org/packages/c0/bd/364f075257fffc3133e43d35c2a01d043d68b0e1fcf8acc8131da348bf6f/plone.app.memberschema-1.0a3.tar.gz"
}
]
}