diff --git a/README.md b/README.md index 9456a4f..b7c2d13 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,11 @@ Simple app containing a mixin model that integrates modeltranslation ## Release Notes +### v0.0.5 + +- Now using django-modeltranslation 0.9.1; +- Fixed problem related to slug field fallbacks; + ### v0.0.4 ** IMPORTANT: ** make sure that TranslationMixin comes before Page class on model inheritance diff --git a/dist/wagtail-modeltranslation-0.0.5.tar.gz b/dist/wagtail-modeltranslation-0.0.5.tar.gz new file mode 100644 index 0000000..da877e1 Binary files /dev/null and b/dist/wagtail-modeltranslation-0.0.5.tar.gz differ diff --git a/setup.py b/setup.py index aed5759..2ea4cb3 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) setup( name='wagtail-modeltranslation', - version='0.0.4', + version='0.0.5', packages=['wagtail_modeltranslation'], include_package_data=True, license='BSD License', @@ -32,5 +32,5 @@ setup( 'Topic :: Internet :: WWW/HTTP', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', ], - install_requires=['django-modeltranslation==0.9', 'wagtail'] + install_requires=['django-modeltranslation==0.9.1', 'wagtail'] ) \ No newline at end of file diff --git a/wagtail_modeltranslation.egg-info/PKG-INFO b/wagtail_modeltranslation.egg-info/PKG-INFO index 67c7f35..e30f879 100644 --- a/wagtail_modeltranslation.egg-info/PKG-INFO +++ b/wagtail_modeltranslation.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: wagtail-modeltranslation -Version: 0.0.4 +Version: 0.0.5 Summary: Integration of django-modeltranslation with Wagtail CMS Home-page: UNKNOWN Author: Rui Martins @@ -53,6 +53,11 @@ Description: # Wagtail modeltranslation ## Release Notes + ### v0.0.5 + + - Now using django-modeltranslation 0.9.1; + - Fixed problem related to slug field fallbacks; + ### v0.0.4 ** IMPORTANT: ** make sure that TranslationMixin comes before Page class on model inheritance diff --git a/wagtail_modeltranslation.egg-info/requires.txt b/wagtail_modeltranslation.egg-info/requires.txt index 177a3ef..69ae455 100644 --- a/wagtail_modeltranslation.egg-info/requires.txt +++ b/wagtail_modeltranslation.egg-info/requires.txt @@ -1,2 +1,2 @@ -django-modeltranslation==0.9 +django-modeltranslation==0.9.1 wagtail \ No newline at end of file diff --git a/wagtail_modeltranslation/management/commands/set_translation_url_paths.py b/wagtail_modeltranslation/management/commands/set_translation_url_paths.py index 7d7ffbb..2b91770 100644 --- a/wagtail_modeltranslation/management/commands/set_translation_url_paths.py +++ b/wagtail_modeltranslation/management/commands/set_translation_url_paths.py @@ -8,8 +8,13 @@ from wagtail.wagtailcore.models import Page class Command(NoArgsCommand): def set_subtree(self, root, root_path, lang=None): + update_fields = ['url_path_'+lang] + setattr(root, 'url_path_'+lang, root_path) - root.save(update_fields=['url_path_'+lang]) + if lang == settings.LANGUAGE_CODE: + setattr(root, 'url_path', root_path) + update_fields.append('url_path') + root.save(update_fields=update_fields) for child in root.get_children(): slug = getattr(child, 'slug_'+lang) if not slug or slug == '': diff --git a/wagtail_modeltranslation/management/commands/set_translation_url_paths.pyc b/wagtail_modeltranslation/management/commands/set_translation_url_paths.pyc index cc13dc0..06b35ff 100644 Binary files a/wagtail_modeltranslation/management/commands/set_translation_url_paths.pyc and b/wagtail_modeltranslation/management/commands/set_translation_url_paths.pyc differ diff --git a/wagtail_modeltranslation/models.py b/wagtail_modeltranslation/models.py index ef39301..0763959 100644 --- a/wagtail_modeltranslation/models.py +++ b/wagtail_modeltranslation/models.py @@ -3,11 +3,15 @@ import copy from django.conf import settings +from django.http import Http404 +from django.db.models import Q +from wagtail.wagtailcore.models import Page from wagtail.wagtailadmin.edit_handlers import FieldPanel,\ MultiFieldPanel, FieldRowPanel from wagtail.wagtailadmin.views.pages import get_page_edit_handler,\ PAGE_EDIT_HANDLERS +from wagtail.wagtailcore.url_routing import RouteResult from modeltranslation.translator import translator, NotRegistered @@ -219,3 +223,31 @@ class TranslationMixin(object): setattr(self, 'url_path_'+lang[0], '/') return self.url_path + + def route(self, request, path_components): + """ + Rewrite route method in order to handle languages fallbacks + """ + if path_components: + # request is for a child of this page + child_slug = path_components[0] + remaining_components = path_components[1:] + + try: + q = Q() + for lang in settings.LANGUAGES: + tr_field_name = 'slug_%s' % (lang[0]) + condition = {tr_field_name: child_slug} + q |= Q(**condition) + subpage = self.get_children().get(q) + except Page.DoesNotExist: + raise Http404 + + return subpage.specific.route(request, remaining_components) + + else: + # request is for this very page + if self.live: + return RouteResult(self) + else: + raise Http404 diff --git a/wagtail_modeltranslation/models.pyc b/wagtail_modeltranslation/models.pyc index 1323de2..84a32cc 100644 Binary files a/wagtail_modeltranslation/models.pyc and b/wagtail_modeltranslation/models.pyc differ