Release Notes
v1.4b4
Fixes Exception in standin_for(): a new-style class can’t have only classic bases.
v1.4b3
Fixed Django 1.5 template requirements for admin media.
v1.4b2
Fixes I18n for models with tuple permissions.
Allow custom admin class for register_all.
fixes wrong import in easymode.tree.admin.forms.
v1.4b1
This release fixes most incompatibilities of easymode with django 1.4.
Most importantly, it fixes i18n. This release is therefor meant to be
used with django 1.4.
v1.0b1
Easymode is now moving towards the 1.0 release. I took the liberty of removing
code whose usefulness was dubious and also refactor mercilessly. You will
also find some very nice new features in this release!
That being said, you can not simply update and run an existing application on
this release!
Backward incompatible changes:
- The names of localized table columns are constructed differently now. Upgrading means migrating all your column names!
- Easypublisher was removed, because it was too hard to maintain.
- All xml related code moved to the package easmode.tree.xml.
- DiocoreCharField, DiocoreHTMLField, DiocoreTextField, CSSField,
IncludeFileField, RemoteIncludeField where removed.
New features:
Bugs fixed:
v0.14.5
Models decorated with I18n nolonger have problems deleting related models in
cascade mode.
v0.14.4
Easymode nolonger installs any packages automatically during installation, these
should now be installed by hand.
v0.14.3
Using super in an admin class decorated with L10n, will nolonger result in
infinite recursion.
v0.14.2
Fixes SafeHTMLField‘s buttons property, which can be used to override the tinymce buttons per field.
v0.14.1
ForeignKeyAwareModelAdmin now properly handles parent_link that points to a model
in a different app.
v0.13.7
- Fallbacks for translatable fields now also work when the first fallback is not
the MSGID_LANGUAGE.
v0.13.6
- You can now override the model form of an admin class decorated with L10n, just
like normal admin classes.
v0.13.5
- Easymode nolonger patches SubFieldBase. Fields that throw Exceptions when their
descriptor is accessed can now also be internationalized using I18n. This
includes ImageField and FileField.
v0.13.4
- standin_for() now returns a standin that can be
pickled and unpickled.
v0.13.3
- register_all will nolonger try to register abstract models
- search_fields is now supported for ModelAdmin classes that use L10n, however it
will not let you access related items.
- You can now use fieldsets with the Can edit untranslated fields permission.
- Added support for creating new objects to easypublisher.
- Added tools to build preview functionality for drafts.
- Added filter that removes unpublished items from the xml.
- fixed error ‘cannot import name introspection’ caused by a circular import.
v0.10.5
- Added option to exclude models from register_all
- Backwards incompatible change: easymode nolonger has any bindings for
django-cms.
- Easymode will now show you the origin of a value, by displaying symbols next to
the input field in the admin:
- If a value is from the gettext catalog or fallback, easymode will display ∴°
- If a value is from the database, but the catalog has a different value, easymode will
display ∴⁺ . You can hover over this symbol to see the catalog value.
- If a value is from the database and there is no conflict with the catalog, easymode will
display only ∴
- Fixed bug where a value that evaluated to None was set with the string None instead of
types.NoneType None
- fixes bug where get_localized_property would crash if settings did not have
FALLBACK_LANGUAGES defined.
- django.db.models.ManyToManyField and django.db.models.ForeignKey
are now handled by the default xslt (‘xslt/model-to-xml.xsl’).
v0.9.3
- fixes easymode.admin.abstract.AbstractOrderedModel
- register_all will ignore models that are django.contrib.admin.sites.AlreadyRegistered,
but still register other models in the module.
v0.9.2
- Fixed bug in recursion_depth context manager and added tests.
v0.9.1
- Modified the xslt parser to use the file path instead of a string, so you can
use xsl:include now.
- libxsltmod is nolonger a supported xslt engine
- Added util to add register all models in some module in one go.
v0.8.6
- Easymode will nolonger complain about rosetta, polib and tinymce when none of
the features that require these packages are used.
- Moved polib util to easymode.utils.polibext to avoid name clashes
- DiocoreTextField now accepts cols and rows as parameters.
- The mechanism to add extra attributes to the xml produced by the serializer is
now more generic. If a field has the ‘extra_attrs’ property, these attributes
will be added as attributes to the field xml.
- Updated the serializer to support natural keys:
http://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys
- Now easymode can automatically serialize many to many fields. The recursion is
guarded, and will let you know when you made a cyclic relation in you model
tree. (see RECURSION_LIMIT).
- mutex now raises SemaphoreException instead of doing sys.exit().
- When to_python returns a weird object on a field instead of a string, it is now converted to unicode
before it is used as a msgid.
v0.6.1
DiocoreHTMLField will now also show a tinymce editor when it
is not internationalized.
When there is a problem with monkey patching django.db.models.SubfieldBase easymode
will throw an exception. (Monkey patch fixes http://code.djangoproject.com/ticket/12568).
New field aded, CSSField, which allows specification of css classes
for a rich text field, the css classes will appear in the xml as:
v0.6.0
- Django 1.2 is required for easymode as of v0.6.0.
- get_real_fieldname() now returns
a string instead of unicode. This way a dict can
be constructed using it’s results as keys, and the dict can be turned
into keyword arguments of filter when doing a query in a specific
language.
- Small improvements in error handling when AUTO_CATALOG is True
v0.5.6
- The example app now has a working fixture.
v0.5.5
- Special admin widgets are nolonger discarded by easymode (issue #3)
v0.5.4
- Some data files where not installed correctly by setup.py