{ "info": { "author": "Martin Aspeli", "author_email": "optilude@gmail.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Plone :: 5.1", "Framework :: Plone :: 5.2", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "plone.autoform\n==============\n\n.. contents:: Contents\n\nIntroduction\n------------\n\n``plone.autoform`` builds custom `z3c.form`_ forms based on a model (schema)\nof what fields to include and what widgets and options should be used for each\nfield. This model is defined as a `zope.schema`_-based schema, but additional\nhints can be supplied to control aspects of form display not normally specified\nin a Zope schema.\n\n\nBasic schema-based forms\n------------------------\n\nTo use the automatic form setup, mix in the following base class in your\nforms::\n\n >>> from plone.autoform.form import AutoExtensibleForm\n\nand then provide the ``schema`` (a schema interface) and optionally the\n``additionalSchemata`` (a list of schema interfaces) attributes on your form::\n\n class MyForm(AutoExtensibleForm, form.EditForm):\n schema = IMySchema\n additionalSchemata = (ISchemaOne, ISchemaTwo,)\n # ...\n\nFor dynamic forms, you could of course make ``schema`` and\n``additionalSchemata`` into properties. For example, `plone.dexterity`_ extends the\nbasic AutoExtensibleForm so that ``schema`` is the content type schema and\n``additionalSchemata`` is a list of field provider schemas associated with\nbehaviors.\n\n\nControlling form presentation\n-----------------------------\n\nDirectives can be specified in the schema to control aspects of form presentation.\n\nChanging a field's display mode\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nA field's widget can be displayed in several \"modes\":\n\n* input - allows the user to enter data into the field\n* display - a read-only indication of the field's value\n* hidden - a record of the field's value that is included only in the HTML source\n\nThe mode can be controlled using the ``mode`` directive::\n\n from plone.supermodel import model\n from plone.autoform import directives as form\n\n class IMySchema(model.Schema):\n\n form.mode(secret='hidden')\n form.mode(IEditForm, secret='input')\n secret = schema.TextLine(\n title=u\"Secret\",\n default=u\"Secret stuff (except on edit forms)\"\n )\n\nIn this case the mode for the ``secret`` field is set to 'hidden' for most forms,\nbut 'input' for forms that provide the IEditForm interface.\n\nThe corresponding supermodel XML directive is ``form:mode``::\n\n \n Secret\n Secret stuff (except on edit forms)\n \n\nThe mode can be specified briefly if it should be the same for all forms::\n\n \n Secret\n Secret stuff\n \n\nIn other words, ``form:mode`` may be either a single mode, or a space-separated\nlist of form_interface:mode pairs.\n\n\nOmitting fields\n~~~~~~~~~~~~~~~\n\nA field can be omitted entirely from all forms, or from some forms,\nusing the ``omitted`` and ``no_omit`` diretives. In this example,\nthe ``dummy`` field is omitted from all forms, and the ``edit_only``\nfield is omitted from all forms except those that provide the\nIEditForm interface::\n\n from z3c.form.interfaces import IEditForm\n from plone.supermodel import model\n from plone.autoform import directives as form\n\n class IMySchema(model.Schema):\n\n form.omitted('dummy')\n dummy = schema.Text(\n title=u\"Dummy\"\n )\n\n form.omitted('edit_only')\n form.no_omit(IEditForm, 'edit_only')\n edit_only = schema.TextLine(\n title = u'Only included on edit forms',\n )\n\nIn supermodel XML, this can be specified as::\n\n \n Dummy\n \n\n \n Only included on edit form\n \n\n``form:omitted`` may be either a single boolean value, or a space-separated\nlist of form_interface:boolean pairs.\n\n\nRe-ordering fields\n~~~~~~~~~~~~~~~~~~\n\nA field's position in the form can be influenced using the ``order_before``\nand ``order_after`` directives. In this example, the ``not_last`` field\nis placed before the ``summary`` field even though it is defined afterward::\n\n from plone.supermodel import model\n from plone.autoform import directives as form\n\n class IMySchema(model.Schema):\n\n summary = schema.Text(\n title=u\"Summary\",\n description=u\"Summary of the body\",\n readonly=True\n )\n\n form.order_before(not_last='summary')\n not_last = schema.TextLine(\n title=u\"Not last\",\n )\n\nThe value passed to the directive may be either '*' (indicating before or after\nall fields) or the name of another field. Use ``'.fieldname'`` to refer to\nfield in the current schema or a base schema. Prefix with the schema name (e.g.\n``'IDublinCore.title'``) to refer to a field in another schema. Use an\nunprefixed name to refer to a field in the current or the default schema for\nthe form.\n\nIn supermodel XML, the directives are called ``form:before`` and ``form:after``.\nFor example::\n\n \n Not last\n \n\n\nOrganizing fields into fieldsets\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nFields can be grouped into fieldsets, which will be rendered within an HTML\n``
`` tag. In this example the ``footer`` and ``dummy`` fields\nare placed within the ``extra`` fieldset::\n\n from plone.supermodel import model\n from plone.autoform import directives as form\n\n class IMySchema(model.Schema):\n\n model.fieldset('extra',\n label=u\"Extra info\",\n fields=['footer', 'dummy']\n )\n\n footer = schema.Text(\n title=u\"Footer text\",\n )\n\n dummy = schema.Text(\n title=u\"Dummy\"\n )\n\nIn supermodel XML fieldsets are specified by grouping fields within a\n``
`` tag::\n\n
\n \n Footer text\n \n \n Dummy\n \n
\n\n\nChanging a field's widget\n~~~~~~~~~~~~~~~~~~~~~~~~~\n\nUsually, z3c.form picks a widget based on the type of your field.\nYou can change the widget using the ``widget`` directive if you want\nusers to enter or view data in a different format. For example,\nhere we change the widget for the ``human`` field to use yes/no\nradio buttons instead of a checkbox::\n\n from plone.supermodel import model\n from plone.autoform import directives as form\n from z3c.form.browser.radio import RadioFieldWidget\n\n class IMySchema(model.Schema):\n form.widget('human', RadioFieldWidget)\n human = schema.Bool(\n title = u'Are you human?',\n )\n\nYou can also pass widget parameters to control attributes of the\nwidget. For example, here we keep the default widget, but\nset a CSS class::\n\n from plone.supermodel import model\n from plone.autoform import directives as form\n from z3c.form.browser.radio import RadioWidget\n\n class IMySchema(model.Schema):\n form.widget('human', klass='annoying')\n human = schema.Bool(\n title = u'Are you human?',\n )\n\nIn supermodel XML the widget is specified using a ```` tag, which\ncan have its own elements specifying parameters::\n\n \n Are you human?\n \n annoying\n \n \n\nNote: In order to be included in the XML representation of a schema,\nwidget parameters must be handled by a WidgetExportImportHandler utility.\nThere is a default one which handles the attributes defined in\n``z3c.form.browser.interfaces.IHTMLFormElement``.\n\nProtect a field with a permission\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nBy default, fields are included in the form regardless of the user's\npermissions. Fields can be protected using the ``read_permission``\nand ``write_permission`` directives. The read permission is checked when\nthe field is in display mode, and the write permission is checked when\nthe field is in input mode. The permission should be given with its\nZope 3-style name (i.e. cmf.ManagePortal rather than 'Manage portal').\n\nIn this example, the ``secret`` field is protected by the\n``cmf.ManagePortal`` permission as both a read and write permission.\nThis means that in both display and input modes, the field will\nonly be included in the form for users who have that permission::\n\n from plone.supermodel import model\n from plone.autoform import directives as form\n\n class IMySchema(model.Schema):\n form.read_permission(secret='cmf.ManagePortal')\n form.write_permission(secret='cmf.ManagePortal')\n secret = schema.TextLine(\n title = u'Secret',\n )\n\nIn supermodel XML the directives are ``security:read-permission`` and\n``security:write-permission``::\n\n \n Secret\n \n\nDisplay Forms\n-------------\n\nSometimes rather than rendering a form for data entry, you want to display\nstored values based on the same schema. This can be done using a \"display form.\"\nThe display form renders each field's widget in \"display mode,\" which means\nthat it shows the field value in read-only form rather than as a form input.\n\nTo use the display form, create a view that extends ``WidgetsView`` like this:\n\n >>> from plone.autoform.view import WidgetsView\n >>> class MyView(WidgetsView):\n ... schema = IMySchema\n ... additionalSchemata = (ISchemaOne, ISchemaTwo,)\n ...\n ... # ...\n\nTo render the form, do not override ``__call__()``. Instead, either implement\nthe ``render()`` method, set an ``index`` attribute to a page template or\nother callable, or use the ``template`` attribute of the ````\nZCML directive when registering the view.\n\nIn the template, you can use the following variables:\n\n* ``view/w`` is a dictionary of all widgets, including those from non-default\n fieldsets (by contrast, the ``widgets`` variable contains only those\n widgets in the default fieldset). The keys are the field names, and the\n values are widget instances. To render a widget (in display mode), you can\n do ``tal:replace=\"structure view/w/myfield/render\" />``.\n* ``view/fieldsets`` is a dictionary of all fieldsets (not including the\n default fieldset, i.e. those widgets not placed into a fieldset). They keys\n are the fieldset names, and the values are the fieldset form instances,\n which in turn have variables like ``widgets`` given a list of all widgets.\n\n\nBehind the scenes: how autoform directives work\n-----------------------------------------------\n\nZope schema fields do not allow storing arbitrary key-value data associated\nwith a particular field. However, arbitrary data can be stored in a\ndictionary on the schema (interface) known as the \"tagged values.\"\nThis is where ``plone.autoform`` keeps track of its extra hints,\nwhether they are configured via Python directives, an XML model, or some\nother way.\n\nThe tagged values are stored under various keys, which are defined\nin the ``plone.autoform.interfaces`` module. They can be set several ways:\n\n* Manually, by using ``setTaggedValue()`` on an interface.\n* By loading the schema from a `plone.supermodel`_ XML file and using the\n ``form:`` prefix\n* By using the directives from ``plone.autoform.directives`` while defining\n a schema in Python.\n\nSource Code\n===========\n\nContributors please read the document `Process for Plone core's development `_\n\nSources are at the `Plone code repository hosted at Github `_.\n\n\n.. _z3c.form: http://pypi.python.org/pypi/z3c.form\n.. _zope.schema: http://pypi.python.org/pypi/zope.schema\n.. _plone.supermodel: http://pypi.python.org/pypi/plone.supermodel\n.. _plone.dexterity: http://pypi.python.org/pypi/plone.dexterity\n\nChangelog\n=========\n\n1.8.1 (2018-10-31)\n------------------\n\nBug fixes:\n\n- Remove the dummy security manager on test tear down\n [ale-rt]\n\n\n1.8.0 (2018-09-26)\n------------------\n\nNew features:\n\n- Add support for python 3\n [pbauer]\n\n\n1.7.5 (2018-02-04)\n------------------\n\nBug fixes:\n\n- Prepare for Python 2 / 3 compatibility\n [pbauer]\n\n- Minor fixes on testing that could avoid having test isolation problems.\n [gforcada]\n\n1.7.4 (2017-11-24)\n------------------\n\nNew features:\n\n- Allow configuration of fieldsets via ``plone.supermodel`` fieldset directives via a schema without fields.\n This can be used to create a Plone behavior for stable ordering of fieldsets.\n [thet]\n\n- Add handler registration for text input widgets to support e.g. 'placeholder'\n parameter in parameterized widgets\n [datakurre]\n\n\n\n1.7.3 (2017-06-03)\n------------------\n\nBug fixes:\n\n- Reduce field move failure logging from error to warning.\n Log more information like full rule.\n [jensens]\n\n- Fix traceback in updateFieldsFromSchemata for forms with no schema.\n [davisagli]\n\n- Clean up code.\n [gforcada]\n\n- Remove unittest2 dependency\n [kakshay21]\n\n\n1.7.2 (2017-04-01)\n------------------\n\nNew features:\n\n- Make of tracebacks of ``plone.autoform.widgets.ParameterizedWidget`` calls more verbose in order to ease debugging.\n [jensens]\n\n\n1.7.1 (2017-02-12)\n------------------\n\nBug fixes:\n\n- Make sure WidgetsView doesn't use acquisition in Zope 4. [davisagli]\n\n\n1.7.0 (2016-06-07)\n------------------\n\nIncompatibilities:\n\n- Because of the ordering fix the field order in forms may be different.\n Before this fix the order was a gamble dependent on schema order.\n Schema form hints ``order_after`` and ``order_before`` may need minor adjustments.\n ``plone.autoform.utils.processFieldMoves`` was deprecated,\n but still works as before.\n The new functionality is now part of ``plone.autoform.base.AutoFields``.\n [jensens]\n\nNew:\n\n- Fieldset labels/descriptions we're taken from first occurence.\n It was not possible to override them in a subsequent directive.\n Also it was not possible to set them in a subsequent directive, if it was not set before.\n Now subsequent directives w/o a label/description are just adding the field to the fieldset.\n If a different label and/or description is given, it replaces the existing prior loaded one.\n [jensens]\n\n- The order of the fieldsets can be defined now explictly with the ``plone.supermodel.directives.fieldset`` directive.\n ``plone.autoform`` now does the sorting while fieldset processing.\n [jensens]\n\nFixes:\n\n- Implementation on how field ordering happens was unreproducible if same schemas are coming in in different orders.\n New implementation build a well defined rule tree and processes then the field moves,\n almost independent from the schema order.\n [jensens]\n\n- Update setup.py url\n [esteele]\n\n\n1.6.2 (2016-02-20)\n------------------\n\nFixes:\n\n- Fix test for changed ``zope.interface`` comparison method, which\n incorrectly reports two different Interfaces from the same module\n but with empty name as being equal. [thet]\n\n\n1.6.1 (2014-10-20)\n------------------\n\n- pep8 cleanup, utf8-header,sorted imports, readability, ...\n [jensens]\n\n- Fix issue where multiple (plone.supermodel) fieldset directive calls for the\n same fieldset name resulted to duplicate fieldsets (e.g. when updating\n fieldset with new fields in a subschema)\n [datakurre]\n\n\n1.6 (2014-02-22)\n----------------\n\n- Replace deprecated test assert statements.\n [timo]\n\n- Support anonymous schema (dynamic interfaces with and empty\n __name__ attribute) in autoGroups, opting to use prefix as\n group name for such cases. This allows subclasses of\n AutoExtensibleForm to implement getPrefix() method as\n a sufficient condition to support an unnamed schema.\n [seanupton]\n\n\n1.5 (2013-08-14)\n----------------\n\n- Added an option on form to allow display of empty fieldsets.\n [thomasdesvenain]\n\n- fix tests\n [vangheem]\n\n\n1.4 (2013-05-23)\n----------------\n\n- Enhance the widget directive to allow for specifying widget parameters\n within the schema.\n [davisagli]\n\n- Support passing widget classes in the widget directive in addition to\n IFieldWidgets.\n [davisagli]\n\n- Support serializing widget parameters to XML. This requires implementing\n a IWidgetExportImportHandler utility for the widget type.\n [davisagli]\n\n\n1.3 (2012-08-30)\n----------------\n\n- Avoid dependency on z3c.form.testing.\n [hannosch]\n\n1.2 (2012-04-15)\n----------------\n\n- Moved form schema directives here from plone.directives.form, and\n reimplemented them as plone.supermodel directives to avoid depending on\n grok. Included directives: omitted, no_omit, mode, widget, order_before,\n order_after, read_permission, write_permission\n [davisagli]\n\n1.1 - 2012-02-20\n----------------\n\n- Added the AutoObjectSubForm class to support form hints for\n object widget subforms.\n [jcbrand]\n\n1.0 - 2011-05-13\n----------------\n\n- Raise a NotImplementedError instead of NotImplemented as that is not\n an exception but meant for comparisons and is not callable.\n [maurits]\n\n\n1.0b7 - 2011-04-29\n------------------\n\n- Check to make sure that interfaces and field widgets resolved by the\n supermodel handler are of the correct type.\n [elro]\n\n- Add form:validator support for supermodel.\n [elro]\n\n- Fix issue where permission checks were not applied correctly to schemas being\n added with prefixes.\n [davisagli]\n\n- Add MANIFEST.in.\n [WouterVH]\n\n\n1.0b6 - 2011-02-11\n------------------\n\n- Fix WidgetsView so that _update and update do not clash.\n [elro]\n\n- Fix view.txt doctest to test actual behaviour, not artifacts from test setup.\n [elro]\n\n\n1.0b5 - 2011-01-11\n------------------\n\n- Use five.ManageSite permission to check field permissions. We'll avoid\n sniffing for Five/CMFCore permissions.zcml difference between Zope 2.12 and\n 2.13. [esteele]\n\n\n1.0b4 - 2010-08-05\n------------------\n\n- Fixed widget traversal for WidgetsView\n http://groups.google.com/group/dexterity-development/browse_frm/thread/280016ece3ed1462\n [29.08.2010, jbaumann]\n\n- Make field permission checks use the field mode rather than the form mode.\n Fixes http://code.google.com/p/dexterity/issues/detail?id=110\n [optilude]\n\n- Removed some dead code.\n Fixes http://code.google.com/p/dexterity/issues/detail?id=132\n [optilude, shywolf9982]\n\n\n1.0b3 - 2010-04-20\n------------------\n\n- Properly handle the 'omitted' tagged value when it is set to 'false' for a\n field.\n [davisagli]\n\n- Make it possible to set the 'omitted' and 'mode' settings only for particular\n form interfaces.\n [davisagli]\n\n- Do not omit read-only fields when rendering a form in DISPLAY mode.\n http://code.google.com/p/dexterity/issues/detail?id=118\n [mj]\n\n\n1.0b2 - 2009-07-12\n------------------\n\n- Changed API methods and arguments to mixedCase to be more consistent with\n the rest of Zope. This is a non-backwards-compatible change. Our profuse\n apologies, but it's now or never. :-/\n\n If you find that you get import errors or unknown keyword arguments in your\n code, please change names from foo_bar too fooBar, e.g. process_fields()\n becomes processFields().\n\n Note in particular that the additional_schemata property is now called\n additionalSchemata. If you have implemented this property yourself, you will\n need to rename it!\n [optilude]\n\n\n1.0b1 - 2009-04-17\n------------------\n\n- Initial release\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/plone/plone.autoform", "keywords": "plone form z3c.form", "license": "LGPL", "maintainer": "", "maintainer_email": "", "name": "plone.autoform", "package_url": "https://pypi.org/project/plone.autoform/", "platform": "", "project_url": "https://pypi.org/project/plone.autoform/", "project_urls": { "Homepage": "http://github.com/plone/plone.autoform" }, "release_url": "https://pypi.org/project/plone.autoform/1.8.1/", "requires_dist": [ "setuptools", "six", "zope.interface", "zope.schema", "zope.security", "zope.dottedname", "plone.supermodel (>=1.3.dev0)", "plone.z3cform (>=0.9.0.dev0)", "z3c.form" ], "requires_python": "", "summary": "Tools to construct z3c.form forms", "version": "1.8.1" }, "last_serial": 4439041, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "b3668b52749a3ed100a61db2d17d70bb", "sha256": "c6d9054d200aaf62e34c7229a91c95fdbfac19d48920254c0e0f4cf4a420da24" }, "downloads": -1, "filename": "plone.autoform-1.0.zip", "has_sig": false, "md5_digest": "b3668b52749a3ed100a61db2d17d70bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69844, "upload_time": "2011-05-13T18:28:56", "url": "https://files.pythonhosted.org/packages/4d/ac/c8ac937f82f80da6068bfd4158ad8d85da97d474a1f2b817034714642aaf/plone.autoform-1.0.zip" } ], "1.0b1": [ { "comment_text": "", "digests": { "md5": "c33c6f016a71ec99b5c1b6300c1554af", "sha256": "8e842d3997dd3206a550188ddbd4babfa088f508552491f0e3e916f085a012f1" }, "downloads": -1, "filename": "plone.autoform-1.0b1.tar.gz", "has_sig": false, "md5_digest": "c33c6f016a71ec99b5c1b6300c1554af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21736, "upload_time": "2009-04-17T06:23:55", "url": "https://files.pythonhosted.org/packages/8d/bb/468112650c5c5e70c85050e94082cfd3906b1e56315172486933f64bf639/plone.autoform-1.0b1.tar.gz" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "ae5e09813790856435ce64566c56869e", "sha256": "a24e15e8bd44f21047bca40fc96d56cda8b449e3ff76da5c23812497956264f4" }, "downloads": -1, "filename": "plone.autoform-1.0b2.tar.gz", "has_sig": false, "md5_digest": "ae5e09813790856435ce64566c56869e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22325, "upload_time": "2009-07-12T10:26:07", "url": "https://files.pythonhosted.org/packages/b0/6c/e51134c604fd8cf3259935ee866ce6cd06f0c3deb6d7ab9ca0a428c26692/plone.autoform-1.0b2.tar.gz" } ], "1.0b3": [ { "comment_text": "", "digests": { "md5": "fedf6addc08a766d370273ddfa7d07e2", "sha256": "e692ef222910b3390cb97eac1c8b71804e77ad53c4e6cf945ebae1e6dfb817e3" }, "downloads": -1, "filename": "plone.autoform-1.0b3.zip", "has_sig": true, "md5_digest": "fedf6addc08a766d370273ddfa7d07e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47664, "upload_time": "2010-04-20T09:41:57", "url": "https://files.pythonhosted.org/packages/83/67/7f8f357c34b31e2bd118f921c4ce0a5b7763ff7b2a0596adb108e6ce6a68/plone.autoform-1.0b3.zip" } ], "1.0b4": [ { "comment_text": "", "digests": { "md5": "afb3c728081189c6bf1d28d0205c5bb0", "sha256": "238946bf00c872a93f53274e1408a64316884e8b0da43b84ecc679f0b70bbbfe" }, "downloads": -1, "filename": "plone.autoform-1.0b4.zip", "has_sig": false, "md5_digest": "afb3c728081189c6bf1d28d0205c5bb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47935, "upload_time": "2010-08-05T07:05:04", "url": "https://files.pythonhosted.org/packages/bb/76/53be2e073b7e13dfe27047fe0f29ec0edcbaa10db9fdc470006cc2eb3614/plone.autoform-1.0b4.zip" } ], "1.0b5": [ { "comment_text": "", "digests": { "md5": "2bb1b33e4c3a8866f5fcc4041d488f76", "sha256": "3cce7e7cf52b56e7ff6cc589f5093ce34735788732729f188f4eabc0e235b80a" }, "downloads": -1, "filename": "plone.autoform-1.0b5.zip", "has_sig": false, "md5_digest": "2bb1b33e4c3a8866f5fcc4041d488f76", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48995, "upload_time": "2011-01-11T22:39:12", "url": "https://files.pythonhosted.org/packages/ba/3f/5a27c9a79dcf68134d26208df75e3393fb7353286b24a606de5a6f94b9dc/plone.autoform-1.0b5.zip" } ], "1.0b6": [ { "comment_text": "", "digests": { "md5": "d3ef73d08e92a548ccb454130c7b866e", "sha256": "abd28c381ccee8a68d8cbf82570eac69e2186745ab6aacd2e43de5d636de3e3b" }, "downloads": -1, "filename": "plone.autoform-1.0b6.zip", "has_sig": false, "md5_digest": "d3ef73d08e92a548ccb454130c7b866e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49084, "upload_time": "2011-02-11T17:41:34", "url": "https://files.pythonhosted.org/packages/60/a6/1d7e5e544751ec829aab1622d39c104279ec7f662d039292ec164c41c5f3/plone.autoform-1.0b6.zip" } ], "1.0b7": [ { "comment_text": "", "digests": { "md5": "4147d1d55146518643c2163a5b9041a5", "sha256": "92b01174eef813632db1e7c12ba1f004b4fac54de30b7fc7fad5a3874e9fc31d" }, "downloads": -1, "filename": "plone.autoform-1.0b7.zip", "has_sig": false, "md5_digest": "4147d1d55146518643c2163a5b9041a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69675, "upload_time": "2011-04-29T15:01:37", "url": "https://files.pythonhosted.org/packages/b0/d6/b4ef2578716ddeaf7ff3bd208a204257a6ca2c8cbc9ba1df059fc7e94421/plone.autoform-1.0b7.zip" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "1e7708d55b3d88f5f361d177f7e3f6e7", "sha256": "c6f304f0d3492ffdd3525da4ff0f36b795ca310bcab2a1fd17cdea10864c59c2" }, "downloads": -1, "filename": "plone.autoform-1.1.zip", "has_sig": false, "md5_digest": "1e7708d55b3d88f5f361d177f7e3f6e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54109, "upload_time": "2012-02-21T04:14:17", "url": "https://files.pythonhosted.org/packages/19/b8/0f3d164d019dd33f3c92fe2c34967767e738289bbca961be1a710fbacd2d/plone.autoform-1.1.zip" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "f6d73e2d46d3f19601e919ce1f0ef10c", "sha256": "79c39b02fa60ffb5043ac7694fc9b774aab8aa9f56f0818b41d01f6562f27ec6" }, "downloads": -1, "filename": "plone.autoform-1.2.zip", "has_sig": false, "md5_digest": "f6d73e2d46d3f19601e919ce1f0ef10c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59841, "upload_time": "2012-04-15T19:58:23", "url": "https://files.pythonhosted.org/packages/f7/79/cfc60c9ad7a36d8f987a52268da9e157101157c3eff5fecfbf307b96bbe5/plone.autoform-1.2.zip" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "4cb2935ba9cda3eb3ee801ad8cda7c60", "sha256": "b8c4c8f3fabd9f6d669595494fba4a6a18aaf521daf85165a50335e97b88f071" }, "downloads": -1, "filename": "plone.autoform-1.3.zip", "has_sig": false, "md5_digest": "4cb2935ba9cda3eb3ee801ad8cda7c60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60107, "upload_time": "2012-08-30T14:55:04", "url": "https://files.pythonhosted.org/packages/33/cf/d14d6a37f0a5193b3c67373c0a45da3f88ed8f196f91e20b8b74b767a877/plone.autoform-1.3.zip" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "01e5ccb59253bfaaa02c1ab4be3f212f", "sha256": "a447f9be51363435082309a61137ada2de66d94eee118d1c3f9934fdf051282f" }, "downloads": -1, "filename": "plone.autoform-1.4.zip", "has_sig": false, "md5_digest": "01e5ccb59253bfaaa02c1ab4be3f212f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58384, "upload_time": "2013-05-24T01:51:56", "url": "https://files.pythonhosted.org/packages/7d/b1/cd6ea358ef5c18392058503aaf48b3ced9d55027267b99d46bf9e2dbd348/plone.autoform-1.4.zip" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "a62216fb76017077643f5af8b1e17949", "sha256": "851679000977a69cc68de5a3d5ce008f87389c13bbe4628bf737becb755c0512" }, "downloads": -1, "filename": "plone.autoform-1.5.zip", "has_sig": false, "md5_digest": "a62216fb76017077643f5af8b1e17949", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58465, "upload_time": "2013-08-13T22:19:30", "url": "https://files.pythonhosted.org/packages/dd/bf/94fecbf2b6fef21cde42907486c1391a4f567572782d8f4c253611a494c1/plone.autoform-1.5.zip" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "27412ab43f728064a60e2aeb564726b5", "sha256": "b637dd7851ae69ad75cd660b218fc111d7f115b05e4431402a3b0e3627d93a5a" }, "downloads": -1, "filename": "plone.autoform-1.6.zip", "has_sig": false, "md5_digest": "27412ab43f728064a60e2aeb564726b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59277, "upload_time": "2014-02-25T19:27:06", "url": "https://files.pythonhosted.org/packages/00/25/f0267b73fd46bed03b19d5fcb1b1e1628763a3e7aa1b2a14a5b5d24c6e51/plone.autoform-1.6.zip" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "211ad073876a9d5385efae27da985548", "sha256": "9f1914cdcee9269086803bec009a89edd2826b70427d458cf57757951b807942" }, "downloads": -1, "filename": "plone.autoform-1.6.1.zip", "has_sig": false, "md5_digest": "211ad073876a9d5385efae27da985548", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61033, "upload_time": "2014-10-20T18:48:43", "url": "https://files.pythonhosted.org/packages/7c/f1/dbec1011f4f2c7e8bd1cff565e2cae527911c9c15fbfd0a9b0bc509dd436/plone.autoform-1.6.1.zip" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "f21e43c605ded798f115209fb24f57e8", "sha256": "b104a48a7ee2a7bd5f20839f37518829eeea7603db5377f0901fe6386828f2e6" }, "downloads": -1, "filename": "plone.autoform-1.6.2.tar.gz", "has_sig": false, "md5_digest": "f21e43c605ded798f115209fb24f57e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45047, "upload_time": "2016-02-20T22:51:46", "url": "https://files.pythonhosted.org/packages/c3/c3/6634081a1dab3f20977c8ad86aad45417dd8c423d3f6f83e20c7511cba73/plone.autoform-1.6.2.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "a8fbeefec81d1f9dddca0c2222c7ca44", "sha256": "4d95abdb8e9d782e17a5663dabfbc7f175f4222a75db148451a27937449371cb" }, "downloads": -1, "filename": "plone.autoform-1.7.0.tar.gz", "has_sig": false, "md5_digest": "a8fbeefec81d1f9dddca0c2222c7ca44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49030, "upload_time": "2016-06-07T16:35:13", "url": "https://files.pythonhosted.org/packages/c2/09/8fdae8772d954850b76797d1817dc5da538168499833ec12ce07f3042745/plone.autoform-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "a373b13a5f68a1623799bdb14bf87363", "sha256": "49fb407a4e484e152d848c08527353a7113e003736b4384ad2d82b35ca0b46a3" }, "downloads": -1, "filename": "plone.autoform-1.7.1.tar.gz", "has_sig": false, "md5_digest": "a373b13a5f68a1623799bdb14bf87363", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49126, "upload_time": "2017-02-12T22:19:46", "url": "https://files.pythonhosted.org/packages/e0/ab/f5f6adbb64f215f193be7f2e9263ed7ca6e44abc1311d54546582e8b1400/plone.autoform-1.7.1.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "e85fe82ce154c76b0e75c8de2f230e69", "sha256": "6ddd8b12b91a82eed1f174c3f602ac007b99c0dd9ed31e6bd0689478346fe565" }, "downloads": -1, "filename": "plone.autoform-1.7.2.tar.gz", "has_sig": false, "md5_digest": "e85fe82ce154c76b0e75c8de2f230e69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49541, "upload_time": "2017-04-01T18:39:17", "url": "https://files.pythonhosted.org/packages/d9/02/c71f692b8c2d4244cfb16a78a992e76d7346f5b13ae3462f91fe9003c243/plone.autoform-1.7.2.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "53e3d6848300b457d2fd06beac5d758e", "sha256": "feb142567513f4816421d64abc64a31ff56683d6e36ec60076922da2f375656d" }, "downloads": -1, "filename": "plone.autoform-1.7.3-py2-none-any.whl", "has_sig": false, "md5_digest": "53e3d6848300b457d2fd06beac5d758e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 51860, "upload_time": "2017-06-03T19:14:17", "url": "https://files.pythonhosted.org/packages/5e/2b/fcaef360143d34c2da2a1875f6ced0cf5bde40f47e3cf1dcf88beb5a17b1/plone.autoform-1.7.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00d1c6694024e5a873db6beb55e6cc84", "sha256": "1c27421617f95df59b58c4f3b9ffff3f8d3a797b04bda7cc9cefd7a5be72b73b" }, "downloads": -1, "filename": "plone.autoform-1.7.3.tar.gz", "has_sig": false, "md5_digest": "00d1c6694024e5a873db6beb55e6cc84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49961, "upload_time": "2017-06-03T19:14:19", "url": "https://files.pythonhosted.org/packages/88/d1/00d8d1ab3665845f3614fae89ce5c7596f7e01ec317d03066c5fff0aeea6/plone.autoform-1.7.3.tar.gz" } ], "1.7.4": [ { "comment_text": "", "digests": { "md5": "8c9325c03e6f0484f80b441993a4ddfd", "sha256": "8d6c09e7ded017201715fd02b3fc71b46edc493d308cb4dcf8164e6553241387" }, "downloads": -1, "filename": "plone.autoform-1.7.4-py2-none-any.whl", "has_sig": false, "md5_digest": "8c9325c03e6f0484f80b441993a4ddfd", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 52469, "upload_time": "2017-11-25T01:30:38", "url": "https://files.pythonhosted.org/packages/c4/b5/19136c8a6bf0150bb30ff46f5e3b748c3730a26f947e259a01f957cf58ae/plone.autoform-1.7.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "138dd32cb2faf339cc31aa6dd38e75f7", "sha256": "2f47e1de8e675fe65e33759363208d614414f4d85a3f3ce49816d415cbe75f97" }, "downloads": -1, "filename": "plone.autoform-1.7.4.tar.gz", "has_sig": false, "md5_digest": "138dd32cb2faf339cc31aa6dd38e75f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49184, "upload_time": "2017-11-25T01:30:40", "url": "https://files.pythonhosted.org/packages/30/ce/0a07b8462e1f01692832e492349a138ab33b4f3de5415d3ceef2ece542a7/plone.autoform-1.7.4.tar.gz" } ], "1.7.5": [ { "comment_text": "", "digests": { "md5": "af8ad3fcf7485c64d6015a6c7078617f", "sha256": "51c8ef96c951000b8eeb4d4e60fd4519bbd44ac2858644841b90295531502b27" }, "downloads": -1, "filename": "plone.autoform-1.7.5-py2-none-any.whl", "has_sig": false, "md5_digest": "af8ad3fcf7485c64d6015a6c7078617f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 52725, "upload_time": "2018-02-04T22:23:29", "url": "https://files.pythonhosted.org/packages/39/d1/a0c9ceaf0a742ca9ecf1662eebdc1882d7e789bb6ecf04682b659e2c0b81/plone.autoform-1.7.5-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "960e13be36e26d4e576f957d82188887", "sha256": "c37b55752c4e708d5619fd9e187f2b5187f546bc555e921a3fb0f54f73bd3207" }, "downloads": -1, "filename": "plone.autoform-1.7.5.tar.gz", "has_sig": false, "md5_digest": "960e13be36e26d4e576f957d82188887", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48220, "upload_time": "2018-02-04T22:23:32", "url": "https://files.pythonhosted.org/packages/6c/db/7c5837c107cc143c7e34701f411b45492f7d1fba8e03bf5ecbae63ef92e6/plone.autoform-1.7.5.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "ef291357b30118b0d267d9cad0cfc70a", "sha256": "27d9f51c7816621e39166dbddd52b34cf79f0224d05953eaf40d264c4180d0c2" }, "downloads": -1, "filename": "plone.autoform-1.8.0-py2-none-any.whl", "has_sig": false, "md5_digest": "ef291357b30118b0d267d9cad0cfc70a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 45396, "upload_time": "2018-09-26T16:25:42", "url": "https://files.pythonhosted.org/packages/e7/f6/10bb819df5daffa97494bd91d00d1af5f22d12e5d5a21f09979b222dc77d/plone.autoform-1.8.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44a6e4514f1d3e4663935652ac9b59ee", "sha256": "1b0cb5ba6071ba27354fdab74f7b461d271e4245022758fd5f570f78571fc4da" }, "downloads": -1, "filename": "plone.autoform-1.8.0.tar.gz", "has_sig": false, "md5_digest": "44a6e4514f1d3e4663935652ac9b59ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50133, "upload_time": "2018-09-26T16:25:43", "url": "https://files.pythonhosted.org/packages/72/26/823a37f8a68dc5aeccc61bcde076f5777fe64e66892026366799d6e452ee/plone.autoform-1.8.0.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "3e7aaf5a9ab4e216e720004814c16b23", "sha256": "12fbdba148f58fd9b3c7beaf93ac8b30dd2e4e5782c9a5efd5b6646003dfe580" }, "downloads": -1, "filename": "plone.autoform-1.8.1-py2-none-any.whl", "has_sig": false, "md5_digest": "3e7aaf5a9ab4e216e720004814c16b23", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 53118, "upload_time": "2018-11-01T01:34:23", "url": "https://files.pythonhosted.org/packages/d1/e6/6312e0d026e653125c28b21e377aa2689ce4a4d90a8b8cf9058729be3ae4/plone.autoform-1.8.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd4d8d87d1189b43e11431862fcdcea8", "sha256": "75a1a4792e6c07785ed0280d1926e138f13de638d853002fe535b0d7262786a8" }, "downloads": -1, "filename": "plone.autoform-1.8.1.tar.gz", "has_sig": false, "md5_digest": "cd4d8d87d1189b43e11431862fcdcea8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50230, "upload_time": "2018-11-01T01:34:26", "url": "https://files.pythonhosted.org/packages/0d/5a/c857d176b5353d54b6762085bac3ea9dfa51a5bad459a758fddbf052f384/plone.autoform-1.8.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e7aaf5a9ab4e216e720004814c16b23", "sha256": "12fbdba148f58fd9b3c7beaf93ac8b30dd2e4e5782c9a5efd5b6646003dfe580" }, "downloads": -1, "filename": "plone.autoform-1.8.1-py2-none-any.whl", "has_sig": false, "md5_digest": "3e7aaf5a9ab4e216e720004814c16b23", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 53118, "upload_time": "2018-11-01T01:34:23", "url": "https://files.pythonhosted.org/packages/d1/e6/6312e0d026e653125c28b21e377aa2689ce4a4d90a8b8cf9058729be3ae4/plone.autoform-1.8.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cd4d8d87d1189b43e11431862fcdcea8", "sha256": "75a1a4792e6c07785ed0280d1926e138f13de638d853002fe535b0d7262786a8" }, "downloads": -1, "filename": "plone.autoform-1.8.1.tar.gz", "has_sig": false, "md5_digest": "cd4d8d87d1189b43e11431862fcdcea8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50230, "upload_time": "2018-11-01T01:34:26", "url": "https://files.pythonhosted.org/packages/0d/5a/c857d176b5353d54b6762085bac3ea9dfa51a5bad459a758fddbf052f384/plone.autoform-1.8.1.tar.gz" } ] }