From d98ab60bc44e0a4f4de13e30afa817c6c7745f92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexa=20Valentov=C3=A1?= <git@imaniti.org> Date: Wed, 18 Dec 2024 10:19:05 +0100 Subject: [PATCH] show/hide closed --- main/models.py | 18 ++++++++++++++-- main/templates/main/main_careers_page.html | 24 ++++++++++++++++------ main/templatetags/__init__.py | 0 main/templatetags/careers.py | 8 ++++++++ 4 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 main/templatetags/__init__.py create mode 100644 main/templatetags/careers.py diff --git a/main/models.py b/main/models.py index 1adb78f6..8d8e2d53 100644 --- a/main/models.py +++ b/main/models.py @@ -417,6 +417,13 @@ class MainCareersPage( parent_page_types = ["main.MainHomePage"] subpage_types = ["main.MainCareerPage"] + def get_context(self, request, *args, **kwargs) -> dict: + context = super().get_context(request, *args, **kwargs) + + context["show_closed"] = (request.GET.get("show_closed", "false") == "true") + + return context + def get_career_categories(self) -> list[str]: return ( MainCareerPage.objects.child_of(self) @@ -427,8 +434,15 @@ class MainCareersPage( .all() ) - def get_career_pages(self): - return MainCareerPage.objects.child_of(self).live().all() + def get_career_pages(self, show_closed: bool = False): + filter = models.Q() + + current_date = date.today() + + if not show_closed: + filter = filter & models.Q(closing_date__gt=current_date) + + return MainCareerPage.objects.child_of(self).filter(filter).live().all() class Meta: verbose_name = "KariĂ©ry" diff --git a/main/templates/main/main_careers_page.html b/main/templates/main/main_careers_page.html index 7232b1d8..436ab33c 100644 --- a/main/templates/main/main_careers_page.html +++ b/main/templates/main/main_careers_page.html @@ -1,5 +1,5 @@ {% extends "styleguide2/simple_page.html" %} -{% load wagtailcore_tags %} +{% load wagtailcore_tags careers %} {% block content %} {% include 'styleguide2/includes/organisms/layout/main/navbar.html' with selected_item=page.get_menu_title %} @@ -13,11 +13,23 @@ <main role="main" class="mb-20"> <div class="container--wide"> - <div class="grid lg:grid-cols-2 grid-cols-1 gap-6"> - {% for career in page.get_career_pages %} - {% include "styleguide2/includes/molecules/boxes/main/career_box.html" %} - {% endfor %} - </div> + {% with page|get_career_pages:show_closed as career_pages %} + {% if career_pages %} + <div class="grid lg:grid-cols-2 grid-cols-1 gap-6 mb-4"> + {% for career in career_pages %} + {% include "styleguide2/includes/molecules/boxes/main/career_box.html" %} + {% endfor %} + </div> + {% else %} + <div class="mb-4 text-grey-250">ŽádnĂ© aktuálnĂ nabĂdky.</div> + {% endif %} + {% endwith %} + + {% if not show_closed %} + <a class="underline" href="?show_closed=true">Zobrazit uzavĹ™enĂ©</a> + {% else %} + <a class="underline" href="?show_closed=false">SkrĂ˝t uzavĹ™enĂ©</a> + {% endif %} </div> </main> </ui-view-provider> diff --git a/main/templatetags/__init__.py b/main/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/main/templatetags/careers.py b/main/templatetags/careers.py new file mode 100644 index 00000000..e94728a7 --- /dev/null +++ b/main/templatetags/careers.py @@ -0,0 +1,8 @@ +from django import template + +register = template.Library() + + +@register.filter +def get_career_pages(page, show_closed: bool): + return page.get_career_pages(show_closed) \ No newline at end of file -- GitLab