Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • pi/pi-cms
  • mail1/pi-cms
2 results
Select Git revision
  • jw
  • master
2 results
Show changes
Commits on Source (62)
Showing
with 1035 additions and 68 deletions
__pycache__/
.env
institut/static/css/style.css
static/*
media/*
node_modules/
......@@ -20,6 +20,7 @@ help:
@echo "Application:"
@echo " run Run the application on port ${PORT}"
@echo " shell Access the Django shell"
@echo " superuser Create superuser
@echo ""
@echo "Database:"
@echo " migrations Generate migrations"
......@@ -57,6 +58,9 @@ run: venv
shell: venv
${VENV}/bin/python manage.py shell --settings=${SETTINGS}
superuser: venv
${VENV}/bin/python manage.py createsuperuser --settings=${SETTINGS}
migrations: venv
${VENV}/bin/python manage.py makemigrations --settings=${SETTINGS}
......
DATABASE_URL="postgresql://nastenka:nastenka@localhost:5432/postgres"
DATABASE_URL="postgresql://institut:institut@localhost:5432/postgres"
# ALLOWED_HOSTS=dev.imaniti.org
# SECRET_KEY=asdf
# CSRF_TRUSTED_ORIGINS=https://dev.imaniti.org
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
from .models import Tag
class TagAdmin(ModelAdmin):
model = Tag
menu_label = "Štítky"
menu_icon = "tag"
menu_order = 290
add_to_settings_menu = False
exclude_from_explorer = False
modeladmin_register(TagAdmin)
from wagtail.blocks import CharBlock, EmailBlock, StructBlock, TextBlock
class PersonBlock(StructBlock):
name = CharBlock(label="Jméno")
position = TextBlock(label="Pracovní pozice", required=False)
email = EmailBlock(label="E-mailová adresa", required=False)
class Meta:
label = "Osoba"
template = "home/blocks/person_block.html"
icon = "user"
import typing
from datetime import datetime
from django.contrib.syndication.views import Feed
from django.template.loader import render_to_string
from django.urls import reverse
from .models import HomeArticlePage, HomeArticlesPage
class LatestArticlesFeed(Feed):
def get_object(self, request, id: int) -> HomeArticlesPage:
return HomeArticlesPage.objects.get(id=id)
def title(self, obj: HomeArticlesPage) -> str:
return obj.title
def link(self, obj: HomeArticlesPage) -> str:
return obj.get_full_url()
def items(self, obj: HomeArticlesPage) -> list:
return HomeArticlePage.objects.live().child_of(obj).order_by("-date")[:32]
def item_title(self, item: HomeArticlePage) -> str:
return item.title
def item_description(self, item: HomeArticlePage) -> str:
return render_to_string(
"home/feed_item_description.html",
{"item": item},
)
def item_pubdate(self, item: HomeArticlePage) -> datetime:
return datetime(
item.date.year,
item.date.month,
item.date.day,
12,
0,
)
def item_author_name(self, item: HomeArticlePage) -> str:
if item.author:
return item.author
return ""
def item_categories(self, item: HomeArticlePage) -> list:
return item.tags.all()
def item_link(self, item: HomeArticlePage) -> str:
return item.get_full_url()
# -*- coding: utf-8 -*-
# Generated by Django 4.2.2 on 2023-07-23 12:14
import django.db.models.deletion
import wagtail.blocks
import wagtail.documents.blocks
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
("wagtailcore", "0040_page_draft_title"),
("wagtailcore", "0083_workflowcontenttype"),
]
operations = [
migrations.CreateModel(
name="HomePage",
name="HomeArticlesPage",
fields=[
(
"page_ptr",
models.OneToOneField(
on_delete=models.CASCADE,
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("author", models.CharField(verbose_name="Autor")),
("perex", wagtail.fields.RichTextField(verbose_name="Perex")),
("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="HomePage",
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",
to="wagtailcore.page",
),
),
(
"heading_text",
wagtail.fields.RichTextField(verbose_name="Hlavní text stránky"),
),
(
"events",
wagtail.fields.StreamField(
[
(
"event",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(label="Jméno"),
),
("url", wagtail.blocks.URLBlock(label="URL")),
(
"date",
wagtail.blocks.DateBlock(
label="Datum konání", required=False
),
),
(
"location",
wagtail.blocks.CharBlock(
label="Lokace", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Události",
),
),
(
"documents",
wagtail.fields.StreamField(
[
(
"document",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(label="Jméno"),
),
(
"date_added",
wagtail.blocks.DateBlock(
label="Datum přidání", required=False
),
),
(
"url",
wagtail.blocks.URLBlock(
label="URL (místo dokumentu)",
required=False,
),
),
(
"file",
wagtail.documents.blocks.DocumentChooserBlock(
label="Dokument", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Dokumenty",
),
),
(
"donation_text",
wagtail.fields.RichTextField(verbose_name="Text pro dary"),
),
("address", models.CharField(verbose_name="Sídlo")),
("branch", models.CharField(verbose_name="Pobočka")),
("email", models.EmailField(max_length=254, verbose_name="Email")),
("ds_id", models.CharField(verbose_name="Datová schránka")),
(
"director",
wagtail.fields.StreamField(
[
(
"person",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(label="Jméno"),
),
(
"position",
wagtail.blocks.TextBlock(
label="Pracovní pozice", required=False
),
),
(
"email",
wagtail.blocks.EmailBlock(
label="E-mailová adresa", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Ředitel",
),
),
(
"controller",
wagtail.fields.StreamField(
[
(
"person",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(label="Jméno"),
),
(
"position",
wagtail.blocks.TextBlock(
label="Pracovní pozice", required=False
),
),
(
"email",
wagtail.blocks.EmailBlock(
label="E-mailová adresa", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Kontrolor",
),
),
(
"council_members",
wagtail.fields.StreamField(
[
(
"person",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(label="Jméno"),
),
(
"position",
wagtail.blocks.TextBlock(
label="Pracovní pozice", required=False
),
),
(
"email",
wagtail.blocks.EmailBlock(
label="E-mailová adresa", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Správní rada",
),
),
(
"volunteers",
wagtail.fields.StreamField(
[
(
"person",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(label="Jméno"),
),
(
"position",
wagtail.blocks.TextBlock(
label="Pracovní pozice", required=False
),
),
(
"email",
wagtail.blocks.EmailBlock(
label="E-mailová adresa", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Dobrovolníci",
),
),
(
"employees",
wagtail.fields.StreamField(
[
(
"person",
wagtail.blocks.StructBlock(
[
(
"name",
wagtail.blocks.CharBlock(label="Jméno"),
),
(
"position",
wagtail.blocks.TextBlock(
label="Pracovní pozice", required=False
),
),
(
"email",
wagtail.blocks.EmailBlock(
label="E-mailová adresa", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Zaměstnanci",
),
),
],
......
# -*- coding: utf-8 -*-
from django.db import migrations
def create_homepage(apps, schema_editor):
# Get models
ContentType = apps.get_model("contenttypes.ContentType")
Page = apps.get_model("wagtailcore.Page")
Site = apps.get_model("wagtailcore.Site")
HomePage = apps.get_model("home.HomePage")
# Delete the default homepage
# If migration is run multiple times, it may have already been deleted
Page.objects.filter(id=2).delete()
# Create content type for homepage model
homepage_content_type, __ = ContentType.objects.get_or_create(
model="homepage", app_label="home"
)
# Create a new homepage
homepage = HomePage.objects.create(
title="Home",
draft_title="Home",
slug="home",
content_type=homepage_content_type,
path="00010001",
depth=2,
numchild=0,
url_path="/home/",
)
# Create a site with the new homepage set as the root
Site.objects.create(hostname="localhost", root_page=homepage, is_default_site=True)
def remove_homepage(apps, schema_editor):
# Get models
ContentType = apps.get_model("contenttypes.ContentType")
HomePage = apps.get_model("home.HomePage")
# Delete the default homepage
# Page and Site objects CASCADE
HomePage.objects.filter(slug="home", depth=2).delete()
# Delete content type for homepage model
ContentType.objects.filter(model="homepage", app_label="home").delete()
class Migration(migrations.Migration):
run_before = [
("wagtailcore", "0053_locale_model"),
]
dependencies = [
("home", "0001_initial"),
]
operations = [
migrations.RunPython(create_homepage, remove_homepage),
]
# Generated by Django 4.2.2 on 2023-07-23 12:29
import django.db.models.deletion
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("wagtailcore", "0083_workflowcontenttype"),
("home", "0001_initial"),
]
operations = [
migrations.CreateModel(
name="HomeArticlePage",
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",
),
),
("author", models.CharField(verbose_name="Autor")),
("perex", wagtail.fields.RichTextField(verbose_name="Perex")),
("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
],
options={
"abstract": False,
},
bases=("wagtailcore.page",),
),
migrations.RemoveField(
model_name="homearticlespage",
name="author",
),
migrations.RemoveField(
model_name="homearticlespage",
name="perex",
),
]
# Generated by Django 4.2.2 on 2023-07-23 12:31
import wagtail.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("home", "0002_homearticlepage_remove_homearticlespage_author_and_more"),
]
operations = [
migrations.AlterField(
model_name="homearticlespage",
name="content",
field=wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
]
# Generated by Django 4.2.2 on 2023-07-23 12:37
import django.utils.timezone
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("home", "0003_alter_homearticlespage_content"),
]
operations = [
migrations.AddField(
model_name="homearticlepage",
name="date",
field=models.DateField(
default=django.utils.timezone.now, verbose_name="Datum vytvoření"
),
),
]
# Generated by Django 4.2.2 on 2023-07-23 13:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("home", "0004_homearticlepage_date"),
]
operations = [
migrations.CreateModel(
name="Tag",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.CharField(verbose_name="Jméno")),
],
options={
"verbose_name": "Štítek",
"verbose_name_plural": "Štítky",
},
),
migrations.AlterModelOptions(
name="homearticlepage",
options={"ordering": ["-date"]},
),
migrations.AlterField(
model_name="homearticlepage",
name="perex",
field=models.TextField(verbose_name="Perex"),
),
migrations.AddField(
model_name="homearticlepage",
name="tags",
field=models.ManyToManyField(to="home.tag", verbose_name="Štítky"),
),
]
# Generated by Django 4.2.2 on 2023-07-24 01:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("home", "0005_tag_alter_homearticlepage_options_and_more"),
]
operations = [
migrations.AlterField(
model_name="tag",
name="id",
field=models.BigAutoField(
auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
),
),
]
# Generated by Django 4.2.2 on 2023-07-24 03:57
import django.db.models.deletion
import django.utils.timezone
import wagtail.blocks
import wagtail.documents.blocks
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("wagtailcore", "0083_workflowcontenttype"),
("home", "0006_alter_tag_id"),
]
operations = [
migrations.AlterModelOptions(
name="homearticlepage",
options={"ordering": ["-date"], "verbose_name": "Článek"},
),
migrations.AlterModelOptions(
name="homearticlespage",
options={"verbose_name": "Rozcestník článků"},
),
migrations.AlterModelOptions(
name="homepage",
options={"verbose_name": "Domovká stránka"},
),
migrations.AlterField(
model_name="homearticlepage",
name="author",
field=models.CharField(
blank=True, max_length=128, null=True, verbose_name="Autor"
),
),
migrations.AlterField(
model_name="homepage",
name="address",
field=models.CharField(max_length=128, verbose_name="Sídlo"),
),
migrations.AlterField(
model_name="homepage",
name="branch",
field=models.CharField(max_length=128, verbose_name="Pobočka"),
),
migrations.AlterField(
model_name="homepage",
name="documents",
field=wagtail.fields.StreamField(
[
(
"document",
wagtail.blocks.StructBlock(
[
("name", wagtail.blocks.CharBlock(label="Jméno")),
(
"date_added",
wagtail.blocks.DateBlock(
label="Datum přidání", required=False
),
),
(
"page",
wagtail.blocks.PageChooserBlock(
label="Stránka (místo dokumentu)",
required=False,
),
),
(
"file",
wagtail.documents.blocks.DocumentChooserBlock(
label="Dokument", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Dokumenty",
),
),
migrations.AlterField(
model_name="homepage",
name="ds_id",
field=models.CharField(max_length=128, verbose_name="Datová schránka"),
),
migrations.AlterField(
model_name="homepage",
name="email",
field=models.EmailField(max_length=128, verbose_name="Email"),
),
migrations.AlterField(
model_name="homepage",
name="events",
field=wagtail.fields.StreamField(
[
(
"event",
wagtail.blocks.StructBlock(
[
("name", wagtail.blocks.CharBlock(label="Jméno")),
(
"page",
wagtail.blocks.PageChooserBlock(label="Stránka"),
),
(
"date",
wagtail.blocks.DateBlock(
label="Datum konání", required=False
),
),
(
"location",
wagtail.blocks.CharBlock(
label="Lokace", required=False
),
),
]
),
)
],
blank=True,
null=True,
use_json_field=True,
verbose_name="Události",
),
),
migrations.AlterField(
model_name="tag",
name="name",
field=models.CharField(max_length=32, verbose_name="Jméno"),
),
migrations.CreateModel(
name="HomeUniversalPage",
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",
),
),
(
"author",
models.CharField(
blank=True, max_length=128, null=True, verbose_name="Autor"
),
),
(
"date",
models.DateField(
default=django.utils.timezone.now,
verbose_name="Datum vytvoření",
),
),
("perex", models.TextField(verbose_name="Perex")),
("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
("tags", models.ManyToManyField(to="home.tag", verbose_name="Štítky")),
],
options={
"verbose_name": "Univerzální stránka",
"ordering": ["-date"],
},
bases=("wagtailcore.page",),
),
]
# Generated by Django 4.2.2 on 2023-07-24 04:02
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("home", "0007_alter_homearticlepage_options_and_more"),
]
operations = [
migrations.RemoveField(
model_name="homeuniversalpage",
name="perex",
),
]
# Generated by Django 4.2.2 on 2023-08-06 07:51
import django.db.models.deletion
import django.utils.timezone
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("wagtaildocs", "0012_uploadeddocument"),
("wagtailcore", "0083_workflowcontenttype"),
("home", "0008_remove_homeuniversalpage_perex"),
]
operations = [
migrations.CreateModel(
name="HomeDocumentPage",
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",
),
),
(
"author",
models.CharField(
blank=True, max_length=128, null=True, verbose_name="Autor"
),
),
(
"date",
models.DateField(
default=django.utils.timezone.now,
verbose_name="Datum vytvoření",
),
),
("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
(
"document",
models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
to="wagtaildocs.document",
),
),
("tags", models.ManyToManyField(to="home.tag", verbose_name="Štítky")),
],
options={
"verbose_name": "Dokument",
"ordering": ["-date"],
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="HomeDocumentsPage",
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",
),
),
(
"content",
wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
],
options={
"verbose_name": "Rozcestník dokumentů",
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="HomeEventPage",
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",
),
),
(
"author",
models.CharField(
blank=True, max_length=128, null=True, verbose_name="Autor"
),
),
("content", wagtail.fields.RichTextField(verbose_name="Obsah")),
(
"date",
models.DateField(
blank=True, null=True, verbose_name="Datum konání"
),
),
(
"location",
models.CharField(max_length=64, verbose_name="Místo konání"),
),
("tags", models.ManyToManyField(to="home.tag", verbose_name="Štítky")),
],
options={
"verbose_name": "Akce",
"ordering": ["-date"],
},
bases=("wagtailcore.page",),
),
migrations.CreateModel(
name="HomeEventsPage",
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",
),
),
(
"content",
wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
],
options={
"verbose_name": "Rozcestník akcí",
},
bases=("wagtailcore.page",),
),
migrations.DeleteModel(
name="HomeUniversalPage",
),
]
# Generated by Django 4.2.2 on 2023-08-06 08:29
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("home", "0009_homedocumentpage_homedocumentspage_homeeventpage_and_more"),
]
operations = [
migrations.AlterField(
model_name="homeeventpage",
name="location",
field=models.CharField(
blank=True, max_length=64, null=True, verbose_name="Místo konání"
),
),
]
# Generated by Django 4.2.2 on 2023-08-06 08:38
import django.db.models.deletion
import wagtail.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("wagtaildocs", "0012_uploadeddocument"),
("home", "0010_alter_homeeventpage_location"),
]
operations = [
migrations.AlterField(
model_name="homedocumentpage",
name="content",
field=wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
migrations.AlterField(
model_name="homedocumentpage",
name="document",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
to="wagtaildocs.document",
verbose_name="Dokument",
),
),
migrations.AlterField(
model_name="homeeventpage",
name="content",
field=wagtail.fields.RichTextField(
blank=True, null=True, verbose_name="Obsah"
),
),
]
# Generated by Django 4.2.2 on 2023-08-06 09:51
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("home", "0011_alter_homedocumentpage_content_and_more"),
]
operations = [
migrations.RemoveField(
model_name="homepage",
name="documents",
),
migrations.RemoveField(
model_name="homepage",
name="events",
),
]
# Generated by Django 4.2.4 on 2023-08-12 15:11
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("home", "0012_remove_homepage_documents_remove_homepage_events"),
]
operations = [
migrations.AlterModelOptions(
name="homearticlepage",
options={"verbose_name": "Článek"},
),
migrations.AlterModelOptions(
name="homedocumentpage",
options={"verbose_name": "Dokument"},
),
migrations.AlterModelOptions(
name="homeeventpage",
options={"verbose_name": "Akce"},
),
migrations.AddField(
model_name="homepage",
name="academic_council_description",
field=models.CharField(
default="Akademická rada je poradním orgánem ústavu a v rámci své činnosti zejména poskytuje správní radě stanoviska k ideovému směřování, strategickým materiálům, rozpočtu a plánu činností ústavu. Dále vykonává akademická rada dohled nad ideovou a odbornou kvalitou výstupů ústavu.",
verbose_name="Akademická rada - popis",
),
preserve_default=False,
),
migrations.AddField(
model_name="homepage",
name="controller_description",
field=models.CharField(
default="Kontrolor je kontrolním orgánem ústavu.",
verbose_name="Kontrolor - popis",
),
preserve_default=False,
),
migrations.AddField(
model_name="homepage",
name="council_members_description",
field=models.CharField(
default="Správní rada dbá o zachování účelu, pro nějž byl ústav založen, a dohlíží na řádné hospodaření s jeho majetkem.",
verbose_name="Správní rada - popis",
),
preserve_default=False,
),
migrations.AddField(
model_name="homepage",
name="director_description",
field=models.CharField(
default="Ředitel je statutárním orgánem ústavu, řídí jeho činnost, jedná jeho jménem a rozhoduje ve všech záležitostech, které nespadají do pravomoci jiných orgánů.",
verbose_name="Ředitel - popis",
),
preserve_default=False,
),
migrations.AddField(
model_name="homepage",
name="employees_description",
field=models.CharField(
default="Zaměstnanci poskytují administrativní, organizační a expertní podporu pro vykonávání činností ústavu.",
verbose_name="Zaměstnanci - popis",
),
preserve_default=False,
),
migrations.AddField(
model_name="homepage",
name="volunteers_description",
field=models.CharField(
default="Dobrovolnický kruh je participační orgán ústavu. Účelem dobrovolnického kruhu je sdružovat osoby, které se chtějí dobrovolně podílet na činnostech ústavu, a navrhovat správní radě projekty pro realizaci ústavem v souladu s účelem ústavu.",
verbose_name="Dobrovolníci - popis",
),
preserve_default=False,
),
]