Changelog¶
Changes in 3.0.1 (2023-02-27)¶
- Added support for pure-proxy models as page type.
- Fixed unapplied changes warning in migrations for django-mptt >=0.10.
- Fixed unneeded compatibility import for
ForwardManyToOneDescriptor. - RedirectNode: hide “show in sitemaps” link
- TextFile: hide in sitemaps by default
Changes in 3.0 (2021-11-17)¶
- Added Django 4 compatibility.
- Fixed keeping a lock unneededly when app loading was complete.
- Replaced Travis with GitHub actions.
- Dropped Python 2.7 support.
- Dropped Django 1.11, 2.0, 2.1 support.
Changes in 2.0.7 (2020-01-04)¶
- Fix Django 3.0 compatibility by removing
django.utils.sixdependency. - Bump setup requirements to ensure Django 3.0 compatibility.
Version 2.0.6 (2019-06-11)¶
- Confirmed Django 2.2 support.
- Fixed recursion in
.only()queries, also happened with django-mptt 0.10 on deleting nodes. - Fixed pagetype plugin admin import errors, caused by ordering in
INSTALLED_APPS. - Reformatted all files with black
Version 2.0.5 (2018-08-28)¶
- Confirmed Django 2.1 support.
- Fixed
RedirectNodein combination with django-any-urlfield on Python 3. - Bumped dependency versions to their latest bugfix releases.
- Optimized the query logic to see whether untranslated fields should be shown.
Version 2.0.4 (2018-04-05)¶
- Added
page.is_publication_date_active()method to check whether a page is published at a given date. - Added
Page.objects.get_for_id()that limits the choices to the current site. - Fixed
page.is_draftandpage.is_publishedproperties to takepublication_date/publication_end_dateinto account. - Fixed displayed
verbose_nameforFluentPage, which showed “fluent page” in django-staff-toolbar. - Improved page chooser form message when selecting an unpublished page.
- Bumped minimal django-slug-preview version for proper Django 2.0 support.
Version 2.0.3 (2018-02-05)¶
- Added missing migration for the new
on_delete=SET_NULLbehavior for the author field. - Added
Meta.manager_inheritance_from_future = Trueto all page subclasses that define aMetaclass. This avoids warnings in the latest django-polymorphic 2.0.1 release. It also makes sure all sub-sub classes are correctly fetched when using asubclass.objects.all().
Version 2.0.2 (2018-01-22)¶
- Fixed adding pages when visiting the direct child admin URL
(e.g. /admin/redirectnode/redirectnode/add/`` instead of
/admin/fluent_pages/page/add/?ct_id=) [backported to 1.1.4].
Version 2.0.1 (2018-01-22)¶
- Fix admin list crash.
- Fixed setup classifiers.
Version 2.0 (2018-01-22)¶
- Added Django 2.0 support.
- Fixed fetching page layouts on django-polymorphic 1.3 / 2.0 [backported to 1.1.4].
- Dropped Django 1.7, 1.8 and 1.9 support, since django-polymorphic-tree also dropped this.
Version 1.1.4 (2018-01-18)¶
Backported fixes from 2.0 release in case Django 1.8 support is still needed.
- Fixed fetching page layouts on django-polymorphic 1.3 / 2.0.
- Fixed adding pages when visiting the direct child admin URL
(e.g. /admin/redirectnode/redirectnode/add/`` instead of
/admin/fluent_pages/page/add/?ct_id=)
Version 1.1.3 (2017-11-22)¶
- Added
HtmlPage.meta_imagefield to specify an Facebookog:imagefor the current page - Fixed meta keywords/description showing
Nonewhen some fields were left empty. - Fixed compatibility with upcoming django-polymorphic 2.0.
- Allow to register the model admin classes of page types directly in the admin.
- Removed
prefix_pagetypesmanagement command as it no never worked beyond Django 1.7.
Version 1.1.2 (2017-08-01)¶
- Added
manage.py remove_stale_pagescommand that helps to clear removed page type models from the database. - Upgraded minimal django-polymorphic-tree version from 1.4 to to 1.4.1, to include a required bugfix.
- Fixed unwanted migrations created by Django 1.10+
- Fixed unselected active menu item in Django 1.11
Version 1.1.1 (2017-02-24)¶
- Fixed
native_strusage in the admin template resolving. - Fixed more Django 1.10 issues with reverted default managers in abstract models.
This also fixes the django-fluent-blogs admin page for the
BlogPagemodel on Django 1.10.
Version 1.1 (2017-02-18)¶
- Added
child_typesandcan_be_rootoptions to limit the allowed model types in the plugin. This allows limiting which child types can be used by plugins! - Added support for
{% appurl .. as varname %}. - Added
ParentTranslationDoesNotExistexception to improve error handling - Fixed Django 1.10 issue for the
FluentPagetype with an invalid default manager in the admin. - Fix multiple fallback languages support in
rebuild_page_tree. - Fixed migration string types for Python 3.
- Fixed using
os.path.sepinFLUENT_PAGES_TEMPLATE_DIR - Fixed recursion bug in
RedirectNodeAdmin. - Dropped Python 2.6 and Django 1.6 support
Note
Creating child nodes in a language that doesn’t yet exist for the parent node is no longer supported.
While past versions tried to resolve such situation with fallback URLs, it turns out to be very prone to bugs when moving page brances or changing the translated parent slug slugs.
Version 1.0.1 (2016-08-07)¶
- Fixed bug that broke Django 1.7 support.
- Avoid installing django-mptt 0.8.5, which breaks pickling deferred querysets.
Version 1.0 (2016-08-07)¶
This release provides compatibility with newer package versions. Many fixes add to the stability of this release, especially when extending it with custom page types.
Major features:
- Django 1.9 support.
- Django 1.10 support is underway (it awaits fixes in our dependencies)
- Support for multiple fallback languages.
- Nicer slug previews in the admin.
- Menu template improvements:
- Added
is_child_activevariable to fix menu highlights.- Added
draftandactiveCSS classses.
- The
fluent_pages.pagetypes.textfilecontent can be translated. - Old unmaintained languages can be redirected with the
make_language_redirectscommand. - Dropped Django 1.4, 1.5 and Python 3.2 support.
- Backwards incompatible: The
FluentPageBaseclass is now removed, useAbstractFluentPageinstead.
Note
Make sure to add the slug_preview package to your INSTALLED_APPS.
django-mptt 0.8.5 has a bug that prevents pickling deferred querysets, hence this version is explicitly excluded as requirement. Use version 0.8.4 instead.
Changes in 1.0b3 (2016-05-17)¶
- Dropped Django 1.5 support.
- Fixed displaying new empty translation page.
- Fixed page moving bug due to old caches on previous errors.
Changes in 1.0b3 (2016-05-17)¶
- Fixed showing “View on site” link for draft pages, since staff has access to it.
- Fixed
node.is_child_activefor selected parent menu’s. - Fixed applying
FLUENT_PAGES_FILTER_SITE_IDsetting in the admin. - Improved
RobotsTxtViewto handlei18n_patterns()automatically.
Changes as of 1.0b2 (2016-02-23)¶
- Fixed published admin icon for Django 1.9
- Fixed truncating long
db_tablenames. - Added
class="active"in the default menu template for menu’s where a child item is active. - Added automatic configuration for django-staff-toolbar.
Changes as of version 1.0b1 (2015-12-30)¶
- Added Django 1.9 support
- Added translation support to the
fluent_pages.pagetypes.textfiletype, to translate the content (but not the type). - Added
draftCSS class to unpublished menu items that are only visible for staff members. - Added
FluentPagesConfigto use Django 1.7 appconfigs. - Added multiple fallback language support for django-parler 1.5.
- Added
make_language_redirectsmanagement command for redirecting an unmaintained language to another. - Added
is_child_activevariable inPageNavigationNodefor menu templates. - Added django-slug-preview for nicer slug appearance in the admin.
- Improve error messages when URLs can’t be created.
- Improve performance of
PageSitemapfor sites with a lot of pages. - Temporary fix: Block moving pages to untranslated sub nodes, until a design decision can be made how to handle this.
- Temporary fix: Hide subpages when searching in the admin, to avoid errors with partial MPTT trees.
- Fixed Django 1.8 issues in the “Change Page” view.
- Fixed migrations to prevent Django from creating additional ones when settings change.
- Fixed silent behavior of using
.parent_site()too late in an already filtered queryset. - Fixed unicode handling in
rebuild_page_tree. - Fixed importing
mixed_reverse_lazy()from django settings. - Fixed showing pages when there is no translation is created yet.
- Fixed JavaScript event binding for dynamic related-lookup fields.
- Fixed
welcome.jsonfixture - Dropped Django 1.4 and Python 3.2 support.
- Backwards incompatible: The
FluentPageBaseclass is now removed, useAbstractFluentPageinstead.
Version 0.9 (2015-04-13)¶
- Added Django 1.8 support
- Non-published pages can now be seen by staff members
- Fix initial migrations on MySQL with InnoDB/utf8 charset.
- Fix missing
robots.txtin the PyPI package. - Fix behavior of
Page.objects.language(..).get_for_path()andbest_match_for_path(), use the currently selected language. This is similar to django-parler’sTranslatableModel.objects.language(..).create(..)support. - Fix skipping mount-points in
app_reverse()when the root is not translated. - Backwards incompatible with previous beta releases: split the
fluent_pages.integration.fluent_contentspackage. You’ll need to import from the.models.,.adminand.page_type_pluginsexplicitly. This removes many cases where projects suffered from circular import errors.
Released in 0.9c1 (2015-01-19)¶
- Fix deleting pages which have SEO fields filled in (the
HtmlPageTranslationmodel). - Fix
UrlNode.DoesNotExistexception when using{% render_breadcrumb %}on 404 pages. - Change
slugsize to 100 characters. - Added
RobotsTxtViewfor easier sitemaps integration - Added
FluentContentsPage.create_placeholder(slot)API. - Added
--mptt-onlyoption tomanage.py rebuild_page_treecommand. - Added lazy-resolver functions:
app_reverse_lazy()/mixed_reverse_lazy().
Released in 0.9b4 (2014-11-06)¶
- Fix South migrations for flexible
AUTH_USER_MODEL
Released in 0.9b3 (2014-11-06)¶
- Added preliminary Django 1.7 support, migrations are not fully working yet.
- Added translation support for the SEO fields (meta keywords/description/title) and redirect URL.
- All base models are proxy models now; there will be no more need to update south migrations in your own apps.
- Added
fluent_pages.integration.fluent_contentsto simplify creating custom - Added
CurrentPageMixinandCurrentPageTemplateMixinfor custom views. - Added
HtmPage.meta_robotsproperty to automatically addnoindexto pages outside the sitemaps. - Added
in_sitemapsflag, which is now false for theRedirectNodeby default. pagetypes that reuse the django-fluent-contents integration that thefluent_pages.pagetypes.fluentpagehas. - Fixed stale translated
ContentItemobjects from django-fluent-contents when deleting a translation of a page. - Fixed support for: future >= 0.13.
- Fixed support for: django-polymorphic >= 0.6.
- Fixed support for: django-parler >= 1.2.
- API: use
FluentContentsPageinstead ofAbstractFluentPage.
Upgrade notices:¶
Due to Django 1.7 support, the following changes had to be made:
fluent_pages.adminis renamed tofluent_pages.adminui.- South 1.0 is now required to run the migrations (or set
SOUTH_MIGRATION_MODULESfor all plugins).
Secondly, there were database changes to making the SEO-fields translatable. Previously, the SEO fields were provided by abstract models, requiring projects to upgrade their apps too.
All translated SEO fields are now managed in a single table, which is under the control of this app.
Fortunately, this solves any future migration issues for changes in the HtmlPage model.
If your page types inherited from HtmlPage, FluentContentsPage or it’s old name FluentPage,
you’ll have to migrate the data of your apps one more time.
The bundled pagetypes have two migrations for this: move_seo_fields and remove_untranslatad_fields.
The first migration moves all data to the HtmlPageTranslation table (manually added to the datamigration).
The second migration can simply by generated with ./manage.py schemamigration <yourapp> --auto "remove_untranslatad_fields".
If you have overridden save_translation() in your models, make sure to check for translation.related_name,
as both the base object and derived object translations are passed through this method now.
The SeoPageMixin from 0.9b1 was removed too, instead inherit directly from HtmlPage.
Released in 0.9b2 (2014-06-28)¶
- Added Python 3 support!
- Added
keyfield to allow linking to specific user-created pages (e.g. a Terms and Conditions page). This feature is only visible whenFLUENT_PAGES_KEY_CHOICESis configured. - Fix support for
i18n_patterns()in theoverride_urlfield. - Added
hide_untranslated_menu_itemssetting inFLUENT_PAGES_LANGUAGES/PARLER_LANGUAGES. - Added
pagevariable for menu items inPageNavigationNode. - Add “change Override URL permission” flag.
South users: run
manage.py syncdb --allto create the permission - Fix resolving pages under their fallback language URL when a translated URL does exist.
- Fix exception in
PageNavigationNode.has_children. - Fix moving pages in the admin list (changes were undone).
- Fix missing “ct_id” GET parmeter for Django 1.6 when filtering in the admin (due to the
_changelist_filtersparameter). - Updated dependencies to their Python 3 compatible versions.
- Optimize queries for rendering menu’s
- nodes without children no need a query in
PageNavigationNode.children.- avoid polymorphic behavior for child menu nodes (unless the parent node was polymorphic).
Released in 0.9b1 (2014-04-14)¶
- Added multisite support.
- Added multilingual support, using django-parler.
- Added hooks for patching the admin;
FLUENT_PAGES_PARENT_ADMIN_MIXINandFLUENT_PAGES_CHILD_ADMIN_MIXIN. Note that using this feature is comparable to monkey-patching, and future compatibility can’t be fully guanteed. - Added “Can change Shared fields” permission for all page types.
- Added “Can change Page layout” permission for
fluent_pages.pagetypes.fluentpage. - Allow
formfield_overridesto contain field names too. - API: added
SeoPageMixinmodel withmeta_title,meta_keywordsandmeta_descriptionfields. - API: renamed
FluentPageBasetoAbstractFluentPage. - API: added
get_view_responseto thePageTypePluginclass, allow adding middleware to custom views. - API: Backwards incompatible: when inheriting from the abstract
HtmlPagemodel, your app needs a South migration. - Fixed calling
reverse()on the resolved page urls. - Dropped Django 1.3 and 1.4 support.
Upgrade notices:¶
- When using custom page types that inherit from inherited from
HtmlPage,FluentPageBaseorFluentContentsPage, please add a South migration to your application to handle the updated fields.
The
keywordsfield was renamed tometa_keywords.The
descriptionfield was renamed tometa_description.The
meta_titlefield was added.The South
rename_columnfunction can be used in the migration:db.rename_column('your_model_table', 'keywords', 'meta_keywords') db.rename_column('your_model_table', 'description', 'meta_description')
- API: renamed
FluentPageBasetoFluentContentsPage. The old name is still available.
Version 0.8.7 (2014-12-30)¶
- Add support of django-polymorphic 0.6.
- Add
pagevariable for menu items inPageNavigationNode.
Version 0.8.6 (2014-01-21)¶
- Add
FLUENT_PAGES_DEFAULT_IN_NAVIGATIONsetting to change the “in navigation” default value. - Fix django-mptt 0.6 support.
- Fix using {% appurl %} for modules with multiple results.
- Widen “modification date” column, to support other languages.
Version 0.8.5 (2013-08-15)¶
- Added intro page for empty sites.
- Support Django 1.6 transaction management.
- Fix NL translation of “Slug”.
- Fix the @admin redirect for application URLs (e.g.
/page/app-url/@adminshould redirect to/page/app-url/). - Fix URL dispatcher for app urls when a URL prefix is used (e.g.
/en/..) - Fix Django 1.5 custom user model support in migrations
Version 0.8.4 (2013-05-28)¶
- Fix running at Django 1.6 alpha 1
- Remove filtering pages by SITE_ID in
PageChoiceFieldas there is no proper multi-site support yet. - Remove
X-Object-TypeandX-Object-Idheaders as Django 1.6 removed it due to caching issues.
Version 0.8.3 (2013-05-15)¶
- Fix circular imports for some setups that import
fluent_pages.urlresolversearly. - Fix initial south migrations, added missing dependencies.
- Fix using
{% render_menu %}at 404 pages.
Version 0.8.2 (2013-04-25)¶
- Add
parentargument to{% render_menu %}, to render sub menu’s. - Add
page,sitevariable in template of{% render_breadcrumb %}. - Add
request,parent(the parent context) variables to templates of{% render_breadcrumb %}and{% render_menu %}. - Bump version requirement of django-mptt to 0.5.4, earlier versions have bugs.
- Fix
{% get_fluent_page_vars %}to skip the django-haystackpagevariable. - Fix
{% get_fluent_page_vars %}when asitevariable is already present. - Fix unit test suite in Django 1.3
Version in 0.8.1 (2013-03-07)¶
- Add “Flat page” page type.
- Add support for django-any-urlfield.
- Add
X-Object-TypeandX-Object-Idheaders to the response in development mode (similar to django.contrib.flatpages). - Add Django 1.5 Custom User model support.
- Added lots of documentation.
- Moved the template tag parsing to a separate package, django-tag-parser.
- Improve error messages on initial project setup.
- Improve ability to extend the page change_form template.
- Improve layout of keywords and description fields in the admin.
- Fixed 500 error on invalid URLs with unicode characters.
- Fixed
app_reverse()function for Django 1.3. - Fixed
appurltag for template contexts without page variable. - Fixed
NavigationNode.is_activeproperty for sub menu nodes. - Fixed
NavigationNode.parentproperty for root node. - Fixed
runtests.pyscript. - Fixed
Page.objects.best_match_for_path()for pages without a slash. - Fixed generated URL path for “file” node types in sub folders.
- Fix Django dependency in
setup.py, moved frominstall_requiresto therequiressection. - Bump version of django-polymorphic-tree to 0.8.6 because it fixes issues with moving pages in the admin.
Version 0.8.0 (2012-11-21)¶
First public release
- Support for custom page types.
- Optional integration with django-fluent-contents.
- Refactored tree logic to django-polymorphic-tree.
- Unit tests included.