diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a4e7a7165ec95e1058c23c607eee7d9fe8288f26..04c1a791037e353ef252b9db115d16f77fb2388b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,5 +1,5 @@ default_language_version: - python: python3.7 + python: python3.8 exclude: snapshots/ repos: diff --git a/district/blocks.py b/district/blocks.py index 7be87e526faf9e92144ae9bbe7d464f66449f166..1d960c44a5c53be1ef27df54cfc2e965c8f1c78d 100644 --- a/district/blocks.py +++ b/district/blocks.py @@ -45,7 +45,9 @@ class ProgramItemBlock(StructBlock): class ProgramBlock(StructBlock): headline = CharBlock(label="Titulek bloku", required=True) perex = TextBlock(label="Krátký text pod nadpisem", required=True) - person = PersonChooserBlock(label="Osoba", required=True) # TODO Page chooser block should suffice + person = PersonChooserBlock( + label="Osoba", required=True + ) # TODO Page chooser block should suffice completion_percentage = IntegerBlock(label="Procento dokončení", required=True) program_items = ListBlock(ProgramItemBlock()) # program_items = TableBlock(label="Tabulka plnění programu", required=True) diff --git a/district/migrations/0005_auto_20211108_2126.py b/district/migrations/0005_auto_20211108_2126.py index 8fca73009d2a20ec4c4d2425896802efee946acc..1cdb8e07da43ca97f7cbef49f5e7de6cf9f550b3 100644 --- a/district/migrations/0005_auto_20211108_2126.py +++ b/district/migrations/0005_auto_20211108_2126.py @@ -1,120 +1,304 @@ # Generated by Django 3.2.8 on 2021-11-08 20:26 -import district.blocks -from django.db import migrations, models import django.db.models.deletion import modelcluster.contrib.taggit import modelcluster.fields -import shared.models import wagtail.core.blocks import wagtail.core.fields import wagtail.images.blocks import wagtailmetadata.models +from django.db import migrations, models + +import district.blocks +import shared.models class Migration(migrations.Migration): dependencies = [ - ('wagtailimages', '0023_add_choose_permissions'), - ('wagtailcore', '0062_comment_models_and_pagesubscription'), - ('shared', '0001_initial'), - ('taggit', '0003_taggeditem_add_unique_index'), - ('district', '0004_auto_20210209_1222'), + ("wagtailimages", "0023_add_choose_permissions"), + ("wagtailcore", "0062_comment_models_and_pagesubscription"), + ("shared", "0001_initial"), + ("taggit", "0003_taggeditem_add_unique_index"), + ("district", "0004_auto_20210209_1222"), ] operations = [ migrations.AlterModelOptions( - name='districthomepage', - options={'verbose_name': 'Web místního sdružení'}, + name="districthomepage", + options={"verbose_name": "Web místního sdružení"}, ), migrations.RemoveField( - model_name='districthomepage', - name='content', + model_name="districthomepage", + name="content", ), migrations.AddField( - model_name='districtcontactpage', - name='text', - field=wagtail.core.fields.RichTextField(blank=True, verbose_name='Text'), + model_name="districtcontactpage", + name="text", + field=wagtail.core.fields.RichTextField(blank=True, verbose_name="Text"), ), migrations.AddField( - model_name='districthomepage', - name='articles_title', - field=models.CharField(default='Děje se', max_length=256, verbose_name='Nadpis článků'), + model_name="districthomepage", + name="articles_title", + field=models.CharField( + default="Děje se", max_length=256, verbose_name="Nadpis článků" + ), preserve_default=False, ), migrations.AddField( - model_name='districthomepage', - name='calendar_button_text', - field=models.CharField(default='Kalendář', max_length=256, verbose_name='Text tlačítka kalendáře'), + model_name="districthomepage", + name="calendar_button_text", + field=models.CharField( + default="Kalendář", + max_length=256, + verbose_name="Text tlačítka kalendáře", + ), ), migrations.AddField( - model_name='districthomepage', - name='calendar_embed_link', - field=models.URLField(default='', help_text="Mělo by začínat 'https://calendar.google.com/calendar/embed?...'", verbose_name='Odkaz na embed kalendář'), + model_name="districthomepage", + name="calendar_embed_link", + field=models.URLField( + default="", + help_text="Mělo by začínat 'https://calendar.google.com/calendar/embed?...'", + verbose_name="Odkaz na embed kalendář", + ), preserve_default=False, ), migrations.AddField( - model_name='districthomepage', - name='region_map_button_text', - field=models.CharField(default='Piráti v krajích', max_length=256, verbose_name='Text tlačítka mapy'), + model_name="districthomepage", + name="region_map_button_text", + field=models.CharField( + default="Piráti v krajích", + max_length=256, + verbose_name="Text tlačítka mapy", + ), ), migrations.AddField( - model_name='districthomepage', - name='subheader', - field=wagtail.core.fields.StreamField([('header', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(label='Titulek', required=True)), ('subtitle', wagtail.core.blocks.CharBlock(label='Podtitulek', required=False)), ('image', wagtail.images.blocks.ImageChooserBlock())]))], blank=True, verbose_name='Blok pod headerem'), + model_name="districthomepage", + name="subheader", + field=wagtail.core.fields.StreamField( + [ + ( + "header", + wagtail.core.blocks.StructBlock( + [ + ( + "title", + wagtail.core.blocks.CharBlock( + label="Titulek", required=True + ), + ), + ( + "subtitle", + wagtail.core.blocks.CharBlock( + label="Podtitulek", required=False + ), + ), + ("image", wagtail.images.blocks.ImageChooserBlock()), + ] + ), + ) + ], + blank=True, + verbose_name="Blok pod headerem", + ), ), migrations.AddField( - model_name='districthomepage', - name='twitter', - field=models.URLField(blank=True, null=True, verbose_name='Twitter URL'), + model_name="districthomepage", + name="twitter", + field=models.URLField(blank=True, null=True, verbose_name="Twitter URL"), ), migrations.AddField( - model_name='districthomepage', - name='youtube', - field=models.URLField(blank=True, null=True, verbose_name='YouTube URL'), + model_name="districthomepage", + name="youtube", + field=models.URLField(blank=True, null=True, verbose_name="YouTube URL"), ), migrations.AlterField( - model_name='districthomepage', - name='footperson_coord', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='district_footperson_coord', to='shared.person', verbose_name='Koordinátor'), + model_name="districthomepage", + name="footperson_coord", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="district_footperson_coord", + to="shared.person", + verbose_name="Koordinátor", + ), ), migrations.AlterField( - model_name='districthomepage', - name='footperson_electman', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='district_footperson_electman', to='shared.person', verbose_name='Volební manažer'), + model_name="districthomepage", + name="footperson_electman", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="district_footperson_electman", + to="shared.person", + verbose_name="Volební manažer", + ), ), migrations.AlterField( - model_name='districthomepage', - name='footperson_media', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='district_footperson_media', to='shared.person', verbose_name='Kontakt pro média'), + model_name="districthomepage", + name="footperson_media", + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="district_footperson_media", + to="shared.person", + verbose_name="Kontakt pro média", + ), ), migrations.CreateModel( - name='DistrictProgramPage', + name="DistrictProgramPage", 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')), - ('perex', models.TextField(blank=True, verbose_name='Perex')), - ('content', wagtail.core.fields.StreamField([('program_block', wagtail.core.blocks.StructBlock([('headline', wagtail.core.blocks.CharBlock(label='Titulek bloku', required=True)), ('perex', wagtail.core.blocks.TextBlock(label='Krátký text pod nadpisem', required=True)), ('person', district.blocks.PersonChooserBlock(label='Osoba', required=True)), ('completion_percentage', wagtail.core.blocks.IntegerBlock(label='Procento dokončení', required=True)), ('program_items', wagtail.core.blocks.ListBlock(wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(label='Název', required=True)), ('issue_link', wagtail.core.blocks.URLBlock(label='Odkaz na redmine', required=True)), ('completion_percentage', wagtail.core.blocks.IntegerBlock(label='Procento dokončení', required=True))])))]))], blank=True, verbose_name='obsah stránky')), - ('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')), + ( + "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", + ), + ), + ("perex", models.TextField(blank=True, verbose_name="Perex")), + ( + "content", + wagtail.core.fields.StreamField( + [ + ( + "program_block", + wagtail.core.blocks.StructBlock( + [ + ( + "headline", + wagtail.core.blocks.CharBlock( + label="Titulek bloku", required=True + ), + ), + ( + "perex", + wagtail.core.blocks.TextBlock( + label="Krátký text pod nadpisem", + required=True, + ), + ), + ( + "person", + district.blocks.PersonChooserBlock( + label="Osoba", required=True + ), + ), + ( + "completion_percentage", + wagtail.core.blocks.IntegerBlock( + label="Procento dokončení", + required=True, + ), + ), + ( + "program_items", + wagtail.core.blocks.ListBlock( + wagtail.core.blocks.StructBlock( + [ + ( + "title", + wagtail.core.blocks.CharBlock( + label="Název", + required=True, + ), + ), + ( + "issue_link", + wagtail.core.blocks.URLBlock( + label="Odkaz na redmine", + required=True, + ), + ), + ( + "completion_percentage", + wagtail.core.blocks.IntegerBlock( + label="Procento dokončení", + required=True, + ), + ), + ] + ) + ), + ), + ] + ), + ) + ], + blank=True, + verbose_name="obsah stránky", + ), + ), + ( + "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', + "verbose_name": "Program", }, - bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.CreateModel( - name='DistrictPersonTag', + name="DistrictPersonTag", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('content_object', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, to='district.districtpersonpage')), - ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='district_districtpersontag_items', to='taggit.tag')), + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "content_object", + modelcluster.fields.ParentalKey( + on_delete=django.db.models.deletion.CASCADE, + to="district.districtpersonpage", + ), + ), + ( + "tag", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="district_districtpersontag_items", + to="taggit.tag", + ), + ), ], options={ - 'abstract': False, + "abstract": False, }, ), migrations.AddField( - model_name='districtpersonpage', - name='groups', - field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='Skupina pro zařazení na stránce Lidé', through='district.DistrictPersonTag', to='taggit.Tag', verbose_name='Tags'), + model_name="districtpersonpage", + name="groups", + field=modelcluster.contrib.taggit.ClusterTaggableManager( + blank=True, + help_text="Skupina pro zařazení na stránce Lidé", + through="district.DistrictPersonTag", + to="taggit.Tag", + verbose_name="Tags", + ), ), ] diff --git a/district/models.py b/district/models.py index 0d1b76fc2cbd6bb83eebb5a3432d52cea7770bf5..e5d49e4bcb60020905c058a34d0dda54d6815cbc 100644 --- a/district/models.py +++ b/district/models.py @@ -6,7 +6,6 @@ from django.utils.translation import gettext_lazy from modelcluster.contrib.taggit import ClusterTaggableManager from modelcluster.fields import ParentalKey from taggit.models import Tag, TaggedItemBase -from uniweb.constants import RICH_TEXT_FEATURES from wagtail.admin.edit_handlers import ( CommentPanel, FieldPanel, @@ -19,6 +18,7 @@ from wagtail.core.models import Page from wagtailmetadata.models import MetadataPageMixin from shared.models import ArticleMixin, Person, SubpageMixin +from uniweb.constants import RICH_TEXT_FEATURES from .blocks import HomepageHeaderBlock, ProgramBlock diff --git a/region/blocks.py b/region/blocks.py index 117fe9171ba5674babb82a731fad6babdc4ca44e..ec1d2dfa54324a4296107e9e6e9de505dc5a6515 100644 --- a/region/blocks.py +++ b/region/blocks.py @@ -1,8 +1,4 @@ -from wagtail.core.blocks import ( - CharBlock, - StructBlock, - URLBlock, -) +from wagtail.core.blocks import CharBlock, StructBlock, URLBlock from wagtail.images.blocks import ImageChooserBlock diff --git a/region/migrations/0001_initial.py b/region/migrations/0001_initial.py index 5e59b9d1413fbc61fe8e8dc2f77c08653326063e..48c4c34c4435ee270a121c72802e060b78518b61 100644 --- a/region/migrations/0001_initial.py +++ b/region/migrations/0001_initial.py @@ -1,14 +1,15 @@ # Generated by Django 3.2.8 on 2021-11-08 20:43 -from django.db import migrations, models import django.db.models.deletion import django.utils.timezone import modelcluster.contrib.taggit import modelcluster.fields -import shared.models import wagtail.core.blocks import wagtail.core.fields import wagtailmetadata.models +from django.db import migrations, models + +import shared.models class Migration(migrations.Migration): @@ -16,125 +17,468 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('wagtailcore', '0062_comment_models_and_pagesubscription'), - ('wagtailimages', '0023_add_choose_permissions'), - ('shared', '0001_initial'), - ('taggit', '0003_taggeditem_add_unique_index'), + ("wagtailcore", "0062_comment_models_and_pagesubscription"), + ("wagtailimages", "0023_add_choose_permissions"), + ("shared", "0001_initial"), + ("taggit", "0003_taggeditem_add_unique_index"), ] operations = [ migrations.CreateModel( - name='RegionArticlePage', + name="RegionArticlePage", 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')), - ('date', models.DateField(default=django.utils.timezone.now, verbose_name='datum')), - ('perex', models.TextField(verbose_name='perex')), - ('text', wagtail.core.fields.RichTextField(blank=True, verbose_name='článek')), - ('author', models.CharField(blank=True, max_length=250, null=True, verbose_name='autor')), - ('image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='wagtailimages.image', verbose_name='obrázek')), - ('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')), + ( + "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", + ), + ), + ( + "date", + models.DateField( + default=django.utils.timezone.now, verbose_name="datum" + ), + ), + ("perex", models.TextField(verbose_name="perex")), + ( + "text", + wagtail.core.fields.RichTextField( + blank=True, verbose_name="článek" + ), + ), + ( + "author", + models.CharField( + blank=True, max_length=250, null=True, verbose_name="autor" + ), + ), + ( + "image", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="wagtailimages.image", + verbose_name="obrázek", + ), + ), + ( + "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': 'Aktualita', + "verbose_name": "Aktualita", }, - bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.CreateModel( - name='RegionTagsPage', + name="RegionTagsPage", 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')), - ('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')), + ( + "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", + ), + ), + ( + "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': 'Stránka s tagy', + "verbose_name": "Stránka s tagy", }, - bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.CreateModel( - name='RegionPersonPage', + name="RegionPersonPage", 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')), - ('perex', models.TextField(blank=True, verbose_name='Perex osoby')), - ('person', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='shared.person')), - ('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')), + ( + "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", + ), + ), + ("perex", models.TextField(blank=True, verbose_name="Perex osoby")), + ( + "person", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="shared.person", + ), + ), + ( + "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': 'Detail osoby', + "verbose_name": "Detail osoby", }, - bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.CreateModel( - name='RegionPeoplePage', + name="RegionPeoplePage", 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')), - ('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')), + ( + "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", + ), + ), + ( + "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': 'Lidé', + "verbose_name": "Lidé", }, - bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.CreateModel( - name='RegionHomePage', + name="RegionHomePage", 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.core.fields.StreamField([('title', wagtail.core.blocks.CharBlock(icon='title', label='nadpis'))], blank=True, verbose_name='obsah stránky')), - ('facebook', models.URLField(blank=True, null=True, verbose_name='Facebook URL')), - ('forum', models.URLField(blank=True, null=True, verbose_name='Fórum URL')), - ('contact_email', models.EmailField(blank=True, max_length=250, verbose_name='kontaktni email')), - ('contact_phone', models.TextField(blank=True, max_length=250, verbose_name='kontaktni telefon')), - ('contact_newcomers', models.URLField(blank=True, null=True, verbose_name='URL pro zájemce o členství')), - ('donation_page', models.URLField(blank=True, null=True, verbose_name='URL pro příjem darů')), - ('matomo_id', models.IntegerField(blank=True, null=True, verbose_name='Matomo ID pro sledování návštěvnosti')), - ('footperson_coord', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='region_footperson_coord', to='shared.person', verbose_name='Koordinátor')), - ('footperson_electman', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='region_footperson_electman', to='shared.person', verbose_name='Volební manažer')), - ('footperson_media', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='region_footperson_media', to='shared.person', verbose_name='Kontakt pro média')), - ('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')), + ( + "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.core.fields.StreamField( + [ + ( + "title", + wagtail.core.blocks.CharBlock( + icon="title", label="nadpis" + ), + ) + ], + blank=True, + verbose_name="obsah stránky", + ), + ), + ( + "facebook", + models.URLField(blank=True, null=True, verbose_name="Facebook URL"), + ), + ( + "forum", + models.URLField(blank=True, null=True, verbose_name="Fórum URL"), + ), + ( + "contact_email", + models.EmailField( + blank=True, max_length=250, verbose_name="kontaktni email" + ), + ), + ( + "contact_phone", + models.TextField( + blank=True, max_length=250, verbose_name="kontaktni telefon" + ), + ), + ( + "contact_newcomers", + models.URLField( + blank=True, null=True, verbose_name="URL pro zájemce o členství" + ), + ), + ( + "donation_page", + models.URLField( + blank=True, null=True, verbose_name="URL pro příjem darů" + ), + ), + ( + "matomo_id", + models.IntegerField( + blank=True, + null=True, + verbose_name="Matomo ID pro sledování návštěvnosti", + ), + ), + ( + "footperson_coord", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="region_footperson_coord", + to="shared.person", + verbose_name="Koordinátor", + ), + ), + ( + "footperson_electman", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="region_footperson_electman", + to="shared.person", + verbose_name="Volební manažer", + ), + ), + ( + "footperson_media", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name="region_footperson_media", + to="shared.person", + verbose_name="Kontakt pro média", + ), + ), + ( + "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': 'Web regionálního sdružení', + "verbose_name": "Web regionálního sdružení", }, - bases=(wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.CreateModel( - name='RegionContactPage', + name="RegionContactPage", 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')), - ('contact_people', wagtail.core.fields.StreamField([('item', wagtail.core.blocks.StructBlock([('name', wagtail.core.blocks.CharBlock(label='Role')), ('person', wagtail.core.blocks.PageChooserBlock(label='Osoba', page_type=['region.RegionPersonPage']))]))], blank=True, verbose_name='Kontakty')), - ('text', wagtail.core.fields.RichTextField(blank=True, verbose_name='Text')), - ('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')), + ( + "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", + ), + ), + ( + "contact_people", + wagtail.core.fields.StreamField( + [ + ( + "item", + wagtail.core.blocks.StructBlock( + [ + ( + "name", + wagtail.core.blocks.CharBlock(label="Role"), + ), + ( + "person", + wagtail.core.blocks.PageChooserBlock( + label="Osoba", + page_type=["region.RegionPersonPage"], + ), + ), + ] + ), + ) + ], + blank=True, + verbose_name="Kontakty", + ), + ), + ( + "text", + wagtail.core.fields.RichTextField(blank=True, verbose_name="Text"), + ), + ( + "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': 'Kontakty', + "verbose_name": "Kontakty", }, - bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.CreateModel( - name='RegionArticleTag', + name="RegionArticleTag", fields=[ - ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('content_object', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, to='region.regionarticlepage')), - ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='region_regionarticletag_items', to='taggit.tag')), + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "content_object", + modelcluster.fields.ParentalKey( + on_delete=django.db.models.deletion.CASCADE, + to="region.regionarticlepage", + ), + ), + ( + "tag", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="region_regionarticletag_items", + to="taggit.tag", + ), + ), ], options={ - 'abstract': False, + "abstract": False, }, ), migrations.CreateModel( - name='RegionArticlesPage', + name="RegionArticlesPage", 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')), - ('max_items', models.IntegerField(default=12, verbose_name='Počet článků na stránce')), - ('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')), + ( + "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", + ), + ), + ( + "max_items", + models.IntegerField( + default=12, verbose_name="Počet článků na stránce" + ), + ), + ( + "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': 'Aktuality', + "verbose_name": "Aktuality", }, - bases=(shared.models.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), migrations.AddField( - model_name='regionarticlepage', - name='tags', - field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='A comma-separated list of tags.', through='region.RegionArticleTag', to='taggit.Tag', verbose_name='Tags'), + model_name="regionarticlepage", + name="tags", + field=modelcluster.contrib.taggit.ClusterTaggableManager( + blank=True, + help_text="A comma-separated list of tags.", + through="region.RegionArticleTag", + to="taggit.Tag", + verbose_name="Tags", + ), ), ] diff --git a/region/models.py b/region/models.py index e781bffd45d5b8049f70e5cefa918cbffa183d9e..dfeda9b4e021ac5d81d9f2f8ccd0e0f93f92c3bd 100644 --- a/region/models.py +++ b/region/models.py @@ -6,7 +6,6 @@ from django.utils.translation import gettext_lazy from modelcluster.contrib.taggit import ClusterTaggableManager from modelcluster.fields import ParentalKey from taggit.models import TaggedItemBase -from uniweb.constants import RICH_TEXT_FEATURES from wagtail.admin.edit_handlers import ( CommentPanel, FieldPanel, @@ -19,7 +18,7 @@ from wagtail.core.models import Page from wagtailmetadata.models import MetadataPageMixin from shared.models import ArticleMixin, Person, SubpageMixin - +from uniweb.constants import RICH_TEXT_FEATURES # TODO zatím prakticky shodné s district.models - až bude hotové, tak společné věci přenést do shared