[Zope] z3c.form 1.3.0, z3c.formui 1.0.1, and z3c.formdemo 1.1.0 released!

David Pratt fairwinds at eastlink.ca
Sat Jun 23 01:44:11 EDT 2007


Hi Stephan. This is some really awesome work and some great new examples 
  as well. There is more to explore and to anticipate with ajax - it is 
all really very excellent. When running the demo, I needed to add 
zope.rdb to the setup.py and its corresponding meta and configuration 
files to site.zcml. Other than this, everything worked great and some 
more things to learn for sure. :-) Many thanks for this fine work to 
help us all with forms!

Regards,
David

Stephan Richter wrote:
> Hello everyone,
> 
> Roger and I have received a great deal of feedback about the z3c.form* 
> packages. Several people reported that they immediately started using it for 
> their development. Thanks to those people, we were able to identify many bugs 
> and determined new features. The result is a new round of releases!
> 
> Again for the curious and impatient ...
> ---------------------------------------
> 
> We have added two more demos:
> 
> * An "Address Book" implements a non-trivial example of an address book,
>   including multiple addresses and E-mails. It demonstrates the use of
>   sub-forms, writing custom widgets and composite content.
> 
> * An "SQL Message" demo reimplemnets the simple "Hello World!" demo only using
>   queries to the Gadfly database. The example adds to the original demo by 
>   also providing a message overview screen, since the ZMI is not helpful for 
>   pure SQL data.
> 
> To run the demos do the following::
> 
>   $ svn co svn://svn.zope.org/repos/main/z3c.formdemo/trunk formdemo
>   $ cd formdemo
>   $ python bootstrap.py
>   $ ./bin/buildout -N
>   $ ./bin/demo fg
> 
> Now you can access the demo under:
> 
>   http://localhost:8080/
> 
> Note: Python's Cheeseshop seems to be extremely slow today, so this might take 
> a while. Alternatively, you can use Zope's distribution server: 
> http://download.zope.org/distribution.
> 
> 
> On the Javascript Front
> -----------------------
> 
> Paul Carduner, as part of his GSOC project, is developing a super-cool 
> extension to the z3c.form* packages that will make it very easy for the 
> Python developer to write AJAX-driven applications. My hope is that Paul will 
> have the first iteration and a demo done in a few weeks! So stay tuned...
> 
> 
> Changes
> -------
> 
> z3c.form
> ~~~~~~~~
> 
> - Feature: In an edit form applying the data and generating all necessary
>   messages was all done within the "Apply" button handler. Now the actual task
>   of storing is factored out into a new method called "applyChanges(data)",
>   which returns whether the data has been changed. This is useful for forms
>   not dealing with objects.
> 
> - Feature: Added support for ``hidden`` fields. You can now use the ``hidden``
>   mode for widgets which should get rendered as ``<input type="hidden"
>   />``.
> 
>   Note: Make sure you use the new formui templates which will avoid rendering
>         labels for hidden widgets or adjust your custom form macros.
> 
> - Feature: Added ``missing_value`` support to data/time converters
> 
> - Feature: Added named vocabulary lookup in ``ChoiceTerms`` and
>   ``CollectionTerms``.
> 
> - Implemented support for ``FileUpload`` in ``FileWidget``.
> 
>   * Added helper for handling ``FileUpload`` widgets:
> 
>     + ``extractContentType(form, id)
> 
>       Extracts the content type if ``IBytes``/``IFileWidget`` was used.
> 
>     + ``extractFileName(form, id, cleanup=True, allowEmtpyPostFix=False)``
> 
>       Extracts a filename if ``IBytes``/``IFileWidget`` was used.
> 
>       Uploads from win/IE need some cleanup because the filename includes also
>       the path. The option ``cleanup=True`` will do this for you. The option
>       ``allowEmtpyPostFix`` allows you to pass a filename without
>       extensions. By default this option is set to ``False`` and will raise a
>       ``ValueError`` if a filename doesn't contain an extension.
> 
>   * Created afile upload data converter registered for
>     ``IBytes``/``IFileWidget`` ensuring that the converter will only be used
>     for fiel widgets. The file widget is now the default for the bytes
>     field. If you need to use a text area widget for ``IBytes``, you have to
>     register a custom widget in the form using::
> 
>       fields['foobar'].widgetFactory = TextWidget
> 
> - Feature: Originally, when an attribute access failed in Unauthorized or
>   ForbiddenAttribute exceptions, they were ignored as if the attribute would
>   have no value. Now those errors are propagated and the system will fail
>   providing the developer with more feedback. The datamanager also grew a new
>   ``query()`` method that returns always a default and the ``get()`` method
>   propagates any exceptions.
> 
> - Feature: When writing to a field is forbidden due to insufficient
>   priviledges, the resulting widget mode will be set to "display". This
>   behavior can be overridden by explicitely specifying the mode on a field.
> 
> - Feature: Added an add form implementation against ``IAdding``. While this is
>   not an encouraged method of adding components, many people still use this
>   API to extend the ZMI.
> 
> - Feature: The ``IFields`` class' ``select()`` and ``omit()`` method now
>   support two ketword arguments "prefix" and "interface" that allow the
>   selection and omission of prefixed fields and still specify the short
>   name. Thanks to Nikolay Kim for the idea.
> 
> - Feature: HTML element ids containing dots are not very good, because then
>   the "element#id" CSS selector does not work and at least in Firefox the
>   attribute selector ("element[attr=value]") does not work for the id
>   either. Converted the codebase to use dashes in ids instead.
> 
> - Bug/Feature: The ``IWidgets`` component is now an adapter of the form
>   content and not the form context. This guarantees that vocabulary factories
>   receive a context that is actually useful.
> 
> - Bug: The readonly flag within a field was never honored. When a field is
>   readonly, it is displayed in "display" mode now. This can be overridden by
>   the widget manager's "ignoreReadonly" flag, which is necessary for add
>   forms.
> 
> - Bug: The mode selection made during the field layout creation was not
>   honored and the widget manager always overrode the options providing its
>   value. Now the mode specified in the field is more important than the one
>   from the widget manager.
> 
> - Bug: It sometimes happens that the sequence widget has the no-value token as
>   one element. This caused ``displayValue()`` to fail, since it tried to find
>   a term for it. For now we simply ignore the no-value token.
> 
> - Bug: Fixed the converter when the incoming value is an empty string. An
>   empty string really means that we have no value and it is thus missing,
>   returning the missing value.
> 
> - Bug: Fix a slightly incorrect implementation. It did not cause any harm in
>   real-world forms, but made unit testing much harder, since an API
>   expectation was not met correctly.
> 
> - Bug: When required selections where not selected in radio and checkbox
>   widgets, then the conversion did not behave correctly. This also revealed
>   some issues with the converter code that have been fixed now.
> 
> - Bug: When fields only had a vocabulary name, the choice terms adaptation
>   would fail, since the field was not bound. This has now been corrected.
> 
> - Documentation: Integrated English language and content review improvements
>   by Roy Mathew in ``form.txt``.
> 
> 
> z3c.formui
> ~~~~~~~~~~
> 
> - Bug: Make sure we use the id for the "for" attribute of the "label"
>   element and not the name. This has worked until recently, because the
>   name and id were the same, but they are different now.
> 
> 
> z3c.formdemo
> ~~~~~~~~~~~~
> 
> - Feature: New "SQL Message" demo shows how ``z3c.form`` can be used with
>   non-object data. Specificically, this small application demonstrates using a
>   Gadfly database using pure SQL calls without any ORM.
> 
> - Feature: New "Address Book" demo that demonstrates more complex use cases,
>   such as subforms, composite widgets, and mappings/lists
> 
> 
> Enjoy!
> 
> Regards,
> Stephan


More information about the Zope mailing list