Z3c.form

Latest version: v5.1

Safety actively analyzes 629765 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 10 of 12

2.3.0

------------------

Refactoring
~~~~~~~~~~~

- Removed deprecated zpkg slug and ZCML slugs.

- Adapted tests to ``zope.schema`` 3.6.0.

- Avoid to use ``zope.testing.doctestunit`` as it is now deprecated.

Update
~~~~~~

- Updated German translations.

2.2.0

------------------

- Feature: Add ``z3c.form.error.ComputedErrorViewMessage`` factory for easy
creation of dynamically computed error messages.

- Bug: <div class="error"> was generated twice for MultiWidget and
ObjectWidget in input mode.

- Bug: Replace dots with hyphens when generating form id from its name.

- Refactored OutputChecker to its own module to allow using
``z3c.form.testing`` without needing to depend on ``lxml``.

- Refactored: Folded duplicate code in
``z3c.form.datamanager.AttributeField`` into a single property.

2.1.0

------------------

- Feature: The ``DictionaryFieldManager`` now allows all mappings
(``zope.interface.common.mapping.IMapping``), even
``persistent.mapping.PersistentMapping`` and
``persistent.dict.PersistentDict``. By default, however, the field
manager is only registered for dict, because it would otherwise get
picked up in undesired scenarios.

- Bug: Updated code to pass all tests on the latest package versions.

- Bug: Completed the Zope 3.4 backwards-compatibility. Also created a buidlout
configuration file to test the Zope 3.4 compatibility. Note: You *must* use
the 'latest' or 'zope34' extra now to get all required
packages. Alternatively, you can specify the packages listed in either of
those extras explicitely in your product's required packages.

2.0.0

------------------

Features
~~~~~~~~

- KGS 3.4 compatibility. This is a real hard thing, because ``z3c.form`` tests
use ``lxml`` >= 2.1.1 to check test output, but KGS 3.4 has ``lxml` 1.3.6.
Therefore we agree on that if tests pass with all package versions nailed by
KGS 3.4 but ``lxml`` overridden to 2.1.1 then the ``z3c.form`` package works
with a plain KGS 3.4.

- Removed hard ``z3c.ptcompat`` and thus ``z3c.pt`` dependency. If you have
``z3c.ptcompat`` on the Python path it will be used.

- Added nested group support. Groups are rendered as fieldsets. Nested
fieldsets are very useful when designing forms.

WARNING: If your group did have an ``applyChanges()`` (or any added(?))
method the new one added by this change might not match the signature.

- Added ``labelRequired`` and ``requiredInfo`` form attributes. This is useful
for conditional rendering a required info legend in form templates. The
``requiredInfo`` label depends by default on a given ``labelRequired``
message id and will only return the label if at least one widget field is
required.

- Add support for refreshing actions after their execution. This is useful
when button action conditions are changing as a result of action
execution. All you need is to set the ``refreshActions`` flag of the form to
``True`` in your action handler.

- Added support for using sources. Where it was previosly possible to use a
vocabulary it is now also possible to use a source. This works both for
basic and contextual sources.

**IMPORTANT:** The ``ChoiceTerms`` and ``CollectionTerms`` in
``z3c.form.term` are now simple functions that query for real ``ITerms``
adapters for field's ``source`` or ``value_type`` respectively. So if your
code inherits the old ``ChoiceTerms`` and ``CollectionTerms`` classes, you'll
need to review and adapt it. See the ``z3c.form.term`` module and its
documentation.

- The new ``z3c.form.interfaces.NOT_CHANGED`` special value is available to
signal that the current value should be left as is. It's currently handled
in the ``z3c.form.form.applyChanges()`` function.

- When no file is specified in the file upload widget, instead of overwriting
the value with a missing one, the old data is retained. This is done by
returning the new ``NOT_CHANGED`` special value from the
``FileUploadDataConvereter``.

- Preliminary support for widgets for the ``schema.IObject`` field has been
added. However, there is a big caveat, please read the ``object-caveat.txt``
document inside the package.

A new ``objectWidgetTemplate`` ZCML directive is provided to register widget
templates for specific object field schemas.

- Implemented the ``MultiWidget`` widget. This widget allows you to use simple
fields like ``ITextLine``, ``IInt``, ``IPassword``, etc. in a ``IList`` or
``ITuple`` sequence.

- Implemented ``TextLinesWidget`` widget. This widget offers a text area
element and splits lines in sequence items. This is usfull for power user
interfaces. The widget can be used for sequence fields (e.g. ``IList``) that
specify a simple value type field (e.g. ``ITextLine`` or ``IInt``).

- Added a new flag ``ignoreContext`` to the form field, so that one can
individually select which fields should and which ones should not ignore the
context.

- Allow raw request values of sequence widgets to be non-sequence values,
which makes integration with Javascript libraries easier.

- Added support in the file upload widget's testing flavor to specify
'base64'-encoded strings in the hidden text area, so that binary data can be
uploaded as well.

- Allow overriding the ``required`` widget attribute using ``IValue`` adapter
just like it's done for ``label`` and ``name`` attributes.

- Add the ``prompt`` attribute of the ``SequenceWidget`` to the list of
adaptable attributes.

- Added benchmarking suite demonstrating performance gain when using
``z3c.pt``.

- Added support for ``z3c.pt``. Usage is switched on via the "PREFER_Z3C_PT"
environment variable or via ``z3c.ptcompat.config.[enable/diable]()``.

- The ``TypeError`` message used when a field does not provide ``IFormUnicode``
now also contains the type of the field.

- Add support for internationalization of ``z3c.form`` messages. Added
Russian, French, German and Chinese translations.

- Sphinx documentation for the package can now be created using the new
``docs`` script.

- The widget for fields implementing ``IChoice`` is now looked up by querying
for an adapter for ``(field, field.vocabulary, request)`` so it can be
differentiated according to the type of the source used for the field.

- Move ``formErrorsMessage`` attribute from ``AddForm`` and ``EditForm`` to the
``z3c.form.form.Form`` base class as it's very common validation status
message and can be easily reused (especially when translations are
provided).

Refactoring
~~~~~~~~~~~

- Removed compatibility support with Zope 3.3.

- Templates now declare XML namespaces.

- HTML output is now compared using a modified version of the XML-aware output
checker provided by ``lxml``.

- Remove unused imports, adjust buildout dependencies in ``setup.py``.

- Use the ``z3c.ptcompat`` template engine compatibility layer.

Fixed Bugs
~~~~~~~~~~

- **IMPORTANT** - The signature of ``z3c.form.util.extractFileName`` function
changed because of spelling mistake fix in argument name. The
``allowEmtpyPostFix`` is now called ``allowEmptyPostfix`` (note ``Empty``
instead of ``Emtpy`` and ``Postfix`` instead of ``PostFix``).

- **IMPORTANT** - The ``z3c.form.interfaces.NOVALUE`` special value has been
renamed to ``z3c.form.interfaces.NO_VALUE`` to follow the common naming
style. The backward-compatibility ``NOVALUE`` name is still in place, but the
``repr`` output of the object has been also changed, thus it may break your
doctests.

- When dealing with ``Bytes`` fields, we should do a null conversion when going
to its widget value.

- ``FieldWidgets`` update method were appending keys and values within each
update call. Now the ``util.Manager`` uses a ``UniqueOrderedKeys``
implementation which will ensure that we can't add duplicated manager
keys. The implementation also ensures that we can't override the
``UniqueOrderedKeys`` instance with a new list by using a decorator. If this
``UniqueOrderedKeys`` implementation doesn't fit for all use cases, we should
probably use a customized ``UserList`` implementation. Now we can call
``widgets.update()`` more then one time without any side effect.

- ``ButtonActions`` update where appending keys and values within each update
call. Now we can call ``actions.update()`` more then one time without any
side effect.

- The ``CollectionSequenceDataConverter`` no longer throws a ``TypeError:
'NoneType' object is not iterable`` when passed the value of a non-required
field (which in the case of a ``List`` field is ``None``).

- The ``SequenceDataConverter`` and ``CollectionSequenceDataConverter``
converter classes now ignore values that are not present in the terms when
converting to a widget value.

- Use ``nocall:`` modifier in ``orderedselect_input.pt`` to avoid calling list
entry if it is callable.

- ``SingleCheckBoxFieldWidget`` doesn't repeat the label twice (once in ``<div
class="label">``, and once in the ``<label>`` next to the checkbox).

- Don't cause warnings in Python 2.6.

- ``validator.SimpleFieldValidator`` is now able to handle
``interfaces.NOT_CHANGED``. This value is set for file uploads when the user
does not choose a file for upload.

1.9.0

------------------

- Feature: Use the ``query()`` method in the widget manager to try extract a
value. This ensures that the lookup is never failing, which is particularly
helpful for dictionary-based data managers, where dictionaries might not
have all keys.

- Feature: Changed the ``get()`` method of the data manager to throw an error
when the data for the field cannot be found. Added ``query()`` method to
data manager that returns a default value, if no value can be found.

- Feature: Deletion of widgets from field widget managers is now possible.

- Feature: Groups now produce detailed ``ObjectModifiedEvent`` descriptions
like regular edit forms do. (Thanks to Carsten Senger for providing a patch.)

- Feature: The widget manager's ``extract()`` method now supports an optional
``setErrors`` (default value: True) flag that allows one to not set errors
on the widgets and widget manager during data extraction. Use case: You want
to inspect the entered data and handle errors manually.

- Bug: The ``ignoreButtons`` flag of the ``z3c.form.form.extends()`` method
was not honored. (Thanks to Carsten Senger for providing a patch.)

- Bug: Group classes now implement ``IGroup``. This also helps with the
detection of group instantiation. (Thanks to Carsten Senger for providing a
patch.)

- Bug: The list of changes in a group were updated incorrectly, since it was
assumed that groups would modify mutually exclusive interfaces. Instead of
using an overwriting dictionary ``update()`` method, a purely additive merge
is used now. (Thanks to Carsten Senger for providing a patch.)

- Bug: Added a widget for ``IDecimal`` field in testing setup.

- Feature: The ``z3c.form.util`` module has a new function, ``createCSSId()``
method that generates readable ids for use with css selectors from any
unicode string.

- Bug: The ``applyChanges()`` method in group forms did not return a changes
dictionary, but simply a boolean. This is now fixed and the group form
changes are now merged with the main form changes.

- Bug: Display widgets did not set the style attribute if it was
available, even though the input widgets did set the style attribute.

1.8.2

------------------

- Bug: Display Widgets added spaces (due to code indentation) to the displayed
values, which in some cases, like when displaying Python source code, caused
the appearance to be incorrect.

- Bug: Prevent to call ``__len__`` on ``ITerms`` and use ``is None`` for check
for existence. Because ``__len__`` is not a part of the ITerms API and ``not
widget.terms`` will end in calling ``__len__`` on existing terms.

Page 10 of 12

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.