From 588abe760f9a33795342fb0ebf8c4cd7a77a7ac0 Mon Sep 17 00:00:00 2001 From: Rui Manuel da Silva Martins Date: Wed, 20 May 2015 10:53:40 +0100 Subject: [PATCH] v0.0.5 --- README.md | 5 +++ dist/wagtail-modeltranslation-0.0.5.tar.gz | Bin 0 -> 5016 bytes setup.py | 4 +-- wagtail_modeltranslation.egg-info/PKG-INFO | 7 +++- .../requires.txt | 2 +- .../commands/set_translation_url_paths.py | 7 +++- .../commands/set_translation_url_paths.pyc | Bin 1833 -> 1807 bytes wagtail_modeltranslation/models.py | 32 ++++++++++++++++++ wagtail_modeltranslation/models.pyc | Bin 6465 -> 7471 bytes 9 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 dist/wagtail-modeltranslation-0.0.5.tar.gz 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 0000000000000000000000000000000000000000..da877e19147674bd0bbb9f4b9da917d816b45e9a GIT binary patch literal 5016 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 literal 0 HcmV?d00001 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 cc13dc0a572df17fe8acef18a5402df69dc798ea..06b35ff7ad89f15a1b31232b006c79c5723d0dae 100644 GIT binary patch delta 553 zcmYLGO)msN5Pj7>)5}`yVOb*Lx(6peKm;cdkrf1CEj>O4n>EwKVKyWyag;SDKY=*$ zQ^d&+@B=tFsxF|QBpStCLc@at5@xqki9%C@xatU@!hu3G z{|iz0Eqe$xEMo~&`{suptVZIo0iv^-NQS<+nO;BNM8k(ONPMtc>D*Lk@Yx_2-^#|` zrPJd-s@?tvC@p|6BMNMR2}K^T$Vy`N_z24uGB1xd=Q=r_M2D4n)$LVW2hjOPToOuIJ$-0RG?;#RuLb$R g0*b|opK>8u$sO5i#@HV;{0vZ%`IF9|kgg#Z8m delta 568 zcmYLG&ui2`6#ix=ncZ$H#NEU+)ns<@km6yz zc__<(7s0z8_3D4(pP>led~e(0Fz=i9zV~xx&ep!HZK+>ZdY>oHo{Vs@6rJ}-nxnqz3<9Xf&x1J&%RGI z2Q}PQiy+vKdhU;ZcYBj;Q>4}SWM^vgve~h9S~X>A^OGv(AB&Z{rMFi(FXk!{T;hFn Qzx8^+e;JBUT$iEx2a8Q@mjD0& 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 1323de22a682123e807dcb4895361d298bc4ffde..84a32cc60e7dff0b725124a7161788abfe733664 100644 GIT binary patch delta 2100 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 NA;nNqO3V|}egn%h$mRe5