From c527a55ce302b6323b2a523b8e0b68a4ae736666 Mon Sep 17 00:00:00 2001 From: Magdalena Noffke Date: Tue, 2 Jul 2019 16:53:21 +0200 Subject: [PATCH 1/4] apps/contrib: added translations.py --- apps/contrib/translations.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 apps/contrib/translations.py diff --git a/apps/contrib/translations.py b/apps/contrib/translations.py new file mode 100644 index 000000000..8a4abe3c3 --- /dev/null +++ b/apps/contrib/translations.py @@ -0,0 +1,33 @@ +from django.utils import translation +from wagtail.core.blocks.stream_block import StreamValue + + +class TranslatedField(object): + + def __init__(self, de_field, en_field): + self.de_field = de_field + self.en_field = en_field + + def hasContent(self, field): + if isinstance(field, StreamValue): + value = field.stream_data + if value: + return True + else: + return False + elif isinstance(field, str): + if field: + return True + else: + return False + else: + return False + + def __get__(self, instance, owner): + de = getattr(instance, self.de_field) + en = getattr(instance, self.en_field) + + if translation.get_language() == 'en' and self.hasContent(en): + return en + else: + return de From b16dbe23c83be1db790a4e13c8618c576af5deb9 Mon Sep 17 00:00:00 2001 From: Magdalena Noffke Date: Tue, 2 Jul 2019 16:55:22 +0200 Subject: [PATCH 2/4] apps/cms: added translations fields for all text inputs to pages --- .../migrations/0007_rename_body_to_body_de.py | 20 ++++++++++++++++++ .../pages/migrations/0008_homepage_body_en.py | 21 +++++++++++++++++++ .../0009_rename_subtitle_to_subtititle_de.py | 20 ++++++++++++++++++ .../migrations/0010_homepage_subtitle_en.py | 20 ++++++++++++++++++ .../migrations/0011_rename_body_to_body_de.py | 20 ++++++++++++++++++ .../migrations/0012_simplepage_body_en.py | 21 +++++++++++++++++++ apps/cms/pages/models.py | 11 +++++++--- 7 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 apps/cms/pages/migrations/0007_rename_body_to_body_de.py create mode 100644 apps/cms/pages/migrations/0008_homepage_body_en.py create mode 100644 apps/cms/pages/migrations/0009_rename_subtitle_to_subtititle_de.py create mode 100644 apps/cms/pages/migrations/0010_homepage_subtitle_en.py create mode 100644 apps/cms/pages/migrations/0011_rename_body_to_body_de.py create mode 100644 apps/cms/pages/migrations/0012_simplepage_body_en.py diff --git a/apps/cms/pages/migrations/0007_rename_body_to_body_de.py b/apps/cms/pages/migrations/0007_rename_body_to_body_de.py new file mode 100644 index 000000000..141bb199c --- /dev/null +++ b/apps/cms/pages/migrations/0007_rename_body_to_body_de.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.21 on 2019-07-02 11:43 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('a4_candy_cms_pages', '0006_rename_tables_to_default'), + ] + + operations = [ + migrations.RenameField( + model_name='homepage', + old_name='body', + new_name='body_de', + ), + ] diff --git a/apps/cms/pages/migrations/0008_homepage_body_en.py b/apps/cms/pages/migrations/0008_homepage_body_en.py new file mode 100644 index 000000000..18e3b3ca6 --- /dev/null +++ b/apps/cms/pages/migrations/0008_homepage_body_en.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.21 on 2019-07-02 11:44 +from __future__ import unicode_literals + +from django.db import migrations +import wagtail.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('a4_candy_cms_pages', '0007_rename_body_to_body_de'), + ] + + operations = [ + migrations.AddField( + model_name='homepage', + name='body_en', + field=wagtail.core.fields.RichTextField(blank=True), + ), + ] diff --git a/apps/cms/pages/migrations/0009_rename_subtitle_to_subtititle_de.py b/apps/cms/pages/migrations/0009_rename_subtitle_to_subtititle_de.py new file mode 100644 index 000000000..992cd7912 --- /dev/null +++ b/apps/cms/pages/migrations/0009_rename_subtitle_to_subtititle_de.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.21 on 2019-07-02 12:00 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('a4_candy_cms_pages', '0008_homepage_body_en'), + ] + + operations = [ + migrations.RenameField( + model_name='homepage', + old_name='subtitle', + new_name='subtitle_de', + ), + ] diff --git a/apps/cms/pages/migrations/0010_homepage_subtitle_en.py b/apps/cms/pages/migrations/0010_homepage_subtitle_en.py new file mode 100644 index 000000000..ba9e39077 --- /dev/null +++ b/apps/cms/pages/migrations/0010_homepage_subtitle_en.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.21 on 2019-07-02 12:01 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('a4_candy_cms_pages', '0009_rename_subtitle_to_subtititle_de'), + ] + + operations = [ + migrations.AddField( + model_name='homepage', + name='subtitle_en', + field=models.CharField(blank=True, max_length=500, verbose_name='Subtitle'), + ), + ] diff --git a/apps/cms/pages/migrations/0011_rename_body_to_body_de.py b/apps/cms/pages/migrations/0011_rename_body_to_body_de.py new file mode 100644 index 000000000..7a7b5f0b0 --- /dev/null +++ b/apps/cms/pages/migrations/0011_rename_body_to_body_de.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.21 on 2019-07-02 14:46 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('a4_candy_cms_pages', '0010_homepage_subtitle_en'), + ] + + operations = [ + migrations.RenameField( + model_name='simplepage', + old_name='body', + new_name='body_de', + ), + ] diff --git a/apps/cms/pages/migrations/0012_simplepage_body_en.py b/apps/cms/pages/migrations/0012_simplepage_body_en.py new file mode 100644 index 000000000..9a86d896f --- /dev/null +++ b/apps/cms/pages/migrations/0012_simplepage_body_en.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.21 on 2019-07-02 14:47 +from __future__ import unicode_literals + +from django.db import migrations +import wagtail.core.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('a4_candy_cms_pages', '0011_rename_body_to_body_de'), + ] + + operations = [ + migrations.AddField( + model_name='simplepage', + name='body_en', + field=wagtail.core.fields.RichTextField(blank=True), + ), + ] diff --git a/apps/cms/pages/models.py b/apps/cms/pages/models.py index 30e84391d..189ce268d 100644 --- a/apps/cms/pages/models.py +++ b/apps/cms/pages/models.py @@ -15,11 +15,15 @@ class HomePage(Page): verbose_name="Header Image", help_text="The Image that is shown on top of the page" ) - subtitle = models.CharField( + + subtitle_de = models.CharField( + max_length=500, blank=True, verbose_name="Subtitle") + subtitle_en = models.CharField( max_length=500, blank=True, verbose_name="Subtitle") - body = RichTextField(blank=True) subpage_types = ['a4_candy_cms_pages.EmptyPage'] + body_de = RichTextField(blank=True) + body_en = RichTextField(blank=True) content_panels = [ FieldPanel('title'), @@ -36,7 +40,8 @@ class EmptyPage(Page): class SimplePage(Page): - body = RichTextField() + body_de = RichTextField() + body_en = RichTextField(blank=True) content_panels = Page.content_panels + [ FieldPanel('body', classname='full'), From 6771e5a028d4a498a9ab038a20d007181ff7dbfe Mon Sep 17 00:00:00 2001 From: Magdalena Noffke Date: Tue, 2 Jul 2019 16:56:44 +0200 Subject: [PATCH 3/4] apps/cms: used transalated field from previous commit --- apps/cms/pages/models.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/cms/pages/models.py b/apps/cms/pages/models.py index 189ce268d..3bf74fc3f 100644 --- a/apps/cms/pages/models.py +++ b/apps/cms/pages/models.py @@ -4,6 +4,8 @@ from wagtail.core.models import Page from wagtail.images.edit_handlers import ImageChooserPanel +from apps.contrib.translations import TranslatedField + class HomePage(Page): image = models.ForeignKey( @@ -26,6 +28,15 @@ class HomePage(Page): body_en = RichTextField(blank=True) content_panels = [ + body = TranslatedField( + 'body_de', + 'body_en' + ) + + subtitle = TranslatedField( + 'subtitle_de', + 'subtitle_en' + ) FieldPanel('title'), ImageChooserPanel('image'), FieldPanel('subtitle'), @@ -45,6 +56,10 @@ class SimplePage(Page): content_panels = Page.content_panels + [ FieldPanel('body', classname='full'), + body = TranslatedField( + 'body_de', + 'body_en' + ) ] subpage_types = ['a4_candy_cms_pages.SimplePage'] From 528534e948d74ac7127c98b3d2350abed5a8b628 Mon Sep 17 00:00:00 2001 From: Magdalena Noffke Date: Tue, 2 Jul 2019 16:57:43 +0200 Subject: [PATCH 4/4] apps/cms: moved translated fields to separate tabs in wagtail admin --- apps/cms/pages/models.py | 47 ++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 7 deletions(-) diff --git a/apps/cms/pages/models.py b/apps/cms/pages/models.py index 3bf74fc3f..28ec95f4c 100644 --- a/apps/cms/pages/models.py +++ b/apps/cms/pages/models.py @@ -1,5 +1,7 @@ from django.db import models from wagtail.admin.edit_handlers import FieldPanel +from wagtail.admin.edit_handlers import ObjectList +from wagtail.admin.edit_handlers import TabbedInterface from wagtail.core.fields import RichTextField from wagtail.core.models import Page from wagtail.images.edit_handlers import ImageChooserPanel @@ -23,11 +25,9 @@ class HomePage(Page): subtitle_en = models.CharField( max_length=500, blank=True, verbose_name="Subtitle") - subpage_types = ['a4_candy_cms_pages.EmptyPage'] body_de = RichTextField(blank=True) body_en = RichTextField(blank=True) - content_panels = [ body = TranslatedField( 'body_de', 'body_en' @@ -37,13 +37,30 @@ class HomePage(Page): 'subtitle_de', 'subtitle_en' ) + + en_content_panels = [ + FieldPanel('subtitle_en'), + FieldPanel('body_en') + ] + + de_content_panels = [ + FieldPanel('subtitle_de'), + FieldPanel('body_de') + ] + + common_panels = [ FieldPanel('title'), + FieldPanel('slug'), ImageChooserPanel('image'), - FieldPanel('subtitle'), - FieldPanel('body') ] - promote_panels = Page.promote_panels + edit_handler = TabbedInterface([ + ObjectList(common_panels, heading='Common'), + ObjectList(en_content_panels, heading='English'), + ObjectList(de_content_panels, heading='German') + ]) + + subpage_types = ['a4_candy_cms_pages.EmptyPage'] class EmptyPage(Page): @@ -54,12 +71,28 @@ class SimplePage(Page): body_de = RichTextField() body_en = RichTextField(blank=True) - content_panels = Page.content_panels + [ - FieldPanel('body', classname='full'), body = TranslatedField( 'body_de', 'body_en' ) + + en_content_panels = [ + FieldPanel('body_en') + ] + + de_content_panels = [ + FieldPanel('body_de') ] + common_panels = [ + FieldPanel('title'), + FieldPanel('slug') + ] + + edit_handler = TabbedInterface([ + ObjectList(common_panels, heading='Common'), + ObjectList(en_content_panels, heading='English'), + ObjectList(de_content_panels, heading='German') + ]) + subpage_types = ['a4_candy_cms_pages.SimplePage']