Skip to content
Snippets Groups Projects
Select Git revision
  • 3f22e34e96be1ad05169bfd27a8984c0f5ab2ce5
  • test default protected
  • master protected
  • niki_edit_branch
  • feat/custom-css
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/redesign-fixes-3
  • feat/pirstan-changes
  • feat/separate-import-thread
  • feat/dary-improvements
  • features/add-pdf-page
  • features/add-typed-table
  • features/fix-broken-calendar-categories
  • features/add-embed-to-articles
  • features/create-mastodon-feed-block
  • features/add-custom-numbering-for-candidates
  • features/add-timeline
  • features/create-wordcloud-from-article-page
  • features/create-collapsible-extra-legal-info
  • features/extend-hero-banner
21 results

0094_alter_districtelectioncampaignpage_candidates.py

Blame
  • 0094_alter_districtelectioncampaignpage_candidates.py 13.03 KiB
    # Generated by Django 4.0.4 on 2022-07-22 07:53
    
    import wagtail.blocks
    import wagtail.fields
    import wagtail.images.blocks
    from django.db import migrations
    from wagtail.blocks import StreamValue
    
    
    def person_chooser_list_block_to_compact_block(block):
        for person_page in block["value"]["candidate_list"]:
            person_page["type"] = "person_page"
        return block
    
    
    def compact_block_to_person_chooser_list_block(block):
        for index, compact_block in enumerate(block["value"]["candidate_list"]):
            if compact_block["type"] == "person_page":
                compact_block["type"] = "item"
            else:
                del block["value"]["candidate_list"][index]
    
        return block
    
    
    def get_content(page, mapper):
        stream_data = []
        mapped = False
    
        for block in page.candidates.raw_data:
            if block["type"] == "candidates":
                stream_data.append(mapper(block))
                mapped = True
            else:
                stream_data.append(block)
    
        return stream_data, mapped
    
    
    def migrate(apps, mapper):
        DistrictElectionCampaignPage = apps.get_model(
            "district", "DistrictElectionCampaignPage"
        )
    
        for page in DistrictElectionCampaignPage.objects.all():
            candidates, mapped = get_content(page, mapper)
    
            if mapped:
                page.candidates = StreamValue(page.candidates, candidates, is_lazy=True)
                page.save()
    
    
    def forwards(apps, schema_editor):
        migrate(apps, person_chooser_list_block_to_compact_block)
    
    
    def backwards(apps, schema_editor):
        migrate(apps, compact_block_to_person_chooser_list_block)
    
    
    class Migration(migrations.Migration):
        dependencies = [
            ("district", "0093_alter_districthomepage_subheader"),
        ]
    
        operations = [
            migrations.AlterField(
                model_name="districtelectioncampaignpage",
                name="candidates",
                field=wagtail.fields.StreamField(
                    [
                        (
                            "candidates",
                            wagtail.blocks.StructBlock(
                                [
                                    (
                                        "candidate_list",
                                        wagtail.blocks.StreamBlock(
                                            [
                                                (
                                                    "person_page",
                                                    wagtail.blocks.PageChooserBlock(
                                                        label="Osoba",
                                                        page_type=[
                                                            "district.DistrictPersonPage"
                                                        ],
                                                    ),
                                                ),
                                                (
                                                    "person_block",
                                                    wagtail.blocks.StructBlock(
                                                        [
                                                            (
                                                                "title",
                                                                wagtail.blocks.CharBlock(
                                                                    label="Jméno a příjmení",
                                                                    max_length=128,
                                                                    required=True,
                                                                ),
                                                            ),
                                                            (
                                                                "job",
                                                                wagtail.blocks.CharBlock(
                                                                    help_text="Např. 'Informatik'",
                                                                    label="Povolání",
                                                                    max_length=128,
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "profile_photo",
                                                                wagtail.images.blocks.ImageChooserBlock(
                                                                    label="Profilová fotka",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "email",
                                                                wagtail.blocks.EmailBlock(
                                                                    label="Email",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "city",
                                                                wagtail.blocks.CharBlock(
                                                                    label="Město/obec",
                                                                    max_length=64,
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "age",
                                                                wagtail.blocks.IntegerBlock(
                                                                    label="Věk",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "is_pirate",
                                                                wagtail.blocks.BooleanBlock(
                                                                    default=True,
                                                                    label="Je členem Pirátské strany?",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "other_party",
                                                                wagtail.blocks.CharBlock(
                                                                    label="Strana",
                                                                    max_length=64,
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "other_party_logo",
                                                                wagtail.images.blocks.ImageChooserBlock(
                                                                    help_text="Vyplňte pokud osoba není Pirát",
                                                                    label="Logo strany",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "facebook_url",
                                                                wagtail.blocks.URLBlock(
                                                                    label="Odkaz na Facebook",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "instagram_url",
                                                                wagtail.blocks.URLBlock(
                                                                    label="Odkaz na Instagram",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "twitter_url",
                                                                wagtail.blocks.URLBlock(
                                                                    label="Odkaz na Twitter",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "youtube_url",
                                                                wagtail.blocks.URLBlock(
                                                                    label="Odkaz na Youtube kanál",
                                                                    required=False,
                                                                ),
                                                            ),
                                                            (
                                                                "flickr_url",
                                                                wagtail.blocks.URLBlock(
                                                                    label="Odkaz na Flickr",
                                                                    required=False,
                                                                ),
                                                            ),
                                                        ]
                                                    ),
                                                ),
                                            ],
                                            label="Kandidáti",
                                        ),
                                    ),
                                    (
                                        "candidate_list_big_count",
                                        wagtail.blocks.IntegerBlock(
                                            default=7,
                                            label="Počet kanditátů s velkým náhledem",
                                        ),
                                    ),
                                    (
                                        "candidate_list_shown_count",
                                        wagtail.blocks.IntegerBlock(
                                            default=16,
                                            label="Počet zobrazených kandidátů při načtení stránky (včetně velkých náhledů)",
                                        ),
                                    ),
                                    (
                                        "cta_text",
                                        wagtail.blocks.CharBlock(
                                            label="Text 'call-to-action' baneru",
                                            required=False,
                                        ),
                                    ),
                                    (
                                        "cta_link",
                                        wagtail.blocks.URLBlock(
                                            label="Odkaz 'call-to-action' baneru",
                                            required=False,
                                        ),
                                    ),
                                    (
                                        "cta_button_text",
                                        wagtail.blocks.CharBlock(
                                            label="Text tlačítka 'call-to-action' baneru",
                                            max_length=24,
                                            required=False,
                                        ),
                                    ),
                                ]
                            ),
                        )
                    ],
                    blank=True,
                    use_json_field=None,
                    verbose_name="Kandidátní listina",
                ),
            ),
            migrations.RunPython(forwards, backwards),
        ]