Skip to content
Snippets Groups Projects
Commit c9ea5861 authored by OndraPetrzilka's avatar OndraPetrzilka
Browse files

Merge branch 'feature/pirati-cz' into feature/pirati-cz-ondra

parents 5b00fe7d efd93700
Branches
No related tags found
3 merge requests!607Pirati.cz,!589Feature/pirati cz ondra,!575Feature/pirati cz
......@@ -2,53 +2,6 @@ from wagtail.core import hooks
from district.models import DistrictCenterPage, DistrictHomePage
# import re
#
# from wagtail.core import hooks
#
# # FIXME hooks are loaded globally so it doesn't make sense to have it in this module
#
#
# @hooks.register("construct_page_chooser_queryset")
# def this_web_only(pages, request):
# add_result = re.search(
# "page/(.*)/", request.META.get("HTTP_REFERER")
# ) # FIXME better regex
# edit_result = re.search("pages/(.*)/edit", request.META.get("HTTP_REFERER"))
#
# if add_result:
# return handle_add_page_selection(pages=pages, add_result=add_result)
#
# if edit_result:
# return handle_edit_page_selection(pages=pages, edit_result=edit_result)
#
# return pages
#
#
# def handle_add_page_selection(pages, add_result):
# parent_page_id = add_result.group(1)
# if parent_page_id == 1: # pro novou homepage žádné podstránky nejsou
# return pages.none()
#
# parent_page = pages.model.objects.get(id=parent_page_id)
# root_page = getattr(parent_page.specific, "root_page", None)
# return get_only_root_page_descendants(pages=pages, root_page=root_page)
#
#
# def handle_edit_page_selection(pages, edit_result):
# current_page_id = edit_result.group(1)
# current_page = pages.model.objects.get(id=current_page_id)
# root_page = getattr(current_page.specific, "root_page", None)
# return get_only_root_page_descendants(pages=pages, root_page=root_page)
#
#
# def get_only_root_page_descendants(pages, root_page):
# if not root_page:
# return pages
#
# web_pages_id_list = root_page.get_descendants().live().values_list("id", flat=True)
# return pages.filter(id__in=web_pages_id_list)
@hooks.register("after_copy_page")
def handle_copy_calendar(request, origin_page, copied_page):
......
# Generated by Django 4.0.7 on 2022-08-24 13:39
import wagtail.blocks
import wagtail.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("main", "0011_alter_mainarticlepage_content_and_more"),
]
operations = [
migrations.AlterField(
model_name="mainpeoplepage",
name="people",
field=wagtail.fields.StreamField(
[
(
"people_group",
wagtail.blocks.StructBlock(
[
("title", wagtail.blocks.CharBlock(label="Titulek")),
(
"slug",
wagtail.blocks.CharBlock(
help_text="Není třeba vyplňovat, bude automaticky vyplněno",
label="Slug skupiny",
required=False,
),
),
(
"person_list",
wagtail.blocks.ListBlock(
wagtail.blocks.PageChooserBlock(
label="Detail osoby",
page_type=["main.MainPersonPage"],
),
label="Skupina osob",
),
),
],
label="Seznam osob",
),
)
],
blank=True,
use_json_field=None,
verbose_name="Lidé",
),
),
migrations.DeleteModel(
name="MainArticlesPage",
),
]
# Generated by Django 4.0.7 on 2022-08-24 13:39
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("wagtailimages", "0024_index_image_file_hash"),
("wagtailcore", "0069_log_entry_jsonfield"),
("main", "0012_alter_mainpeoplepage_people_delete_mainarticlespage"),
]
operations = [
migrations.RenameModel(
old_name="MainWorkPage",
new_name="MainArticlesPage",
),
]
# Generated by Django 4.0.7 on 2022-08-24 13:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("main", "0013_rename_mainworkpage_mainarticlespage"),
]
operations = [
migrations.AlterModelOptions(
name="mainarticlespage",
options={"verbose_name": "Rozcestník článků"},
),
migrations.AddField(
model_name="mainarticlepage",
name="article_type",
field=models.PositiveSmallIntegerField(
choices=[
(1, "Článek na timeline Piráti pracují"),
(2, "Tisková zpráva"),
],
default=2,
verbose_name="Typ článku",
),
),
]
......@@ -2,7 +2,6 @@ from datetime import timedelta
from functools import cached_property
from django.conf import settings
from django.core.paginator import Paginator
from django.db import models
from django.http import HttpResponseRedirect
from django.shortcuts import render
......@@ -34,6 +33,11 @@ from . import blocks
from .menu import MenuMixin
class ARTICLE_TYPES(models.IntegerChoices):
WORK_TIMELINE = 1, "Článek na timeline Piráti pracují"
PRESS_RELEASE = 2, "Tisková zpráva"
class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, Page):
# header
......@@ -129,7 +133,6 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin,
### RELATIONS
subpage_types = [
"main.MainWorkPage",
"main.MainArticlesPage",
"main.MainProgramPage",
"main.MainPeoplePage",
......@@ -181,7 +184,9 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin,
return HttpResponseRedirect(self.url)
class MainWorkPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page):
class MainArticlesPage(
ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
perex = models.TextField()
timeline = StreamField( # TODO delete
[
......@@ -207,7 +212,7 @@ class MainWorkPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, P
### OTHERS
class Meta:
verbose_name = "Piráti pracují"
verbose_name = "Rozcestník článků"
def get_article_data_list(self):
last_month = timezone.now().today().replace(day=1) - timedelta(days=1)
......@@ -260,13 +265,16 @@ class MainArticlePage(
):
### FIELDS
article_type = models.PositiveSmallIntegerField(
"Typ článku", choices=ARTICLE_TYPES.choices, default=ARTICLE_TYPES.PRESS_RELEASE
)
content = StreamField(
[
('text', RichTextBlock(template="")),
('quote', blocks.ArticleQuoteBlock()),
('download', blocks.ArticleDownloadBlock()),
('image', blocks.ArticleImageBlock())
("text", RichTextBlock(template="")),
("quote", blocks.ArticleQuoteBlock()),
("download", blocks.ArticleDownloadBlock()),
("image", blocks.ArticleImageBlock()),
],
verbose_name="Článek",
blank=True,
......@@ -291,6 +299,7 @@ class MainArticlePage(
### PANELS
content_panels = ArticleMixin.content_panels + [
FieldPanel("article_type"),
FieldPanel("author_page"),
FieldPanel("region"),
FieldPanel("tags"),
......@@ -322,36 +331,6 @@ class MainArticlePage(
# return context
class MainArticlesPage(
RoutablePageMixin, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page
):
def get_context(self, request):
context = super().get_context(request)
context["articles"] = Paginator(
self.get_children().live().specific().order_by("-mainarticlepage__date"),
12, # nevím, návrh nemáme
).get_page(request.GET.get("page"))
return context
@route(r"^tagy/$", name="tags")
def tags(self, request):
return render(
request,
"main/main_tags_page.html",
context=self.get_tags_page_context(request=request),
)
### RELATIONS
parent_page_types = ["main.MainHomePage"]
subpage_types = ["main.MainArticlePage"]
### OTHERS
class Meta:
verbose_name = "Aktuality"
class MainProgramPage(ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page):
### FIELDS
......
......@@ -15,6 +15,6 @@
{{ article_page.perex }}
</p>
<div>
{% include 'main/includes/button_animated.html' with btn_text="Číst dále" %}
{% include 'main/includes/button_animated.html' with btn_link=article_page.url btn_text="Číst dále" %}
</div>
</div>
{% extends "main/base.html" %}
{% load wagtailcore_tags wagtailimages_tags shared_filters %}
{% block content %}
{# nemame design #}
<header>
<h1 itemprop="headline" class="head-alt-md md:head-alt-lg max-w-5xl mb-8">{{ page.title }}</h1>
</header>
{% include 'main/includes/layout/simple_page_header.html' %}
<div class="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 %}
<main role="main">
<div class="grid-container mb-2 xl:mb-12">
<div class="grid-left-side">
TODO menu
</div>
<div class="grid-content leading-6">
<h2 class="head-xl mb-2">
{{ page.perex }}
</h2>
<h2 class="head-xl mb-2">
Projděte si archiv tiskových zpráv a souhrn našich nejvýraznějších aktivit
</h2>
</div>
</div>
<div class="grid-container article-section">
<div class="grid-full mb-8">
{% for month_article_data in article_data_list %}
<div class="mb-4">
<h3 class="head-7xl mb-4 xl:hidden">
{{ month_article_data.month_text }}
</h3>
<div class="flex flex-col justify-between xl:flex-row">
<div class="xl:pt-8">
{% for article_page in month_article_data.left_column %}
{% include 'main/includes/work_article_preview.html' %}
{% empty %}
<div class="p-7 flex flex-col max-w-xl mb-8" />
{% endfor %}
</div>
<div class="relative border border-violet-400 mx-8 hidden xl:block">
<div class="absolute bg-violet-400 p-1 text-white font-bold" style="transform: translateX(-50%); top: -1rem">
{{ month_article_data.month_text }}
</div>
</div>
<div class="xl:pt-14">
{% for article_page in month_article_data.right_column %}
{% include 'main/includes/work_article_preview.html' %}
{% empty %}
<div class="p-7 flex flex-col max-w-xl mb-8" />
{% endfor %}
</div>
{% endblock %}
</div>
</div>
{% endfor %}
<div class="flex justify-center">
{% include 'main/includes/button_animated.html' with btn_text="Zobrazit další" %}
</div>
</div>
</div>
</main>
{% endblock content %}
......@@ -2,6 +2,8 @@
{% load wagtailcore_tags wagtailimages_tags shared_filters %}
{% block content %}
{% include 'main/includes/layout/simple_page_header.html' %}
<main role="main">
<div class="grid-container">
<div class="grid-content">
......@@ -15,13 +17,13 @@
<div class="mb-12">
<div class="switch">
{% for program_group in page.program %}
<a
class="switch__item {% if forloop.first %}switch__item--active{% endif %}">{{ program_group.value.title }}</a>
<a class="switch__item {% if forloop.first %}switch__item--active{% endif %}">
{{ program_group.value.title }}
</a>
{% endfor %}
</div>
</div>
<div class="mb-12">
{% for program_group in page.program %}
{% for item in program_group.value.point_list %}
......
{% extends "main/base.html" %}
{% load wagtailcore_tags wagtailimages_tags shared_filters %}
{% block content %}
{% include 'main/includes/layout/simple_page_header.html' %}
<main role="main">
<div class="grid-container mb-2 xl:mb-12">
<div class="grid-left-side">
TODO menu
</div>
<div class="grid-content leading-6">
<h2 class="head-xl mb-2">
{{ page.perex }}
</h2>
<h2 class="head-xl mb-2">
Projděte si archiv tiskových zpráv a souhrn našich nejvýraznějších aktivit
</h2>
</div>
</div>
<div class="grid-container article-section">
<div class="grid-full mb-8">
{% for month_article_data in article_data_list %}
<div class="mb-4">
<h3 class="head-7xl mb-4 xl:hidden">
{{ month_article_data.month_text }}
</h3>
<div class="flex flex-col justify-between xl:flex-row">
<div class="xl:pt-8">
{% for article_page in month_article_data.left_column %}
{% include 'main/includes/work_article_preview.html' %}
{% empty %}
<div class="p-7 flex flex-col max-w-xl mb-8" />
{% endfor %}
</div>
<div class="relative border border-violet-400 mx-8 hidden xl:block">
<div class="absolute bg-violet-400 p-1 text-white font-bold" style="transform: translateX(-50%); top: -1rem">
{{ month_article_data.month_text }}
</div>
</div>
<div class="xl:pt-14">
{% for article_page in month_article_data.right_column %}
{% include 'main/includes/work_article_preview.html' %}
{% empty %}
<div class="p-7 flex flex-col max-w-xl mb-8" />
{% endfor %}
</div>
</div>
</div>
{% endfor %}
<div class="flex justify-center">
{% include 'main/includes/button_animated.html' with btn_text="Zobrazit další" %}
</div>
</div>
</div>
</main>
{% endblock content %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment