From 37ddd17abd86b21558f05a9ccc6324e4a4bcbc46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com> Date: Sun, 16 May 2021 01:08:50 +0200 Subject: [PATCH] elections2021: Program page archetypes --- .../migrations/0014_auto_20210516_0059.py | 132 ++++++++++++++++++ elections2021/models.py | 127 +++++++++++++++++ .../elections2021_program_page.html | 21 ++- 3 files changed, 279 insertions(+), 1 deletion(-) create mode 100644 elections2021/migrations/0014_auto_20210516_0059.py diff --git a/elections2021/migrations/0014_auto_20210516_0059.py b/elections2021/migrations/0014_auto_20210516_0059.py new file mode 100644 index 00000000..7675175d --- /dev/null +++ b/elections2021/migrations/0014_auto_20210516_0059.py @@ -0,0 +1,132 @@ +# Generated by Django 3.2.2 on 2021-05-15 22:59 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailimages", "0023_add_choose_permissions"), + ("elections2021", "0013_elections2021programpointpage_weight_technology"), + ] + + operations = [ + migrations.AddField( + model_name="elections2021programpage", + name="archetype_childless_photo", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="+", + to="wagtailimages.image", + verbose_name="bezdětní foto", + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_childless_title", + field=models.CharField( + blank=True, max_length=50, null=True, verbose_name="bezdětní titulek" + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_mature_photo", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="+", + to="wagtailimages.image", + verbose_name="zralí foto", + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_mature_title", + field=models.CharField( + blank=True, max_length=50, null=True, verbose_name="zralí titulek" + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_parents_photo", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="+", + to="wagtailimages.image", + verbose_name="rodiče foto", + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_parents_title", + field=models.CharField( + blank=True, max_length=50, null=True, verbose_name="rodiče titulek" + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_seniors_photo", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="+", + to="wagtailimages.image", + verbose_name="senioři foto", + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_seniors_title", + field=models.CharField( + blank=True, max_length=50, null=True, verbose_name="senioři titulek" + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_students_photo", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="+", + to="wagtailimages.image", + verbose_name="studenti foto", + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_students_title", + field=models.CharField( + blank=True, max_length=50, null=True, verbose_name="studenti titulek" + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_working_seniors_photo", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="+", + to="wagtailimages.image", + verbose_name="pracující senioři foto", + ), + ), + migrations.AddField( + model_name="elections2021programpage", + name="archetype_working_seniors_title", + field=models.CharField( + blank=True, + max_length=50, + null=True, + verbose_name="pracující senioři titulek", + ), + ), + ] diff --git a/elections2021/models.py b/elections2021/models.py index c194bd9c..38e0c08f 100644 --- a/elections2021/models.py +++ b/elections2021/models.py @@ -594,6 +594,73 @@ class Elections2021ProgramPage( "Jistota péče a pomoci", blank=True, null=True, features=RESTRICTED_FEATURES ) + archetype_childless_title = models.CharField( + "bezdětní titulek", null=True, blank=True, max_length=50 + ) + archetype_childless_photo = models.ForeignKey( + "wagtailimages.Image", + on_delete=models.PROTECT, + blank=True, + null=True, + verbose_name="bezdětní foto", + related_name="+", + ) + archetype_parents_title = models.CharField( + "rodiče titulek", null=True, blank=True, max_length=50 + ) + archetype_parents_photo = models.ForeignKey( + "wagtailimages.Image", + on_delete=models.PROTECT, + blank=True, + null=True, + verbose_name="rodiče foto", + related_name="+", + ) + archetype_mature_title = models.CharField( + "zralí titulek", null=True, blank=True, max_length=50 + ) + archetype_mature_photo = models.ForeignKey( + "wagtailimages.Image", + on_delete=models.PROTECT, + blank=True, + null=True, + verbose_name="zralí foto", + related_name="+", + ) + archetype_seniors_title = models.CharField( + "senioři titulek", null=True, blank=True, max_length=50 + ) + archetype_seniors_photo = models.ForeignKey( + "wagtailimages.Image", + on_delete=models.PROTECT, + blank=True, + null=True, + verbose_name="senioři foto", + related_name="+", + ) + archetype_working_seniors_title = models.CharField( + "pracující senioři titulek", null=True, blank=True, max_length=50 + ) + archetype_working_seniors_photo = models.ForeignKey( + "wagtailimages.Image", + on_delete=models.PROTECT, + blank=True, + null=True, + verbose_name="pracující senioři foto", + related_name="+", + ) + archetype_students_title = models.CharField( + "studenti titulek", null=True, blank=True, max_length=50 + ) + archetype_students_photo = models.ForeignKey( + "wagtailimages.Image", + on_delete=models.PROTECT, + blank=True, + null=True, + verbose_name="studenti foto", + related_name="+", + ) + ### PANELS content_panels = Page.content_panels + [ImageChooserPanel("photo")] @@ -623,11 +690,57 @@ class Elections2021ProgramPage( FieldPanel("plan_care_text"), ] + archetype_panels = [ + MultiFieldPanel( + [ + FieldPanel("archetype_childless_title"), + ImageChooserPanel("archetype_childless_photo"), + ], + "archetyp bezdětní", + ), + MultiFieldPanel( + [ + FieldPanel("archetype_parents_title"), + ImageChooserPanel("archetype_parents_photo"), + ], + "archetyp rodiče", + ), + MultiFieldPanel( + [ + FieldPanel("archetype_mature_title"), + ImageChooserPanel("archetype_mature_photo"), + ], + "archetyp zralí", + ), + MultiFieldPanel( + [ + FieldPanel("archetype_seniors_title"), + ImageChooserPanel("archetype_seniors_photo"), + ], + "archetyp senioři", + ), + MultiFieldPanel( + [ + FieldPanel("archetype_working_seniors_title"), + ImageChooserPanel("archetype_working_seniors_photo"), + ], + "archetyp pracující senioři", + ), + MultiFieldPanel( + [ + FieldPanel("archetype_students_title"), + ImageChooserPanel("archetype_students_photo"), + ], + "archetyp studenti", + ), + ] + edit_handler = TabbedInterface( [ ObjectList(content_panels, heading=gettext_lazy("Content")), ObjectList(promote_panels, heading=gettext_lazy("Promote")), ObjectList(plan_panels, heading="plány"), + ObjectList(archetype_panels, heading="archetypy"), ] ) @@ -794,16 +907,28 @@ class Elections2021ProgramPage( archetype = get_archetype(selection) if archetype == CHILDLESS: weights.append("weight_childless") + archetype_title = self.archetype_childless_title + archetype_photo = self.archetype_childless_photo elif archetype == PARENTS: weights.append("weight_parents") + archetype_title = self.archetype_parents_title + archetype_photo = self.archetype_parents_photo elif archetype == MATURE: weights.append("weight_mature") + archetype_title = self.archetype_mature_title + archetype_photo = self.archetype_mature_photo elif archetype == STUDENTS: weights.append("weight_students") + archetype_title = self.archetype_students_title + archetype_photo = self.archetype_students_photo elif archetype == SENIORS: weights.append("weight_seniors") + archetype_title = self.archetype_seniors_title + archetype_photo = self.archetype_seniors_photo elif archetype == WORKING_SENIORS: weights.append("weight_working_seniors") + archetype_title = self.archetype_working_seniors_title + archetype_photo = self.archetype_working_seniors_photo if selection["occupation"] == OCCUPATION_BUSINESS: weights.append("weight_self_employed") @@ -837,6 +962,8 @@ class Elections2021ProgramPage( "points": points, "show_app_banner": False, "active_my_program": True, + "archetype_title": archetype_title, + "archetype_photo": archetype_photo, } return self.render(request, context_overrides=context) diff --git a/elections2021/templates/elections2021/elections2021_program_page.html b/elections2021/templates/elections2021/elections2021_program_page.html index 8b54f548..ff6e9068 100644 --- a/elections2021/templates/elections2021/elections2021_program_page.html +++ b/elections2021/templates/elections2021/elections2021_program_page.html @@ -22,7 +22,26 @@ {% elif active_ministry %} {% include "elections2021/_page_header.html" with title=title %} {% elif active_my_program %} - {% include "elections2021/_page_header.html" with title=title %} + <article class="relative bg-lemon md:bg-split-color px-4 md:pl-8 md:pr-0 2xl:px-8 hero py-0 w-full "> + <div class="2xl:container w-auto bg-lemon md:pl-20 pr-0 grid lg:grid-rows-2 lg:grid-cols-7 items-center 2xl:mx-auto"> + <div class="lg:row-span-1 lg:col-span-4 order-1 pt-14 md:pr-20"> + <h1 class="head-alt-md sm:head-alt-lg max-w-sm">{{ title }}</h1> + </div> + <div class="lg:row-span-1 lg:col-span-4 order-3 pb-14 md:pr-20"> + <p class="head-alt-2xs max-w-xs mt-8"> + Vybrané programové body pro: + </p> + <h2 class="head-alt-md pt-2"> + {{ archetype_title }} + </h2> + </div> + {% if archetype_photo %} + <div class="hidden lg:block lg:row-span-2 lg:col-span-3 order-2 h-full 2xl:absolute 2xl:right-0 2xl:w-1/3"> + {% image archetype_photo fill-618x256 class="object-cover w-full h-full" %} + </div> + {% endif %} + </div> + </article> {% else %} {% include "elections2021/_page_header.html" with title=page.title photo=page.photo %} {% endif %} -- GitLab