2009-09-24  Marco Pantaleoni  <panta@elasticworld.org>

        * paginator template tag: modernized, now uses only the django
        Paginator object.

2009-05-27  Marco Pantaleoni  <panta@elasticworld.org>

        * SyntheticUploadedFile.py: added (support for programmatically added files
        in FileField and ImageField fields).

2009-05-16  Marco Pantaleoni  <panta@elasticworld.org>

        * djangothreads.py: added (support for django thread joining).

2009-05-12  Marco Pantaleoni  <panta@elasticworld.org>

        * added expr template tag and filter library (with comparison filters and
        the ``expr`` template tag).

2009-04-20  Marco Pantaleoni  <panta@elasticworld.org>

        * middleware.logger: added get_logger() function.

2009-04-20  Marco Pantaleoni  <panta@elasticworld.org>

        * added useful middleware classes (under softwarefabrica.django.utils.middleware)
        Right now the following are available: logger.LoggingMiddleware,
        sqldebug.SqlDebugMiddleware, profile.ProfileMiddleware, stats.StatsMiddleware.

2009-04-15  Marco Pantaleoni  <panta@elasticworld.org>

        * fixed a bug in new render_to_response.

2009-04-14  Marco Pantaleoni  <panta@elasticworld.org>

        * added compiled template caching support.

2009-02-20  Marco Pantaleoni  <panta@elasticworld.org>

        * softwarefabrica/django/utils/templatetags/macros.py: added (django
        snippet nr. 363, see http://www.djangosnippets.org/snippets/363/)

2009-02-19  Marco Pantaleoni  <panta@elasticworld.org>

        * softwarefabrica/django/utils/IPv4MaskedAddressField.py: handled the u'' case
        in validation.

2009-01-29  Marco Pantaleoni  <panta@elasticworld.org>

        * softwarefabrica/django/utils/templatetags/forward_query_param.py: added.
        Provides the ``forward_query_param`` template tag.

2009-01-21  Marco Pantaleoni  <panta@elasticworld.org>

        * softwarefabrica/django/utils/templatetags/in_list.py: added.

2009-01-15  Marco Pantaleoni  <panta@elasticworld.org>

        * managers.py: added. Provides the ``QuerySetManager`` described in
        http://simonwillison.net/2008/May/1/orm/

2009-01-10  Marco Pantaleoni  <panta@elasticworld.org>

        * paginator.py paginator.html: now correctly handles pagination in
        popup windows (``is_popup`` and ``_popup`` variables, from s.d.crud
        generic views).

2008-12-22  Marco Pantaleoni  <panta@elasticworld.org>

        * IPv4MaskedAddressField can now be used with django admin too.

        * added a test module.

        * IPv4MaskedAddressField.py: added. This module provides model and form
        fields for IPv4 addresses with an optional network mask.

2008-12-19  Marco Pantaleoni  <panta@elasticworld.org>

        * added doc bundle generation.

        * docs/install.txt: improved installation instructions.

2008-12-18  Marco Pantaleoni  <panta@elasticworld.org>

        * Makefile: updated to build for all supported python versions
        (2.4, 2.5, 2.6)
        Fixed.

        * added extensive documentation.

2008-12-17  Marco Pantaleoni  <panta@elasticworld.org>

        * setup.py: Added specific ('uuid') dependency for Python 2.4

2008-12-16  Marco Pantaleoni  <panta@elasticworld.org>

        * Removed obsolete material.

2008-12-01  Marco Pantaleoni  <panta@elasticworld.org>

        * softwarefabrica/django/utils/templatetags/paginator.py: template
        is now 'utils/paginator.html'

        * softwarefabrica/django/utils/templates/utils/paginator.html:
        added.

2008-11-25  Marco Pantaleoni  <panta@elasticworld.org>

        * softwarefabrica/django/utils/templatetags/sitevars.py
        (SitevarsNode.render): made Django `Site` framework optional.

        * softwarefabrica/django/utils/viewshelpers.py (context_vars):
        made Django `Site` framework optional.

        * setup.py: set zip_safe to False (since we include templates and tests).

2008-11-24  Marco Pantaleoni  <panta@elasticworld.org>

        * Removed unused empty tests. Updated datetimewidget.py and
        relatedwidget.py

        * Changed references to 'newforms' into 'forms'.

        * README.txt: Updated.

        * Integrated setuptools and packages as
        'softwarefabrica.django.utils'

2008-11-02  Marco Pantaleoni  <panta@elasticworld.org>

        * templatetags/sitevars.py: added - {% sitevars %} template
        tag that populates the context with project variables.

2008-10-29  Marco Pantaleoni  <panta@elasticworld.org>

        * crud.py: added - Object-Oriented generic views and respective
        functional support adapters. Also present classes that add
        'fieldorder' support to ModelForms and templated forms.

2008-10-25  Marco Pantaleoni  <panta@elasticworld.org>

        * usearch.py: added - super-simple search support.

2008-10-19  Marco Pantaleoni  <panta@elasticworld.org>

        * UUIDField.py: added - UUID field.

2008-10-27  Marco Pantaleoni  <panta@elasticworld.org>

        * templatetags/paginator.py: modernized and added
        'template_object_name' parameter (defaults to 'object').

2008-09-04  Marco Pantaleoni  <panta@elasticworld.org>

        * viewshelpers.py: modernized, removed functional generic views.

2008-09-02  Marco Pantaleoni  <panta@elasticworld.org>

        * forms.py mlforms.py: modernized (adapted to support also django-1.0)

2008-05-30  Marco Pantaleoni  <panta@elasticworld.org>

        * added DateRangeWidget and DateRangeField.

2008-05-29  Marco Pantaleoni  <panta@elasticworld.org>

        * added white space in id field (edit form), to separate it when no
        value is present.

2008-05-27  Marco Pantaleoni  <panta@elasticworld.org>

        * added (non-editable) 'id' support to table forms.

2008-05-26  Marco Pantaleoni  <panta@elasticworld.org>

        * changed date format to 'dd/mm/yyyy'

        * removed '--' in empty FK also from detail view

2008-05-22  Marco Pantaleoni  <panta@elasticworld.org>

        * removed "--" from empty related widgets.

2008-05-21  Marco Pantaleoni  <panta@elasticworld.org>

        * added missing classes 'value' and 'label'.

        * fixed (commented) formfield_search_cb().

        * relatedwidget.py: improved. Added support for creation.

        * relatedwidget.py foreign.html: added support for textual representation
        of selected records.

        * tableforms.py: now uses the functions copied to erp.forms

2008-05-20  Marco Pantaleoni  <panta@elasticworld.org>

        * datetimewidget.py: added mark_safe() calls.

2008-05-15  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: fixed bug ('coldwidth' -> 'colwidth', for FormRow).

2008-05-14  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py (FormField_operator_get_HTML_entity.Perform):
        removed TD in error list.

        * tableforms.py (FormField_operator_get_HTML_entity.Perform): adds
        'label' and 'value' to fields.

        * datetimewidget.py: switched from <nobr> to CSS.

        * tableforms.py
        (FormField_operator_get_view_HTML_entity.Perform): translated db
        choice in text form in detail view.

        * tableforms.py (FormField_operator_get_view_HTML_entity.Perform):
        return icon in detail view for boolean fields.

        * tableforms.py: defaulted to italian date format.

        * datetimewidget.py: defaulted to italian date format.

        * datetimewidget.py: added 'date' css attribute to widget.

2008-05-13  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: adapted for split in DateTimeWidget and
        DateWidget.

        * forms.py: adapted for split in DateTimeWidget and DateWidget.

        * datetimewidget.py: split in DateTimeWidget and DateWidget.

        * templates/utils/widget/foreign.html: removed 'folder' icon
        (detail view).

        * tableforms.py (formfield_cb) relatedwidget.py: fixed required
        field bug for "ForeignKey"s.

        * viewshelpers.py: Added translation to messages.

2008-05-06  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py (build_query_from_form): fixed bug: now handles
        also missing fields in form_data and searches with related fields
        (RelatedField).

2008-04-28  Marco Pantaleoni  <panta@elasticworld.org>

        * relatedwidget.py (RelatedItemWidget.value_from_datadict): fixed
        validation bug.

        * tableforms.py: return link to detail view for foreign keys in detail
        view "form".

2008-04-27  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: boolean fields are rendered with a 3-way select in
        search forms.

        * tableforms.py (FormField_operator_get_HTML_entity.Perform): fixed
        ForeignKey label extraction.

2008-04-26  Marco Pantaleoni  <panta@elasticworld.org>

        * added 'model' and 'meta' to delete_object() and edit_object() template
        context.

2008-04-26  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: renamed getElementName() into getElementTypeName(), and
        getElementsByName() into getElementsByTypeName().
        Added getElementName() returning the passed 'name' parameter value, if
        present.
        Added getElementsByName() and getElementByName().
        Added 'name' paremeter query in getElements().

        * templates/utils/widget/foreign.html: added <span></span> and
        <nobr></nobr>.

2008-04-25  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: added some DOM navigation functions.
        Added fields (FormField, django field, db field) extraction functions.
        Now django forms are created with only the fields present in tableforms
        Form (passing 'fields').

2008-04-22  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: now emits toggleFormGroup().

2008-04-22  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py (Form.make_formclass): moved formclass creation out of
        the constructor, so to allow late injection of a different form metaclass.

        * tableforms.py: added build_query_from_form() to Form class.
        Now it's also possible to pass the (newforms) form metaclass to the Form
        constructor. A SearchModelFormTable metaclass has been added to be used
        when making search forms (it keeps all fields as optional).

        * viewshelpers.py: updated object_list() generic view to match
        recent django.

2008-04-21  Marco Pantaleoni  <panta@elasticworld.org>

        * viewshelpers.py: fixed opts.verbose_name proxy string issue
        (forcing unicode).
        Made more uniform template search.
        Added object_detail() generic view.
        Improved comments.

        * tableforms.py: added get_view_HTML_entity operation for detail views.

        * relatedwidget.py: removed unused select_btn and new_btn strings.

2008-04-19  Marco Pantaleoni  <panta@elasticworld.org>

        * templates/: added.

        * tableforms.py: integrated support for foreign key fields
        (relatedwidget).

        * relatedwidget.py: added.

        * viewshelpers.py: added static_media_images_prefix() and
        static_media_js_prefix().

2008-04-06  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: added multiple generation operation backends
        (get_HTML_entity, get_pages_HTML_entity, get_page_ids).
        Small improvements. Added support to form group javascript.

2008-04-05  Marco Pantaleoni  <panta@elasticworld.org>

        * templatetags/paginator.py templatetags/urlsave.py: added.

        * tableforms.py: implemented visitor pattern based generation of
        HTML content.

        * viewshelpers.py: added object_list() (based on django generic
        view).

2008-04-02  Marco Pantaleoni  <panta@elasticworld.org>

        * tableforms.py: Added.

2008-02-17  Marco Pantaleoni  <panta@elasticworld.org>

        * newforms_crud.py (create_object, update_object): added the
        possibility of passing initial values to forms in form_for_model()
        and form_for_instance().

        * viewshelpers.py: settings.STATIC_MEDIA_PREFIX is not strictly
        required anymore. The static_media_prefix() function tries to
        determine the correct value, with a sensible fallback.

2007-11-22  Marco Pantaleoni  <panta@elasticworld.org>

        * Created (with bits from portal, a lot of bits...)
