Skip to content
Snippets Groups Projects
Commit 68d726be authored by jan.bednarik's avatar jan.bednarik
Browse files

elections2021: Program point detail

parent 6386328e
No related branches found
No related tags found
2 merge requests!216Release,!215Volby
Pipeline #3377 failed
...@@ -47,6 +47,11 @@ CANDIDATE_RICH_TEXT_FEATURES = [ ...@@ -47,6 +47,11 @@ CANDIDATE_RICH_TEXT_FEATURES = [
"link", "link",
] ]
RESTRICTED_FEATURES = ["superscript", "italic", "link"]
STANDARD_FEATURES = ["h4", "ul-elections2021", "superscript", "link", "italic"]
EXTRA_FEATURES = ["h4", "ul-program-elections2021", "superscript", "link", "italic"]
ARTICLES_PER_PAGE = 9 ARTICLES_PER_PAGE = 9
TOP_CANDIDATES_NUM = 12 TOP_CANDIDATES_NUM = 12
...@@ -104,8 +109,6 @@ STAN = "stan" ...@@ -104,8 +109,6 @@ STAN = "stan"
PARTY_CHOICES = ((PIRATES, "Piráti"), (STAN, "STAN")) PARTY_CHOICES = ((PIRATES, "Piráti"), (STAN, "STAN"))
PARTY_NAME = {PIRATES: "Pirátská strana", STAN: "Starostové a nezávislí"} PARTY_NAME = {PIRATES: "Pirátská strana", STAN: "Starostové a nezávislí"}
# cílovky
CHILDLESS = "childless" CHILDLESS = "childless"
PARENTS = "parents" PARENTS = "parents"
MATURE = "mature" MATURE = "mature"
...@@ -139,7 +142,12 @@ TARGET_CHOICES = ( ...@@ -139,7 +142,12 @@ TARGET_CHOICES = (
(HEALTH, "zdraví"), (HEALTH, "zdraví"),
(CULTURE, "kultura"), (CULTURE, "kultura"),
(COMPUTERS, "počítače"), (COMPUTERS, "počítače"),
(COUNTRYSIDE, "venkov"), (COUNTRYSIDE, "regiony"),
(HOUSING, "bydlení"), (HOUSING, "bydlení"),
(EDUCATION, "vzdělávání"), (EDUCATION, "vzdělávání"),
) )
YEARS = "years"
MONTHS = "months"
TIME_HORIZON_CHOICES = ((YEARS, "roky"), (MONTHS, "měsíce"))
# Generated by Django 3.1.7 on 2021-05-05 02:24
import django.db.models.deletion
import wagtail.core.blocks
import wagtail.core.fields
import wagtailmetadata.models
from django.db import migrations, models
import shared.models
class Migration(migrations.Migration):
dependencies = [
("wagtailimages", "0023_add_choose_permissions"),
("wagtailcore", "0060_fix_workflow_unique_constraint"),
("elections2021", "0003_auto_20210505_0137"),
]
operations = [
migrations.CreateModel(
name="Elections2021ProgramPointPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
(
"annotation",
wagtail.core.fields.RichTextField(verbose_name="anotace"),
),
("problem", wagtail.core.fields.RichTextField(verbose_name="problém")),
(
"context",
wagtail.core.fields.RichTextField(verbose_name="kontext problému"),
),
("ideal", wagtail.core.fields.RichTextField(verbose_name="ideál")),
(
"proposal",
wagtail.core.fields.RichTextField(
verbose_name="navrhovaná opatření"
),
),
(
"already_done",
wagtail.core.fields.RichTextField(
verbose_name="co jsme už udělali"
),
),
(
"time_horizon_text",
wagtail.core.fields.RichTextField(
blank=True, null=True, verbose_name="časový horizont"
),
),
(
"time_horizon_number",
models.IntegerField(
blank=True, null=True, verbose_name="časový horizont - číslo"
),
),
(
"time_horizon_unit",
models.CharField(
choices=[("years", "roky"), ("months", "měsíce")],
default="years",
max_length=6,
verbose_name="časový horizont - jednotka",
),
),
("sources", wagtail.core.fields.RichTextField(verbose_name="zdroje")),
(
"faq",
wagtail.core.fields.StreamField(
[
(
"questions_list",
wagtail.core.blocks.ListBlock(
wagtail.core.blocks.StructBlock(
[
(
"question",
wagtail.core.blocks.CharBlock(
label="otázka"
),
),
(
"answer",
wagtail.core.blocks.RichTextBlock(
features=[
"h4",
"ul",
"superscript",
"link",
"italic",
],
label="odpověď",
),
),
]
)
),
)
],
blank=True,
verbose_name="FAQ",
),
),
(
"related_points",
wagtail.core.fields.StreamField(
[
(
"related_points_list",
wagtail.core.blocks.ListBlock(
wagtail.core.blocks.PageChooserBlock(
label="programový bod",
page_type=[
"elections2021.Elections2021ProgramPointPage"
],
)
),
)
],
blank=True,
verbose_name="související body",
),
),
(
"search_image",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="wagtailimages.image",
verbose_name="Search image",
),
),
],
options={
"verbose_name": "Programpvý bod",
},
bases=(
shared.models.SubpageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
"wagtailcore.page",
models.Model,
),
),
migrations.CreateModel(
name="Elections2021ProgramPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
(
"photo",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.PROTECT,
to="wagtailimages.image",
verbose_name="hlavní fotka",
),
),
(
"search_image",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to="wagtailimages.image",
verbose_name="Search image",
),
),
],
options={
"verbose_name": "Program",
},
bases=(
shared.models.SubpageMixin,
wagtailmetadata.models.WagtailImageMetadataMixin,
"wagtailcore.page",
models.Model,
),
),
]
# Generated by Django 3.1.7 on 2021-05-05 07:45
import wagtail.core.blocks
import wagtail.core.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
(
"elections2021",
"0004_elections2021programpage_elections2021programpointpage",
),
]
operations = [
migrations.AlterModelOptions(
name="elections2021programpointpage",
options={"verbose_name": "Programový bod"},
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_childless",
field=models.IntegerField(default=0, verbose_name="váha bezdětní"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_countryside",
field=models.IntegerField(default=0, verbose_name="váha regiony"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_culture",
field=models.IntegerField(default=0, verbose_name="váha kultura"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_education",
field=models.IntegerField(default=0, verbose_name="váha vzdělávání"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_health",
field=models.IntegerField(default=0, verbose_name="váha zdraví"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_housing",
field=models.IntegerField(default=0, verbose_name="váha bydlení"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_mature",
field=models.IntegerField(default=0, verbose_name="váha zralí"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_agriculture",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo zemědělství"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_business",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo průmyslu a obchodu"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_countryside",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo pro místní rozvoj"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_culture",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo kultury"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_defense",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo obrany"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_environment",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo životního prostředí"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_finances",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo financí"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_foreign",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo zahraničních věcí"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_health",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo zdravotnictví"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_interior",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo vnitra"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_justice",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo spravedlnosti"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_schools",
field=models.IntegerField(
default=0,
verbose_name="váha ministerstvo školství, mládeže a tělovýchovy",
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_social",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo práce a sociálních věcí"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_ministry_transport",
field=models.IntegerField(
default=0, verbose_name="váha ministerstvo dopravy"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_nature",
field=models.IntegerField(default=0, verbose_name="váha příroda"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_parents",
field=models.IntegerField(default=0, verbose_name="váha rodiče"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_plan_climate",
field=models.IntegerField(default=0, verbose_name="váha plán klima"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_plan_corruption",
field=models.IntegerField(
default=0, verbose_name="váha protikorupční strategie"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_plan_countryside",
field=models.IntegerField(
default=0, verbose_name="váha plán rozvoj regionů"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_plan_digital",
field=models.IntegerField(
default=0, verbose_name="váha digitalizace státu"
),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_plan_economics",
field=models.IntegerField(default=0, verbose_name="váha moderní ekonomika"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_plan_management",
field=models.IntegerField(default=0, verbose_name="váha plán řízení státu"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_self_employed",
field=models.IntegerField(default=0, verbose_name="váha OSVČ"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_seniors",
field=models.IntegerField(default=0, verbose_name="váha senioři"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_socially_weak",
field=models.IntegerField(default=0, verbose_name="váha sociálně slabí"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_sport",
field=models.IntegerField(default=0, verbose_name="váha sport"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_students",
field=models.IntegerField(default=0, verbose_name="váha studenti"),
),
migrations.AddField(
model_name="elections2021programpointpage",
name="weight_working_seniors",
field=models.IntegerField(default=0, verbose_name="váha pracující senioři"),
),
migrations.AlterField(
model_name="elections2021programpointpage",
name="faq",
field=wagtail.core.fields.StreamField(
[
(
"question",
wagtail.core.blocks.StructBlock(
[
(
"question",
wagtail.core.blocks.CharBlock(label="otázka"),
),
(
"answer",
wagtail.core.blocks.RichTextBlock(
features=[
"h4",
"ul-elections2021",
"superscript",
"link",
"italic",
],
label="odpověď",
),
),
]
),
)
],
blank=True,
verbose_name="FAQ",
),
),
migrations.AlterField(
model_name="elections2021programpointpage",
name="related_points",
field=wagtail.core.fields.StreamField(
[
(
"point",
wagtail.core.blocks.PageChooserBlock(
label="programový bod",
page_type=["elections2021.Elections2021ProgramPointPage"],
),
)
],
blank=True,
verbose_name="související body",
),
),
migrations.AlterField(
model_name="elections2021programpointpage",
name="time_horizon_number",
field=models.IntegerField(
blank=True, null=True, verbose_name="časový horizont číslo"
),
),
migrations.AlterField(
model_name="elections2021programpointpage",
name="time_horizon_text",
field=wagtail.core.fields.RichTextField(
blank=True, null=True, verbose_name="časový horizont textově"
),
),
migrations.AlterField(
model_name="elections2021programpointpage",
name="time_horizon_unit",
field=models.CharField(
choices=[("years", "roky"), ("months", "měsíce")],
default="years",
max_length=6,
verbose_name="časový horizont jednotka",
),
),
]
...@@ -12,7 +12,9 @@ from wagtail.admin.edit_handlers import ( ...@@ -12,7 +12,9 @@ from wagtail.admin.edit_handlers import (
FieldPanel, FieldPanel,
HelpPanel, HelpPanel,
MultiFieldPanel, MultiFieldPanel,
ObjectList,
StreamFieldPanel, StreamFieldPanel,
TabbedInterface,
) )
from wagtail.core import blocks from wagtail.core import blocks
from wagtail.core.fields import RichTextField, StreamField from wagtail.core.fields import RichTextField, StreamField
...@@ -28,16 +30,21 @@ from .constants import ( ...@@ -28,16 +30,21 @@ from .constants import (
ARTICLE_RICH_TEXT_FEATURES, ARTICLE_RICH_TEXT_FEATURES,
ARTICLES_PER_PAGE, ARTICLES_PER_PAGE,
CANDIDATE_RICH_TEXT_FEATURES, CANDIDATE_RICH_TEXT_FEATURES,
EXTRA_FEATURES,
PARTY_CHOICES, PARTY_CHOICES,
PARTY_NAME, PARTY_NAME,
PIRATES, PIRATES,
REGION_CHOICES, REGION_CHOICES,
REGION_NAME_VARIANT, REGION_NAME_VARIANT,
REGION_PHA, REGION_PHA,
RESTRICTED_FEATURES,
STANDARD_FEATURES,
STYLE_CHOICES, STYLE_CHOICES,
STYLE_CSS, STYLE_CSS,
TIME_HORIZON_CHOICES,
TOP_CANDIDATES_NUM, TOP_CANDIDATES_NUM,
WHITE, WHITE,
YEARS,
) )
NO_SEARCH_IMAGE_USE_PHOTO = ( NO_SEARCH_IMAGE_USE_PHOTO = (
...@@ -95,6 +102,7 @@ class Elections2021HomePage(Page, MetadataPageMixin): ...@@ -95,6 +102,7 @@ class Elections2021HomePage(Page, MetadataPageMixin):
"elections2021.Elections2021ArticlesPage", "elections2021.Elections2021ArticlesPage",
"elections2021.Elections2021CandidatesListPage", "elections2021.Elections2021CandidatesListPage",
"elections2021.Elections2021CandidatesMapPage", "elections2021.Elections2021CandidatesMapPage",
"elections2021.Elections2021ProgramPage",
] ]
### OTHERS ### OTHERS
...@@ -454,3 +462,283 @@ class Elections2021CandidatePage(SubpageMixin, MetadataPageMixin, Page): ...@@ -454,3 +462,283 @@ class Elections2021CandidatePage(SubpageMixin, MetadataPageMixin, Page):
@property @property
def is_pirate(self): def is_pirate(self):
return self.party == PIRATES return self.party == PIRATES
class Elections2021ProgramPage(SubpageMixin, MetadataPageMixin, Page):
### FIELDS
photo = models.ForeignKey(
"wagtailimages.Image",
on_delete=models.PROTECT,
blank=True,
null=True,
verbose_name="hlavní fotka",
)
### PANELS
content_panels = Page.content_panels + [ImageChooserPanel("photo")]
promote_panels = [
MultiFieldPanel(
[
FieldPanel("slug"),
FieldPanel("seo_title"),
FieldPanel("search_description"),
ImageChooserPanel("search_image"),
HelpPanel(help.build(help.NO_SEO_TITLE, NO_SEARCH_IMAGE_USE_PHOTO)),
],
gettext_lazy("Common page configuration"),
),
]
settings_panels = []
### RELATIONS
parent_page_types = ["elections2021.Elections2021HomePage"]
subpage_types = ["elections2021.Elections2021ProgramPointPage"]
### OTHERS
class Meta:
verbose_name = "Program"
def get_meta_image(self):
return self.search_image or self.photo
class QuestionBlock(blocks.StructBlock):
question = blocks.CharBlock(label="otázka")
answer = blocks.RichTextBlock(label="odpověď", features=STANDARD_FEATURES)
class Meta:
label = "otázka a odpověď"
icon = "doc-full"
template = "elections2021/_question_block.html"
class Elections2021ProgramPointPage(SubpageMixin, MetadataPageMixin, Page):
### FIELDS
annotation = RichTextField("anotace", features=RESTRICTED_FEATURES)
problem = RichTextField("problém", features=RESTRICTED_FEATURES)
context = RichTextField("kontext problému", features=RESTRICTED_FEATURES)
ideal = RichTextField("ideál", features=RESTRICTED_FEATURES)
proposal = RichTextField("navrhovaná opatření", features=EXTRA_FEATURES)
time_horizon_text = RichTextField(
"časový horizont textově", blank=True, null=True, features=STANDARD_FEATURES
)
time_horizon_number = models.IntegerField(
"časový horizont číslo", blank=True, null=True
)
time_horizon_unit = models.CharField(
"časový horizont jednotka",
choices=TIME_HORIZON_CHOICES,
default=YEARS,
max_length=6,
)
already_done = RichTextField("co jsme už udělali", features=EXTRA_FEATURES)
sources = RichTextField("zdroje", features=STANDARD_FEATURES)
faq = StreamField(
[("question", QuestionBlock())],
verbose_name="FAQ",
blank=True,
)
related_points = StreamField(
[
(
"point",
blocks.PageChooserBlock(
label="programový bod",
page_type=["elections2021.Elections2021ProgramPointPage"],
),
)
],
verbose_name="související body",
blank=True,
)
# target weights
weight_childless = models.IntegerField("váha bezdětní", default=0)
weight_parents = models.IntegerField("váha rodiče", default=0)
weight_mature = models.IntegerField("váha zralí", default=0)
weight_seniors = models.IntegerField("váha senioři", default=0)
weight_working_seniors = models.IntegerField("váha pracující senioři", default=0)
weight_students = models.IntegerField("váha studenti", default=0)
weight_self_employed = models.IntegerField("váha OSVČ", default=0)
weight_socially_weak = models.IntegerField("váha sociálně slabí", default=0)
weight_nature = models.IntegerField("váha příroda", default=0)
weight_sport = models.IntegerField("váha sport", default=0)
weight_health = models.IntegerField("váha zdraví", default=0)
weight_culture = models.IntegerField("váha kultura", default=0)
weight_countryside = models.IntegerField("váha regiony", default=0)
weight_housing = models.IntegerField("váha bydlení", default=0)
weight_education = models.IntegerField("váha vzdělávání", default=0)
weight_plan_economics = models.IntegerField("váha moderní ekonomika", default=0)
weight_plan_digital = models.IntegerField("váha digitalizace státu", default=0)
weight_plan_corruption = models.IntegerField(
"váha protikorupční strategie", default=0
)
weight_plan_climate = models.IntegerField("váha plán klima", default=0)
weight_plan_countryside = models.IntegerField("váha plán rozvoj regionů", default=0)
weight_plan_management = models.IntegerField("váha plán řízení státu", default=0)
weight_ministry_transport = models.IntegerField(
"váha ministerstvo dopravy", default=0
)
weight_ministry_finances = models.IntegerField(
"váha ministerstvo financí", default=0
)
weight_ministry_culture = models.IntegerField(
"váha ministerstvo kultury", default=0
)
weight_ministry_defense = models.IntegerField("váha ministerstvo obrany", default=0)
weight_ministry_social = models.IntegerField(
"váha ministerstvo práce a sociálních věcí", default=0
)
weight_ministry_countryside = models.IntegerField(
"váha ministerstvo pro místní rozvoj", default=0
)
weight_ministry_business = models.IntegerField(
"váha ministerstvo průmyslu a obchodu", default=0
)
weight_ministry_justice = models.IntegerField(
"váha ministerstvo spravedlnosti", default=0
)
weight_ministry_schools = models.IntegerField(
"váha ministerstvo školství, mládeže a tělovýchovy", default=0
)
weight_ministry_interior = models.IntegerField(
"váha ministerstvo vnitra", default=0
)
weight_ministry_foreign = models.IntegerField(
"váha ministerstvo zahraničních věcí", default=0
)
weight_ministry_health = models.IntegerField(
"váha ministerstvo zdravotnictví", default=0
)
weight_ministry_agriculture = models.IntegerField(
"váha ministerstvo zemědělství", default=0
)
weight_ministry_environment = models.IntegerField(
"váha ministerstvo životního prostředí", default=0
)
### PANELS
content_panels = Page.content_panels + [
FieldPanel("annotation"),
FieldPanel("problem"),
FieldPanel("context"),
FieldPanel("ideal"),
FieldPanel("proposal"),
MultiFieldPanel(
[
FieldPanel("time_horizon_number"),
FieldPanel("time_horizon_unit", widget=forms.RadioSelect),
FieldPanel("time_horizon_text"),
],
"časový horizont",
),
FieldPanel("already_done"),
FieldPanel("sources"),
]
promote_panels = [
MultiFieldPanel(
[
FieldPanel("slug"),
FieldPanel("seo_title"),
FieldPanel("search_description"),
ImageChooserPanel("search_image"),
HelpPanel(help.build(help.NO_SEO_TITLE)),
],
gettext_lazy("Common page configuration"),
),
]
faq_panels = [StreamFieldPanel("faq")]
related_panels = [StreamFieldPanel("related_points")]
weights_panels = [
MultiFieldPanel(
[
FieldPanel("weight_childless"),
FieldPanel("weight_parents"),
FieldPanel("weight_mature"),
FieldPanel("weight_seniors"),
FieldPanel("weight_working_seniors"),
FieldPanel("weight_students"),
],
"archetypy",
),
MultiFieldPanel(
[
FieldPanel("weight_self_employed"),
FieldPanel("weight_socially_weak"),
],
"doplňující",
),
MultiFieldPanel(
[
FieldPanel("weight_nature"),
FieldPanel("weight_sport"),
FieldPanel("weight_health"),
FieldPanel("weight_culture"),
FieldPanel("weight_countryside"),
FieldPanel("weight_housing"),
FieldPanel("weight_education"),
],
"zájmy",
),
MultiFieldPanel(
[
FieldPanel("weight_plan_economics"),
FieldPanel("weight_plan_digital"),
FieldPanel("weight_plan_corruption"),
FieldPanel("weight_plan_climate"),
FieldPanel("weight_plan_countryside"),
FieldPanel("weight_plan_management"),
],
"plány",
),
MultiFieldPanel(
[
FieldPanel("weight_ministry_transport"),
FieldPanel("weight_ministry_finances"),
FieldPanel("weight_ministry_culture"),
FieldPanel("weight_ministry_defense"),
FieldPanel("weight_ministry_social"),
FieldPanel("weight_ministry_countryside"),
FieldPanel("weight_ministry_business"),
FieldPanel("weight_ministry_justice"),
FieldPanel("weight_ministry_schools"),
FieldPanel("weight_ministry_interior"),
FieldPanel("weight_ministry_foreign"),
FieldPanel("weight_ministry_health"),
FieldPanel("weight_ministry_agriculture"),
FieldPanel("weight_ministry_environment"),
],
"ministerstva",
),
]
edit_handler = TabbedInterface(
[
ObjectList(content_panels, heading=gettext_lazy("Content")),
ObjectList(promote_panels, heading=gettext_lazy("Promote")),
ObjectList(faq_panels, heading="FAQ"),
ObjectList(related_panels, heading="související"),
ObjectList(weights_panels, heading="váhy"),
]
)
### RELATIONS
parent_page_types = ["elections2021.Elections2021ProgramPage"]
subpage_types = []
### OTHERS
class Meta:
verbose_name = "Programový bod"
This diff is collapsed.
{% load wagtailcore_tags %}
<div class="accordeon-row">
<div class="accordeon-row-head" onclick="if(this.parentElement.classList.contains('accordeon-row--open')) this.parentElement.classList.remove('accordeon-row--open'); else this.parentElement.classList.add('accordeon-row--open');">
<h3 class="accordeon-row-heading head-alt-xs">{{ block.value.question }}</h3>
<i class="ico--chevron-down"></i>
</div>
<div class="accordeon-row-body" style="max-height: 216px;">
<div>
<p>{{ block.value.answer|richtext }}</p>
</div>
</div>
</div>
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
{% endif %} {% endif %}
</head> </head>
<body class=""> <body>
<nav class="navbar navbar-pirati-stan __js-root lg:py-6"> <nav class="navbar navbar-pirati-stan __js-root lg:py-6">
<ui-app inline-template> <ui-app inline-template>
......
{% extends "elections2021/base.html" %}
{% load wagtailcore_tags wagtailimages_tags %}
{% block content %}
<div class="py-16">
</div>
{% endblock %}
This diff is collapsed.
...@@ -130,3 +130,47 @@ def register_ol_elections2021_feature(features): ...@@ -130,3 +130,47 @@ def register_ol_elections2021_feature(features):
}, },
}, },
) )
@hooks.register("register_rich_text_features")
def register_ul_program_elections2021_feature(features):
feature_name = "ul-program-elections2021"
type_ = "unordered-list-item"
wrapper_tag = "ul"
item_tag = "li"
features.register_editor_plugin(
"draftail",
feature_name,
draftail_features.BlockFeature(
{
"type": type_,
"icon": "list-ul",
"description": gettext("Bulleted list"),
}
),
)
features.register_converter_rule(
"contentstate",
feature_name,
{
"from_database_format": {
wrapper_tag: ListElementHandler(type_),
item_tag: ListItemElementHandler(),
},
"to_database_format": {
"block_map": {
type_: {
"element": item_tag,
"props": {"class": "mb-4"},
"wrapper": wrapper_tag,
"wrapper_props": {
"class": "unordered-list unordered-list-checks"
},
}
}
},
},
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment