diff --git a/donate/migrations/0031_donateprojectindexpage_support_description_and_more.py b/donate/migrations/0031_donateprojectindexpage_support_description_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..f26d0ae6edc003b7484929d6099df7809d28aed2 --- /dev/null +++ b/donate/migrations/0031_donateprojectindexpage_support_description_and_more.py @@ -0,0 +1,38 @@ +# Generated by Django 4.1.10 on 2023-09-13 18:47 + +from django.db import migrations, models +import wagtail.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("donate", "0030_donateprojectindexpage_heading"), + ] + + operations = [ + migrations.AddField( + model_name="donateprojectindexpage", + name="support_description", + field=wagtail.fields.RichTextField( + default="", verbose_name="Podpoř projekt popis" + ), + preserve_default=False, + ), + migrations.AddField( + model_name="donateprojectindexpage", + name="support_heading", + field=models.CharField( + default="", max_length=32, verbose_name="Podpoř projekt nadpis" + ), + preserve_default=False, + ), + migrations.AddField( + model_name="donateprojectindexpage", + name="support_position", + field=models.IntegerField( + default=0, + help_text="Čím nižší číslo, tím výš se seznam projektů zobrazí.", + verbose_name="Podpoř projekt pozice", + ), + ), + ] diff --git a/donate/migrations/0032_remove_donateprojectindexpage_support_position.py b/donate/migrations/0032_remove_donateprojectindexpage_support_position.py new file mode 100644 index 0000000000000000000000000000000000000000..42a7e73fa62770f99223df82c341556aa8fbbb1f --- /dev/null +++ b/donate/migrations/0032_remove_donateprojectindexpage_support_position.py @@ -0,0 +1,16 @@ +# Generated by Django 4.1.10 on 2023-09-13 19:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("donate", "0031_donateprojectindexpage_support_description_and_more"), + ] + + operations = [ + migrations.RemoveField( + model_name="donateprojectindexpage", + name="support_position", + ), + ] diff --git a/donate/migrations/0033_donateprojectindexpage_support_position.py b/donate/migrations/0033_donateprojectindexpage_support_position.py new file mode 100644 index 0000000000000000000000000000000000000000..6a561d653e95729090884522516546f425806576 --- /dev/null +++ b/donate/migrations/0033_donateprojectindexpage_support_position.py @@ -0,0 +1,21 @@ +# Generated by Django 4.1.10 on 2023-09-13 20:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("donate", "0032_remove_donateprojectindexpage_support_position"), + ] + + operations = [ + migrations.AddField( + model_name="donateprojectindexpage", + name="support_position", + field=models.IntegerField( + default=0, + help_text="Čím nižší číslo, tím výš se seznam projektů zobrazí.", + verbose_name="Podpoř projekt pozice", + ), + ), + ] diff --git a/donate/models.py b/donate/models.py index 5ef5eb7659f3cdf5b7eaaa61ad2f001328403f10..c64754da2e6ec9d955501fbfb893a410951db42f 100644 --- a/donate/models.py +++ b/donate/models.py @@ -261,8 +261,9 @@ class DonateHomePage( def info_page_url(self): return get_subpage_url(self, DonateInfoPage) + @cached_property def project_indexes(self): - return self.get_descendants().type(DonateProjectIndexPage).live().all() + return DonateProjectIndexPage.objects.child_of(self).live() @cached_property def regions_page_url(self): @@ -279,13 +280,22 @@ class DonateHomePage( self.get_descendants().type(DonateRegionPage).live().specific() ) - context["projects"] = ( - self.get_descendants() - .type(DonateProjectPage) - .live() - .specific() - .order_by("-donateprojectpage__date")[:3] - ) + context["project_support_blocks"] = [] + + for project_index in self.project_indexes.order_by("support_position"): + block = {} + + block["index"] = project_index + block["projects"] = ( + DonateProjectPage. + objects. + child_of(project_index). + live(). + specific(). + order_by("-date")[:3] + ) + + context["project_support_blocks"].append(block) return context @@ -394,10 +404,26 @@ class DonateProjectIndexPage( heading = models.CharField("Hlavní nadpis", max_length=32) + support_heading = models.CharField("Podpoř projekt nadpis", max_length=32) + support_description = RichTextField("Podpoř projekt popis") + support_position = models.IntegerField( + "Podpoř projekt pozice", + help_text="Čím nižší číslo, tím výš se seznam projektů zobrazí.", + default=0, + ) + ### PANELS content_panels = Page.content_panels + [ FieldPanel("heading"), + MultiFieldPanel( + [ + FieldPanel("support_heading"), + FieldPanel("support_description"), + FieldPanel("support_position"), + ], + "Informace v sekci 'podpoř projekt' na homepage", + ), ] promote_panels = make_promote_panels() diff --git a/donate/templates/donate/donate_home_page.html b/donate/templates/donate/donate_home_page.html index 9e4e1c9d127afbd0249da24f71624364ceaa2a2e..65c79984be6c4e577ee3940bf08b6bc8fb664670 100644 --- a/donate/templates/donate/donate_home_page.html +++ b/donate/templates/donate/donate_home_page.html @@ -112,24 +112,24 @@ </div> <!-- /container --> </section> - {% if page.has_projects %} - <section class="section--{% get_section_kind %}" id="projekty"> - <div class="container"> - - <h2 class="lead page-subheading mb-4">{{ page.project_title }}</h2> - <p class="mb-4">{{ page.project_body }}</p> - <div class="row projects mb-4"> - - {% for project in projects %} - {% include "donate/project_snippet.html" %} - {% endfor %} - - </div> <!-- /row --> + {% for project_support_block in project_support_blocks %} + {% if project_support_block.projects|length != 0 %} + <section class="section--{% get_section_kind %}" id="projekty-{{ project_support_block.index.id }}"> + <div class="container"> + <h2 class="lead page-subheading mb-4">{{ project_support_block.index.support_heading }}</h2> + <p class="mb-4">{{ project_support_block.index.support_description|richtext }}</p> + + <div class="row projects mb-4"> + {% for project in project_support_block.projects %} + {% include "donate/project_snippet.html" %} + {% endfor %} + </div> <!-- /row --> - <a href="{{ page.projects_page_url }}" class="btn btn-dark btn-lg my-2">Všechny projekty a kampaně <i class="icon-chevron-right ml-2"></i></a> - </div> <!-- /container --> - </section> - {% endif %} + <a href="{{ project_support_block.index.url }}" class="btn btn-dark btn-lg my-2">Všechny projekty a kampaně <i class="icon-chevron-right ml-2"></i></a> + </div> <!-- /container --> + </section> + {% endif %} + {% endfor %} {% for content in page.custom_blocks %} <section class="section--{% get_section_kind %} section--custom" id="custom"> diff --git a/env.example b/env.example new file mode 100644 index 0000000000000000000000000000000000000000..f17b659afb0f9233af90d2c05e7f97106204eea3 --- /dev/null +++ b/env.example @@ -0,0 +1,13 @@ +# Base variables + +DATABASE_URL=postgres://majak:majak@localhost:5432/majak +OIDC_RP_REALM_URL=http://localhost:8080/realms/master/ +OIDC_RP_CLIENT_ID=majak +OIDC_RP_CLIENT_SECRET=KFo7EfYPTrwdWxykl9hAf7WgwL8smYzP + +# Production + +DJANGO_SECRET_KEY= +DJANGO_ALLOWED_HOSTS= +CELERY_BROKER_URL= +CELERY_RESULT_BACKEND=