From eecd0e50f5b0378fed8b095cac27939bd64dbb63 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com>
Date: Wed, 17 Feb 2021 15:58:28 +0100
Subject: [PATCH] shared: ArticleMixin upgrades

---
 shared/models.py                              | 18 ++++++++++++++-
 .../styleguide/2.3.x/article_card.html        | 23 ++++++++-----------
 2 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/shared/models.py b/shared/models.py
index b2469220..6ac73c33 100644
--- a/shared/models.py
+++ b/shared/models.py
@@ -25,7 +25,11 @@ class SubpageMixin:
 
 
 class ArticleMixin(models.Model):
-    """Common fields for articles"""
+    """
+    Common fields for articles
+
+    If you want to tag articles, add tags as `tags` field in article page model.
+    """
 
     RICH_TEXT_FEATURES = [
         "h2",
@@ -66,6 +70,18 @@ class ArticleMixin(models.Model):
     class Meta:
         abstract = True
 
+    @classmethod
+    def has_tags(cls):
+        try:
+            cls._meta.get_field("tags")
+        except models.FieldDoesNotExist:
+            return False
+        return True
+
+    def tag_filter_page(self):
+        """Page used for filtering by tags in url like `?tag=foo`."""
+        return self.get_parent()
+
 
 class Person(models.Model):
     """Informace o Piratovi. Slouzi prevazne jako cache informaci o osobe pro
diff --git a/shared/templates/styleguide/2.3.x/article_card.html b/shared/templates/styleguide/2.3.x/article_card.html
index 24edf2f6..0759bab0 100644
--- a/shared/templates/styleguide/2.3.x/article_card.html
+++ b/shared/templates/styleguide/2.3.x/article_card.html
@@ -41,20 +41,15 @@
     </a>
     <p class="card-body-text flex-grow">{{ article.perex }}</p>
 
-    {# TODO tags #}
-    {% comment %}
-    <div class="inline-block-nogap mt-4">
-      <button class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light">
-        <div class="btn__body ">Kategorie 1</div>
-      </button>
-      <button class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light">
-        <div class="btn__body ">Kategorie 2</div>
-      </button>
-      <button class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light">
-        <div class="btn__body ">Dlouhá kategorie 3</div>
-      </button>
-    </div>
-    {% endcomment %}
+    {% if article.has_tags %}
+      <div class="inline-block-nogap mt-4">
+        {% for tag in article.tags.all %}
+          <a href="{% pageurl article.tag_filter_page %}?tag={{ tag }}" class="btn article-card__category-button btn--grey-125 btn--condensed text-sm font-light">
+            <div class="btn__body ">{{ tag }}</div>
+          </a>
+        {% endfor %}
+      </div>
+    {% endif %}
 
   </div>
 </article>
-- 
GitLab