From fbbcf0ce9215cdf4836e1127c056056fe1cd0339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Hamal=20Dvo=C5=99=C3=A1k?= <mordae@anilinux.org> Date: Tue, 10 Aug 2021 17:08:27 +0200 Subject: [PATCH] elections2021: Add calendar filters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jan Hamal Dvořák <mordae@anilinux.org> --- calendar_utils/models.py | 23 ++ .../elections2021_calendar_page.html | 203 +++++++++++++++--- .../elections2021_home_page.html | 7 +- 3 files changed, 200 insertions(+), 33 deletions(-) diff --git a/calendar_utils/models.py b/calendar_utils/models.py index 15409817..6b219237 100644 --- a/calendar_utils/models.py +++ b/calendar_utils/models.py @@ -1,3 +1,5 @@ +import re + import arrow import requests from django.core.serializers.json import DjangoJSONEncoder @@ -24,6 +26,27 @@ class EventsJSONField(models.JSONField): for event in value: event["begin"] = arrow.get(event["begin"]).datetime event["end"] = arrow.get(event["end"]).datetime + + event["pir"] = { + "name": None, + "tags": [], + "region": None, + } + + pir_name = [] + + for word in event["name"].split(): + if word.startswith("#"): + event["pir"]["tags"].append(word[1:]) + else: + pir_name.append(word) + + if len(pir_name) > 0: + if pir_name[0].endswith(":") and len(pir_name[0]) == 4: + event["pir"]["region"] = pir_name.pop(0)[:-1] + + event["pir"]["name"] = " ".join(pir_name) + return value diff --git a/elections2021/templates/elections2021/elections2021_calendar_page.html b/elections2021/templates/elections2021/elections2021_calendar_page.html index 920169fd..23302d60 100644 --- a/elections2021/templates/elections2021/elections2021_calendar_page.html +++ b/elections2021/templates/elections2021/elections2021_calendar_page.html @@ -16,42 +16,181 @@ {% endblock %} {% block content %} -<div class="container container--default pt-8 pb-16 lg:py-24"> +<div class="container container--default pt-16 pb-8 px-0 md:px-1"> + <div class="m-auto text-center text-xl leading-loose max-w-2xl"> + {% if not request.GET.tag %} + <span class="font-bold p-1 bg-black text-white">Všechny akce</span> nebo jenom + {% else %} + <a href="?region={{request.GET.region|urlencode}}&tag=" class="font-bold p-1 bg-lemon">Všechny akce</a> nebo jenom + {% endif %} + {% if request.GET.tag == 'lídři' %} + <span class="font-bold p-1 bg-black text-white">setkání s lídry</span>, + {% else %} + <a href="?region={{request.GET.region|urlencode}}&tag=lídři" class="font-bold p-1 bg-lemon">setkání s lídry</a>, + {% endif %} + + {% if request.GET.tag == 'bartoš' %} + <span class="font-bold p-1 bg-black text-white">Ivanem Bartošem</span>, + {% else %} + <a href="?region={{request.GET.region|urlencode}}&tag=bartoš" class="font-bold p-1 bg-lemon">Ivanem Bartošem</a>, + {% endif %} + + {% if request.GET.tag == 'rakušan' %} + <span class="font-bold p-1 bg-black text-white">Vítem Rakušanem</span>, + {% else %} + <a href="?region={{request.GET.region|urlencode}}&tag=rakušan" class="font-bold p-1 bg-lemon">Vítem Rakušanem</a>, + {% endif %} + + {% if request.GET.tag == 'nanukára' %} + <span class="font-bold p-1 bg-black text-white">zastávka Nanukáry</span> či + {% else %} + <a href="?region={{request.GET.region|urlencode}}&tag=nanukára" class="font-bold p-1 bg-lemon">zastávka Nanukáry</a> či + {% endif %} + + {% if request.GET.tag == 'vraťmezemibudoucnost' %} + <span class="font-bold p-1 bg-black text-white">vraťme zemi budoucnost</span>? + {% else %} + <a href="?region={{request.GET.region|urlencode}}&tag=vraťmezemibudoucnost" class="font-bold p-1 bg-lemon">vraťme zemi budoucnost</a>? + {% endif %} + </div> + + <div class="m-auto text-center py-8 text-xl leading-loose max-w-2xl"> + {% if not request.GET.region %} + <span class="font-bold p-1 bg-black text-white">Všechny kraje</span> nebo jenom + {% else %} + <a href="?region=&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Všechny kraje</a> nebo jenom + {% endif %} + + {% if request.GET.region == 'PHA' %} + <span class="font-bold p-1 bg-black text-white">Praha</span>, + {% else %} + <a href="?region=PHA&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Praha</a>, + {% endif %} + + {% if request.GET.region == 'STC' %} + <span class="font-bold p-1 bg-black text-white">Středočeský</span>, + {% else %} + <a href="?region=STC&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Středočeský</a>, + {% endif %} + + {% if request.GET.region == 'JHC' %} + <span class="font-bold p-1 bg-black text-white">Jihočeský</span>, + {% else %} + <a href="?region=JHC&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Jihočeský</a>, + {% endif %} + + {% if request.GET.region == 'PLK' %} + <span class="font-bold p-1 bg-black text-white">Plzeňský</span>, + {% else %} + <a href="?region=PLK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Plzeňský</a>, + {% endif %} + + {% if request.GET.region == 'KVK' %} + <span class="font-bold p-1 bg-black text-white">Karlovarský</span>, + {% else %} + <a href="?region=KVK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Karlovarský</a>, + {% endif %} + + {% if request.GET.region == 'ULK' %} + <span class="font-bold p-1 bg-black text-white">Ústecký</span>, + {% else %} + <a href="?region=ULK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Ústecký</a>, + {% endif %} + + {% if request.GET.region == 'LBK' %} + <span class="font-bold p-1 bg-black text-white">Liberecký</span>, + {% else %} + <a href="?region=LBK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Liberecký</a>, + {% endif %} + + {% if request.GET.region == 'HKK' %} + <span class="font-bold p-1 bg-black text-white">Královéhradecký</span>, + {% else %} + <a href="?region=HKK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Královéhradecký</a>, + {% endif %} + + {% if request.GET.region == 'MSK' %} + <span class="font-bold p-1 bg-black text-white">Moravskoslezský</span>, + {% else %} + <a href="?region=MSK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Moravskoslezský</a>, + {% endif %} + + {% if request.GET.region == 'PAK' %} + <span class="font-bold p-1 bg-black text-white">Pardubický</span>, + {% else %} + <a href="?region=PAK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Pardubický</a>, + {% endif %} + + {% if request.GET.region == 'VYS' %} + <span class="font-bold p-1 bg-black text-white">Vysočina</span>, + {% else %} + <a href="?region=VYS&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Vysočina</a>, + {% endif %} + + {% if request.GET.region == 'JHM' %} + <span class="font-bold p-1 bg-black text-white">Jihomoravský</span>, + {% else %} + <a href="?region=JHM&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Jihomoravský</a>, + {% endif %} + + {% if request.GET.region == 'OLK' %} + <span class="font-bold p-1 bg-black text-white">Olomoucký</span> či + {% else %} + <a href="?region=OLK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Olomoucký</a> či + {% endif %} + + {% if request.GET.region == 'ZLK' %} + <span class="font-bold p-1 bg-black text-white">Zlínský</span>? + {% else %} + <a href="?region=ZLK&tag={{request.GET.tag}}" class="font-bold p-1 bg-lemon">Zlínský</a>? + {% endif %} + </div> + +<div class="container container--default pt-8 pb-16 px-0 md:px-1"> {% for event in page.calendar.future_events %} - <div class="grid grid-cols-12 items-center calendar-table-row my-1"> - <div class="col-span-2 head-alt-md calendar-table-row__col" style="color: #92ac00"> - <span>{{ event.begin|date:"j." }}</span> - </div> - <div class="col-span-8 grid grid-cols-3 calendar-table-row__col"> - <div class="col-span-3 md:col-span-1"> - <strong class="block">{{ event.begin|date:"l j. E"|capfirst }}</strong> - <p class="font-light text-sm mt-1">{{ event.duration }}</p> - </div> - <div class="col-span-3 md:col-span-2 mt-4 md:mt-0"> - <strong class="block">{{ event.name }}</strong> - {% if event.location %} - <p class="font-light text-sm mt-1">{{ event.location }}</p> - {% endif %} - - {% if event.description %} - <p class="font-light text-sm mt-1">{{ event.description }}</p> - {% endif %} - </div> - </div> - <div class="col-span-2 text-center font-light calendar-table-row__col"> - {% if event.location %} - <a href="https://maps.google.com/maps?q={{ event.location }}" class="icon-link"> - <i class="ico--location" style="color: #92ac00" aria-hidden="true"></i> - <span>Mapa</span> - </a> + {% if not request.GET.tag or request.GET.tag in event.pir.tags %} + {% if not request.GET.region or request.GET.region == event.pir.region %} + <div class="grid grid-cols-12 items-center calendar-table-row my-1"> + <div class="col-span-2 head-alt-md calendar-table-row__col" style="color: #92ac00"> + <span>{{ event.begin|date:"j." }}</span> + </div> + <div class="col-span-8 grid grid-cols-3 calendar-table-row__col"> + <div class="col-span-3 md:col-span-1"> + <strong class="block">{{ event.begin|date:"l j. E"|capfirst }}</strong> + <p class="font-light text-sm mt-1">{{ event.duration }}</p> + </div> + <div class="col-span-3 md:col-span-2 mt-4 md:mt-0"> + <p> + <strong>{{ event.pir.name }}</strong> + {% for tag in event.pir.tags %} + <span class="text-sm font-light">#{{tag}}</span> + {% endfor %} + </p> + {% if event.location %} + <p class="font-light text-sm mt-1">{{ event.location }}</p> + {% endif %} + + {% if event.description %} + <p class="font-light text-sm mt-1">{{ event.description }}</p> + {% endif %} + </div> + </div> + <div class="col-span-2 text-center font-light calendar-table-row__col"> + {% if event.location %} + <a href="https://maps.google.com/maps?q={{ event.location }}" class="icon-link"> + <i class="ico--location" style="color: #92ac00" aria-hidden="true"></i> + <span>Mapa</span> + </a> + {% endif %} + </div> + </div> {% endif %} - </div> - </div> + {% endif %} {% empty %} - <div class="calendar__row__content"> - <p>Žádné události.</p> - </div> + <div class="calendar__row__content"> + <p>Žádné události.</p> + </div> {% endfor %} </div> diff --git a/elections2021/templates/elections2021/elections2021_home_page.html b/elections2021/templates/elections2021/elections2021_home_page.html index 9e5a6812..47f7eb70 100644 --- a/elections2021/templates/elections2021/elections2021_home_page.html +++ b/elections2021/templates/elections2021/elections2021_home_page.html @@ -89,7 +89,12 @@ <p class="font-light text-sm mt-1">{{ event.duration }}</p> </div> <div class="col-span-3 md:col-span-2 mt-4 md:mt-0"> - <strong class="block">{{ event.name }}</strong> + <p> + <strong>{{ event.pir.name }}</strong> + {% for tag in event.pir.tags %} + <span class="text-sm font-light">#{{tag}}</span> + {% endfor %} + </p> {% if event.location %} <p class="font-light text-sm mt-1">{{ event.location }}</p> {% endif %} -- GitLab