From a233d2f0696a52cdf6559cb187ba8cd29a38b925 Mon Sep 17 00:00:00 2001
From: Jarmil <jarmil.halamicek@seznam.cz>
Date: Wed, 7 Oct 2020 13:02:41 +0200
Subject: [PATCH] Stranka aktuality

---
 district/migrations/0002_districtarticles.py  | 58 +++++++++++++++++++
 district/models.py                            | 44 +++++++++++---
 .../templates/district/_more_articles.html    | 10 ++++
 district/templates/district/base.html         |  2 +-
 .../templates/district/district_articles.html | 15 +++++
 .../district/district_home_page.html          |  2 +
 district/templates/shared/article.html        |  3 +
 7 files changed, 126 insertions(+), 8 deletions(-)
 create mode 100644 district/migrations/0002_districtarticles.py
 create mode 100644 district/templates/district/_more_articles.html
 create mode 100644 district/templates/district/district_articles.html

diff --git a/district/migrations/0002_districtarticles.py b/district/migrations/0002_districtarticles.py
new file mode 100644
index 00000000..ce672eb9
--- /dev/null
+++ b/district/migrations/0002_districtarticles.py
@@ -0,0 +1,58 @@
+# Generated by Django 3.1.1 on 2020-10-07 09:57
+
+import django.db.models.deletion
+import wagtailmetadata.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("wagtailcore", "0052_pagelogentry"),
+        ("wagtailimages", "0022_uploadedimage"),
+        ("district", "0001_initial"),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="DistrictArticles",
+            fields=[
+                (
+                    "page_ptr",
+                    models.OneToOneField(
+                        auto_created=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        parent_link=True,
+                        primary_key=True,
+                        serialize=False,
+                        to="wagtailcore.page",
+                    ),
+                ),
+                (
+                    "max_items",
+                    models.IntegerField(
+                        blank=True,
+                        null=True,
+                        verbose_name="Maximalni pocet prvku na strance",
+                    ),
+                ),
+                (
+                    "search_image",
+                    models.ForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="+",
+                        to="wagtailimages.image",
+                        verbose_name="Search image",
+                    ),
+                ),
+            ],
+            options={"verbose_name": "Aktuality",},
+            bases=(
+                wagtailmetadata.models.MetadataMixin,
+                "wagtailcore.page",
+                models.Model,
+            ),
+        ),
+    ]
diff --git a/district/models.py b/district/models.py
index a09eab04..eb1d1000 100644
--- a/district/models.py
+++ b/district/models.py
@@ -1,18 +1,12 @@
 from django.db import models
 from django.utils.translation import gettext_lazy
-from wagtail.admin.edit_handlers import (
-    FieldPanel,
-    HelpPanel,
-    MultiFieldPanel,
-    StreamFieldPanel,
-)
+from wagtail.admin.edit_handlers import FieldPanel, MultiFieldPanel, StreamFieldPanel
 from wagtail.core import blocks
 from wagtail.core.fields import StreamField
 from wagtail.core.models import Page
 from wagtailmetadata.models import MetadataPageMixin
 
 from shared.models import Article
-from tuning import help
 
 
 class DistrictHomePage(MetadataPageMixin, Page):
@@ -52,6 +46,7 @@ class DistrictHomePage(MetadataPageMixin, Page):
     ### RELATIONS
     subpage_types = [
         "shared.Article",
+        "DistrictArticles",
     ]
 
     ### OTHERS
@@ -63,6 +58,41 @@ class DistrictHomePage(MetadataPageMixin, Page):
     def articles(self):
         return self.get_descendants().type(Article).live().specific()
 
+    @property
+    def articles_page(self):
+        return self.get_descendants().type(DistrictArticles).live().specific()[0]
+
     @property
     def root_page(self):
         return self
+
+
+class DistrictArticles(MetadataPageMixin, Page):
+    ### FIELDS
+
+    max_items = models.IntegerField(
+        "Maximalni pocet prvku na strance", blank=True, null=True
+    )
+
+    ### PANELS
+
+    content_panels = Page.content_panels + [
+        FieldPanel("max_items"),
+    ]
+
+    settings_panels = []
+
+    ### OTHERS
+
+    class Meta:
+        verbose_name = "Aktuality"
+
+    def get_context(self, request):
+        context = super().get_context(request)
+        context["articles"] = (
+            self.get_siblings(inclusive=False)
+            .type(Article)
+            .live()
+            .specific()[: self.max_items]
+        )
+        return context
diff --git a/district/templates/district/_more_articles.html b/district/templates/district/_more_articles.html
new file mode 100644
index 00000000..3620753e
--- /dev/null
+++ b/district/templates/district/_more_articles.html
@@ -0,0 +1,10 @@
+<nav class="text-center mb-3">
+    <a href="/aktuality/" class="btn btn--icon text-xl pt-8" rel="next" >
+  <div class="btn__body-wrap">
+    <div class="btn__body ">Další články</div>
+    <div class="btn__icon ">
+      <i class="ico--chevron-right"></i>
+    </div>
+  </div>
+</a>
+</nav>
diff --git a/district/templates/district/base.html b/district/templates/district/base.html
index d689df05..0b869114 100644
--- a/district/templates/district/base.html
+++ b/district/templates/district/base.html
@@ -41,7 +41,7 @@
         <div>
           <div class="container container--wide navbar__content max-w-screen-xl" :class="{'navbar__content--initialized': true}">
             <div class="navbar__brand my-4 flex items-center lg:pr-8 lg:my-0">
-              <a href="#">
+              <a href="/">
                 <img src="{% static "uniweb/assets/images/logo-round-white.svg" %}" class="w-8" />
               </a>
             </div>
diff --git a/district/templates/district/district_articles.html b/district/templates/district/district_articles.html
new file mode 100644
index 00000000..e109ae7c
--- /dev/null
+++ b/district/templates/district/district_articles.html
@@ -0,0 +1,15 @@
+{% extends "district/base.html" %}
+
+{% block content %}
+<main>
+
+    <h1 class="head-alt-md md:head-alt-lg max-w-5xl mb-4 mt-5">Aktuální témata</h1>
+
+    <div class="article-card-list grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 lg:gap-8">
+    {% for a in articles %}
+        {% include "shared/article_preview.html" with article=a %}
+    {% endfor %}
+    </div>
+
+</main>
+{% endblock %}
diff --git a/district/templates/district/district_home_page.html b/district/templates/district/district_home_page.html
index b4a0b209..3d5b2640 100644
--- a/district/templates/district/district_home_page.html
+++ b/district/templates/district/district_home_page.html
@@ -13,6 +13,8 @@
         {% endfor %}
     </div>
 
+    {% include "district/_more_articles.html" %}
+
   <div class="d-flex">
 
       <a href="{{page.facebook}}" class="super-button bg-brands-facebook text-white container-padding--zero lg:container-padding--auto lg:w-full m-2" >
diff --git a/district/templates/shared/article.html b/district/templates/shared/article.html
index d3a0e749..2ba81e80 100644
--- a/district/templates/shared/article.html
+++ b/district/templates/shared/article.html
@@ -80,4 +80,7 @@
 
 </div>
 
+{% include "district/_more_articles.html" %}
+
+
 {% endblock %}
-- 
GitLab