Skip to content
Snippets Groups Projects
Commit 6b91fc95 authored by Tomi Valentová's avatar Tomi Valentová
Browse files

run hooks

parent 54fe49f3
No related branches found
No related tags found
2 merge requests!1121Release,!1119run hooks
Pipeline #19610 passed
Showing
with 5848 additions and 106 deletions
......@@ -7,8 +7,8 @@ import arrow
from django.core.serializers.json import DjangoJSONEncoder
from django.core.validators import URLValidator, ValidationError
from django.db import models, transaction
from django.utils.timezone import now
from django.utils.html import escape
from django.utils.timezone import now
from .icalevents import icalevents
from .parser import process_event_list
......
......@@ -15,7 +15,6 @@ from wagtail.blocks import (
)
from wagtail.images.blocks import ImageChooserBlock
from shared.blocks import DEFAULT_CONTENT_BLOCKS
from shared.blocks import CandidateBlock as SharedCandidateBlockMixin
from shared.blocks import CandidateListBlock as SharedCandidateListBlockMixin
from shared.blocks import (
......@@ -25,6 +24,8 @@ from shared.blocks import (
CardLinkBlockMixin,
CardLinkWithHeadlineBlockMixin,
CarouselProgramBlock,
CustomPrimaryCandidateBlock,
LinkBlock,
PeopleGroupBlockMixin,
PersonContactBlockMixin,
PersonCustomPositionBlockMixin,
......@@ -32,6 +33,7 @@ from shared.blocks import (
ProgramGroupBlockMixin,
)
from shared.blocks import ProgramGroupBlockPopout as SharedProgramGroupBlockPopout
from shared.blocks import ProgramGroupWithCandidatesOtherViewBlock
from shared.blocks import SecondaryCandidateBlock as SharedSecondaryCandidateBlockMixin
from shared.blocks import TeamBlockMixin
......@@ -355,7 +357,6 @@ class ProgramGroupBlockCrossroad(ProgramGroupBlockMixin):
class Meta:
icon = "date"
group = "Program"
label = "Rozcestníkový program"
......@@ -378,8 +379,12 @@ class SecondaryCandidateBlock(SharedSecondaryCandidateBlockMixin):
class CandidateListBlock(SharedCandidateListBlockMixin):
candidates = ListBlock(
CandidateBlock(),
stream_candidates = StreamBlock(
[
("candidate", CandidateBlock()),
("custom_candidate", CustomPrimaryCandidateBlock()),
],
required=False,
label=" ", # Hacky way to show no label
)
......@@ -391,19 +396,6 @@ class CandidateSecondaryListBlock(SharedCandidateSecondaryListBlockMixin):
)
class ProgramGroupWithCandidatesOtherViewBlock(StructBlock):
title = CharBlock(
label="Název sekce",
help_text="Např. 'Volební noviny'",
)
child_blocks = StreamBlock(DEFAULT_CONTENT_BLOCKS, label="Obsah")
class Meta:
label = "Blok obsahu"
icon = "list-ul"
class ProgramGroupWithCandidatesBlock(StructBlock):
title = CharBlock(
label="Název programu",
......@@ -444,7 +436,8 @@ class ProgramGroupWithCandidatesBlock(StructBlock):
template="styleguide2/includes/molecules/program/program_block.html"
),
),
]
],
required=False,
)
other_views = ListBlock(
......@@ -457,6 +450,15 @@ class ProgramGroupWithCandidatesBlock(StructBlock):
),
)
tab_links = ListBlock(
LinkBlock(label="Odkaz"),
label="Odkazy zobrazené jako záložky",
min_num=0,
help_text=(
"Odkazy na jiné části stránky, které se zobrazí jako záložka nahoře."
),
)
class Meta:
icon = "list-ul"
label = "Program s kandidáty"
......
......@@ -4,10 +4,8 @@ import tempfile
from wagtail.admin.forms import WagtailAdminPageForm
from wagtail.models.media import Collection
from shared.forms import JekyllImportForm as SharedJekyllImportForm
from shared.forms import ArticlesPageForm as SharedArticlesPageForm
from django.forms import ModelMultipleChoiceField, CheckboxSelectMultiple
from modelcluster.forms import ClusterForm
from shared.forms import JekyllImportForm as SharedJekyllImportForm
from .tasks import import_jekyll_articles, import_people_from_group
......@@ -54,19 +52,35 @@ class DistrictPeoplePageForm(WagtailAdminPageForm):
class DistrictArticlesPageForm(SharedArticlesPageForm, JekyllImportForm):
def __init__(self, *args, **kwargs):
from .models import DistrictArticleTag
from shared.models import SharedTag
from .models import DistrictArticleTag
super().__init__(*args, **kwargs)
self.fields["shared_tags"].queryset = SharedTag.objects.order_by("name")
if self.instance.pk:
valid_tag_ids = list(DistrictArticleTag.objects.filter(
valid_tag_ids = list(
DistrictArticleTag.objects.filter(
content_object__in=self.instance.get_children().specific()
).values_list('tag_id', flat=True).distinct().all())
)
.values_list("tag_id", flat=True)
.distinct()
.all()
)
valid_shared_tag_ids = self.instance.shared_tags.values_list('id', flat=True).distinct().all()
valid_shared_tag_ids = (
self.instance.shared_tags.values_list("id", flat=True).distinct().all()
)
self.fields['displayed_tags'].queryset = DistrictArticleTag.objects.filter(id__in=valid_tag_ids).order_by("tag__name").distinct("tag__name")
self.fields['displayed_shared_tags'].queryset = SharedTag.objects.filter(id__in=valid_shared_tag_ids).order_by("name").distinct("name")
\ No newline at end of file
self.fields["displayed_tags"].queryset = (
DistrictArticleTag.objects.filter(id__in=valid_tag_ids)
.order_by("tag__name")
.distinct("tag__name")
)
self.fields["displayed_shared_tags"].queryset = (
SharedTag.objects.filter(id__in=valid_shared_tag_ids)
.order_by("name")
.distinct("name")
)
......@@ -5,20 +5,24 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('district', '0266_districthomepage_image_collection'),
("district", "0266_districthomepage_image_collection"),
]
operations = [
migrations.AddField(
model_name='districtarticlespage',
name='displayed_tags',
field=modelcluster.fields.ParentalManyToManyField(blank=True, help_text='Pokud nejsou žádné štítky vybrané, zobrazí se nejpoužívanějších 20.', to='district.districtarticletag', verbose_name='Zobrazené štítky'),
model_name="districtarticlespage",
name="displayed_tags",
field=modelcluster.fields.ParentalManyToManyField(
blank=True,
help_text="Pokud nejsou žádné štítky vybrané, zobrazí se nejpoužívanějších 20.",
to="district.districtarticletag",
verbose_name="Zobrazené štítky",
),
),
migrations.AddField(
model_name='districtarticlespage',
name='show_tags',
field=models.BooleanField(default=True, verbose_name='Zobrazit štítky'),
model_name="districtarticlespage",
name="show_tags",
field=models.BooleanField(default=True, verbose_name="Zobrazit štítky"),
),
]
......@@ -5,15 +5,19 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('district', '0267_districtarticlespage_displayed_tags_and_more'),
("district", "0267_districtarticlespage_displayed_tags_and_more"),
]
operations = [
migrations.AlterField(
model_name='districtarticlespage',
name='displayed_tags',
field=modelcluster.fields.ParentalManyToManyField(blank=True, help_text='Pokud nejsou žádné štítky vybrané, zobrazí se nejpoužívanějších 30.', to='district.districtarticletag', verbose_name='Zobrazené štítky'),
model_name="districtarticlespage",
name="displayed_tags",
field=modelcluster.fields.ParentalManyToManyField(
blank=True,
help_text="Pokud nejsou žádné štítky vybrané, zobrazí se nejpoužívanějších 30.",
to="district.districtarticletag",
verbose_name="Zobrazené štítky",
),
),
]
......@@ -5,16 +5,21 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('district', '0268_alter_districtarticlespage_displayed_tags'),
('shared', '0010_alter_octopusperson_photo'),
("district", "0268_alter_districtarticlespage_displayed_tags"),
("shared", "0010_alter_octopusperson_photo"),
]
operations = [
migrations.AlterField(
model_name='districtarticlepage',
name='shared_tags',
field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='A comma-separated list of tags.', through='shared.SharedTaggedDistrictArticle', to='shared.SharedTag', verbose_name='Štítky pro sdílení mezi weby'),
model_name="districtarticlepage",
name="shared_tags",
field=modelcluster.contrib.taggit.ClusterTaggableManager(
blank=True,
help_text="A comma-separated list of tags.",
through="shared.SharedTaggedDistrictArticle",
to="shared.SharedTag",
verbose_name="Štítky pro sdílení mezi weby",
),
),
]
......@@ -4,15 +4,18 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('district', '0269_alter_districtarticlepage_shared_tags'),
("district", "0269_alter_districtarticlepage_shared_tags"),
]
operations = [
migrations.AlterField(
model_name='districtarticlespage',
name='show_tags',
field=models.BooleanField(default=True, help_text='Pokud je toto pole zaškrtlé, v hlavičce se zobrazí štítky.', verbose_name='Zobrazit štítky'),
model_name="districtarticlespage",
name="show_tags",
field=models.BooleanField(
default=True,
help_text="Pokud je toto pole zaškrtlé, v hlavičce se zobrazí štítky.",
verbose_name="Zobrazit štítky",
),
),
]
......@@ -5,21 +5,30 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('district', '0270_alter_districtarticlespage_show_tags'),
('shared', '0010_alter_octopusperson_photo'),
("district", "0270_alter_districtarticlespage_show_tags"),
("shared", "0010_alter_octopusperson_photo"),
]
operations = [
migrations.AddField(
model_name='districtarticlespage',
name='displayed_shared_tags',
field=modelcluster.fields.ParentalManyToManyField(blank=True, related_name='+', to='shared.sharedtag', verbose_name='Pro sdílení mezi weby'),
model_name="districtarticlespage",
name="displayed_shared_tags",
field=modelcluster.fields.ParentalManyToManyField(
blank=True,
related_name="+",
to="shared.sharedtag",
verbose_name="Pro sdílení mezi weby",
),
),
migrations.AlterField(
model_name='districtarticlespage',
name='displayed_tags',
field=modelcluster.fields.ParentalManyToManyField(blank=True, related_name='+', to='district.districtarticletag', verbose_name='Z tohoto oblastního webu'),
model_name="districtarticlespage",
name="displayed_tags",
field=modelcluster.fields.ParentalManyToManyField(
blank=True,
related_name="+",
to="district.districtarticletag",
verbose_name="Z tohoto oblastního webu",
),
),
]
......@@ -5,26 +5,38 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('district', '0271_districtarticlespage_displayed_shared_tags_and_more'),
('shared', '0010_alter_octopusperson_photo'),
("district", "0271_districtarticlespage_displayed_shared_tags_and_more"),
("shared", "0010_alter_octopusperson_photo"),
]
operations = [
migrations.AlterField(
model_name='districtarticlespage',
name='displayed_shared_tags',
field=modelcluster.fields.ParentalManyToManyField(blank=True, related_name='+', to='shared.sharedtag', verbose_name='Sdílecí'),
model_name="districtarticlespage",
name="displayed_shared_tags",
field=modelcluster.fields.ParentalManyToManyField(
blank=True,
related_name="+",
to="shared.sharedtag",
verbose_name="Sdílecí",
),
),
migrations.AlterField(
model_name='districtoctopuspersonpage',
name='is_automatically_created',
field=models.BooleanField(default=False, verbose_name='Profil vytvořen automaticky'),
model_name="districtoctopuspersonpage",
name="is_automatically_created",
field=models.BooleanField(
default=False, verbose_name="Profil vytvořen automaticky"
),
),
migrations.AlterField(
model_name='districtoctopuspersonpage',
name='originating_group',
field=models.CharField(blank=True, help_text='Skupina, ze které byla tato osba importována.', max_length=128, null=True, verbose_name='Skupina'),
model_name="districtoctopuspersonpage",
name="originating_group",
field=models.CharField(
blank=True,
help_text="Skupina, ze které byla tato osba importována.",
max_length=128,
null=True,
verbose_name="Skupina",
),
),
]
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
# Generated by Django 5.0.7 on 2024-08-27 15:03
from django.db import migrations
from shared.blocks import CustomPrimaryCandidateBlock
from district.blocks import CandidateBlock
def move_candidate_block_data(apps, schema_editor):
DistrictNewProgramPage = apps.get_model("district", "DistrictNewProgramPage")
for page in DistrictNewProgramPage.objects.all():
for program in page.program:
if program.block_type != "program_group_with_candidates":
continue
candidate_children = program.value["primary_candidates"]["candidates"]
for candidate_child in candidate_children:
program.value["primary_candidates"]["stream_candidates"].append(
("candidate", CandidateBlock().to_python({
"page": candidate_child["page"].id,
"image": (
candidate_child["image"].id
if candidate_child["image"] is not None
else None
),
"description": (
candidate_child["description"].source
if candidate_child["description"] is not None
else None
)
}))
)
program.value["primary_candidates"]["candidates"] = []
page.save()
class Migration(migrations.Migration):
dependencies = [
('district', '0275_alter_districtnewprogrampage_program'),
]
operations = [
migrations.RunPython(move_candidate_block_data)
]
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -5,9 +5,9 @@ from django.conf import settings
from django.contrib import messages
from django.core.cache import cache
from django.core.exceptions import ValidationError
from django.utils.safestring import mark_safe
from django.db import models
from django.http import HttpResponseRedirect
from django.utils.safestring import mark_safe
from modelcluster.contrib.taggit import ClusterTaggableManager
from modelcluster.fields import ParentalKey, ParentalManyToManyField
from taggit.models import TaggedItemBase
......@@ -65,6 +65,7 @@ from shared.models import (
SharedTaggedDistrictArticle,
SubpageMixin,
)
from shared.templatetags.shared_filters import markdown
from shared.utils import (
make_promote_panels,
strip_all_html_tags,
......@@ -73,7 +74,7 @@ from shared.utils import (
)
from . import blocks
from .forms import DistrictPeoplePageForm, JekyllImportForm, DistrictArticlesPageForm
from .forms import DistrictArticlesPageForm, DistrictPeoplePageForm
CONTENT_BLOCKS = DEFAULT_CONTENT_BLOCKS + [
("chart", ChartBlock()),
......@@ -431,7 +432,7 @@ class DistrictOctopusPersonPage(
@property
def text(self):
return self.person.long_text
return markdown(self.person.long_text)
@property
def social_links(self):
......@@ -617,7 +618,7 @@ class DistrictPeoplePage(MainPeoplePageMixin):
FieldPanel("perex_col_1", heading="První sloupec"),
FieldPanel("perex_col_2", heading="Druhý sloupec"),
],
"Perex"
"Perex",
),
MultiFieldPanel(
[
......@@ -630,10 +631,10 @@ class DistrictPeoplePage(MainPeoplePageMixin):
" vedení</a>."
),
),
FieldPanel("content")
FieldPanel("content"),
],
"Obsah"
)
"Obsah",
),
]
edit_handler = TabbedInterface(
......@@ -806,12 +807,10 @@ class DistrictCenterPage(
if self.search_description:
return self.search_description
desc = None
if hasattr(self, "perex") and self.perex:
desc = self.perex
self.perex
elif hasattr(self, "text") and self.text:
desc = trim_to_length(strip_all_html_tags(self.text))
trim_to_length(strip_all_html_tags(self.text))
return ""
......
......@@ -58,7 +58,8 @@ class SecondaryCandidateBlock(SharedSecondaryCandidateBlockMixin):
class CandidateListBlock(SharedCandidateListBlockMixin):
candidates = ListBlock(
CandidateBlock(),
label="Kandidáti",
required=False,
label=" ", # Hacky way to show no label
)
......
import os
import tempfile
from shared.forms import JekyllImportForm as SharedJekyllImportForm
from shared.forms import ArticlesPageForm as SharedArticlesPageForm
from shared.forms import JekyllImportForm as SharedJekyllImportForm
from .tasks import import_jekyll_articles
......@@ -29,16 +29,25 @@ class JekyllImportForm(SharedJekyllImportForm):
class ElectionsArticlesPageForm(SharedArticlesPageForm, JekyllImportForm):
def __init__(self, *args, **kwargs):
from .models import ElectionsArticleTag
from shared.models import SharedTag
from .models import ElectionsArticleTag
super().__init__(*args, **kwargs)
self.fields["shared_tags"].queryset = SharedTag.objects.order_by("name")
if self.instance.pk:
valid_tag_ids = ElectionsArticleTag.objects.filter(
valid_tag_ids = (
ElectionsArticleTag.objects.filter(
content_object__in=self.instance.get_children().specific()
).values_list('tag_id', flat=True).distinct()
)
.values_list("tag_id", flat=True)
.distinct()
)
self.fields['displayed_tags'].queryset = ElectionsArticleTag.objects.filter(id__in=valid_tag_ids).order_by("tag__name").distinct("tag__name")
\ No newline at end of file
self.fields["displayed_tags"].queryset = (
ElectionsArticleTag.objects.filter(id__in=valid_tag_ids)
.order_by("tag__name")
.distinct("tag__name")
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment