8. Release Notes
8.1. 0.6.0 - upcoming release
Note
This version is being developed. If you feel like helping, or want the
very latest feature, you can install it from the github repository.
Otherwise, please get a packaged release instead.
Python and Django versions supported:
- Django 1.3 is no longer supported.
- Python 2.6 is no longer supported. Though it is likely to work for the time
being, it has been dropped from the tested setups.
New features:
- TranslationQueryset now has a
fallbacks() method when running on
Django 1.6 or newer, allowing the queryset to use fallback languages while
retaining all its normal functionalities – #184.
Fixes:
- Ecountering a regular (un-translatable) model in a deep select_related does
not break anymore. — #206.
- Language tabs URI are now correctly generated when changelist filters are used.
— #203.
- Admin language tab selection is no longer lost when change filters are active.
— #202.
8.2. 0.5.0 - current release
Released on September 11, 2014
Python and Django versions supported:
- This version will be the last to support Django 1.3.
- This version will be the last to support Python 2.6. Though it may
still work for the time being, it will be removed from the tested setups.
New features:
- New translationformset_factory and its companion
BaseTranslationFormSet allow building a formset to work
on an instance’s translations. Please have at look at its detailed
documentation – #157.
- Method language() now accepts the
special value 'all', allowing the query to consider all translations – #181.
- Django 1.6+’s new datetimes() method is
now available on TranslationQueryset too – #175.
- Django 1.6+’s new earliest() method is
now available on TranslationQueryset.
- Calls to language(), passing None
to use the current language now defers language resolution until the query is
evaluated. It can now be used in form definitions directly, for instance for
passing a custom queryset to ModelChoiceField – #171.
- Similarly, use_fallbacks() can now be
passed None as one of the fallbacks, and it will be replaced with current
language at query evaluation time.
- All queryset classes used by TranslationManager can now
be customized thanks to the new fallback_class
and default_class attributes.
- Abstract models are now supported. The concrete class must still declare a
TranslatedFields instance, but it can be empty – #180.
- Django-hvad messages are now available in Italian – #178.
- The Meta.ordering model setting
is now supported on translatable models. It accepts both translated and shared
fields – #185, #12.
- The select_related() method is no longer
limited to 1 level depth – #192.
- The select_related() method semantics
is now consistent with that of regular querysets. It supports passing None
to clear the list and mutiple calls mimic Django behavior. That is: cumulative
starting from Django 1.7 and substitutive before – #192.
Deprecation list:
- The deprecated nani module was removed.
- Method using_translations() is now deprecated.
It can be safely replaced by language()
with no arguments.
- Setting NANI_TABLE_NAME_SEPARATOR was renamed to HVAD_TABLE_NAME_SEPARATOR.
Using the old name will still work for now, but issue a deprecation warning,
and get removed in next version.
- CSS class nani-language-tabs in admin templates was renamed to
hvad-language-tabs. Entities will bear both classes until next version.
- Private _real_manager and _fallback_manager attributes of
TranslationQueryset have been removed as the indirection
served no real purpose.
- The TranslationFallbackManager is deprecated and will
be removed in next release. Please use manager’s
untranslated() method instead.
- The TranslatableModelBase metaclass is no longer
necessary and will be removed in next release. hvad no longer triggers metaclass
conflicts and TranslatableModelBase can be safely dropped – #188.
- Overriding the language in QuerySet.get()
and QuerySet.filter() is now
deprecated. Either use the language()
method to set the correct language, or specify
language('all') to filter
manually through get and filter – #182.
Fixes:
- Method latest() now works when passed
no field name, properly getting the field name from the model’s
Meta.get_latest_by option.
- FallbackQueryset now leverages the better control on
queries allowed in Django 1.6 and newer to use only one query to resolve
fallbacks. Old behavior can be forced by adding HVAD_LEGACY_FALLBACKS = True
to your settings.
- Assigning value to translatable foreign keys through its _id field no
longer results in assigned value being ignored – #193.
- Tests were refactored to fully support PostgreSQL – #194
8.3. 0.4.1
Released on June 1, 2014
Fixes:
8.4. 0.4.0
Released on May 19, 2014
New Python and Django versions supported:
- django-hvad now supports Django 1.7 running on Python 2.7, 3.3 and 3.4.
- django-hvad now supports Django 1.6 running on Python 2.7 and 3.3.
New features:
- TranslationManager‘s queryset class can now be overriden by
setting its queryset_class attribute.
- Proxy models can be used with django-hvad. This is a new feature, please
use with caution and report any issue on github.
- TranslatableAdmin‘s list display now has direct links
to each available translation.
- Instance’s translated fields are now available to the model’s
save() method when saving a
TranslatableModelForm.
- Accessing a translated field on an untranslated instance will now raise an
AttributeError with a helpful message instead of letting the
exception bubble up from the ORM.
- Method in_bulk() is now available on
TranslationQueryset.
Deprecation list:
- Catching ObjectDoesNotExist when accessing
a translated field on an instance is deprecated. In case no translation
is loaded and none exists in database for current language, an
AttributeError is raised instead. For the transition,
both are supported until next release.
Removal of the old 'nani' aliases was postponed until next release.
Fixes:
- Fixed an issue where TranslatableAdmin could overwrite the
wrong language while saving a form.
- lazy_translation_getter() now tries
translations in LANGUAGES order once it has failed with current
language and site’s main LANGUAGE_CODE.
- No more deprecation warnings when importing only from hvad.
- TranslatableAdmin now generates relative URLs instead
of absolute ones, enabling it to work behind reverse proxies.
- django-hvad does not depend on the default manager being named
‘objects’ anymore.
- Q objects now work properly with TranslationQueryset.
8.5. 0.3
New Python and Django versions supported:
- django-hvad now supports Django 1.5 running on Python 2.6 and 2.6.
Deprecation list:
- Dropped support for django 1.2.
- In next release, the old ‘nani’ module will be removed.
8.6. 0.2
The package is now called ‘hvad’. Old imports should result in an import error.
Fixed django 1.4 support
Fixed a number of minor issues
8.7. 0.1.4 (Alpha)
Released on November 29, 2011
8.8. 0.1.3 (Alpha)
Released on November 8, 2011
8.9. 0.0.4 (Alpha)
8.10. 0.0.3 (Alpha)
Released on May 26, 2011.
- Replaced our ghetto fallback querying code with a simplified version of the
logic used in Bert Constantins django-polymorphic, all credit for our now
better FallbackQueryset code goes to him.
- Replaced all JSON fixtures for testing with Python fixtures, to keep tests
maintainable.
- Nicer language tabs in admin thanks to the amazing help of Angelo Dini.
- Ability to delete translations from the admin.
- Changed hvad.admin.TranslatableAdmin.get_language_tabs signature.
- Removed tests from egg.
- Fixed some tests possibly leaking client state information.
- Fixed a critical bug in hvad.forms.TranslatableModelForm where attempting to
save a translated model with a relation (FK) would cause IntegrityErrors when
it’s a new instance.
- Fixed a critical bug in hvad.models.TranslatableModelBase where certain field
types on models would break the metaclass. (Many thanks to Kristian
Oellegaard for the fix)
- Fixed a bug that prevented abstract TranslatableModel subclasses with no
translated fields.
8.11. 0.0.2 (Alpha)
Released on May 16, 2011.
- Removed language code field from admin.
- Fixed admin ‘forgetting’ selected language when editing an instance in another
language than the UI language in admin.
8.12. 0.0.1 (Alpha)
Released on May 13, 2011.
- First release, for testing purposes only.