diff --git a/district/migrations/0220_alter_districthomepage_content.py b/district/migrations/0220_alter_districthomepage_content.py index e9d9f14524806a06337aa5bc539b7a9ef79c7965..525c87e8218582f6c02c2658a384f6fcabe78e3c 100644 --- a/district/migrations/0220_alter_districthomepage_content.py +++ b/district/migrations/0220_alter_districthomepage_content.py @@ -1,22 +1,233 @@ # Generated by Django 5.0.6 on 2024-06-11 08:39 -import shared.blocks.main import wagtail.blocks import wagtail.fields import wagtail.images.blocks from django.db import migrations +import shared.blocks.main + class Migration(migrations.Migration): - dependencies = [ - ('district', '0219_alter_districtelectioncampaignpage_options_and_more'), + ("district", "0219_alter_districtelectioncampaignpage_options_and_more"), ] operations = [ migrations.AlterField( - model_name='districthomepage', - name='content', - field=wagtail.fields.StreamField([('fullscreen_header_block', wagtail.blocks.StructBlock([('desktop_image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na desktopu.', label='Obrázek na pozadí (desktop)', required=False)), ('mobile_image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na mobilu.', label='Obrázek na pozadí (mobil)', required=False)), ('desktop_video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.', label='Video (desktop)', required=False)), ('mobile_video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na mobilech s povoleným autoplayem místo obrázku.', label='Video (mobil)', required=False)), ('desktop_line_1', wagtail.blocks.TextBlock(label='Desktop první řádek')), ('desktop_line_2', wagtail.blocks.TextBlock(label='Desktop druhý řádek', required=False)), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek')), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek', required=False)), ('mobile_line_3', wagtail.blocks.TextBlock(label='Třetí mobilní řádek', required=False)), ('button_url', wagtail.blocks.URLBlock(help_text='Bez odkazu tlačítko nebude viditelné.', label='Odkaz tlačítka', required=False)), ('button_text', wagtail.blocks.CharBlock(label='Text tlačítka', required=False))])), ('news_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis', required=False))], template='styleguide2/includes/organisms/articles/district/articles_section.html')), ('elections_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text_before_countdown', wagtail.blocks.CharBlock(default='Aktuálně zbývá', label='Text před odpočtem', required=True)), ('countdown_timestamp', wagtail.blocks.DateTimeBlock(label='Datum & čas voleb', required=True)), ('buttons', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', max_length=128, required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Tlačítka', required=False))])), ('people_block', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(shared.blocks.main.BoxBlock, label='Boxíky'))], template='styleguide2/includes/organisms/main_section/district/representatives_section.html')), ('calendar_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=False))])), ('newsletter_block', wagtail.blocks.StructBlock([]))], blank=True, verbose_name='Obsah'), + model_name="districthomepage", + name="content", + field=wagtail.fields.StreamField( + [ + ( + "fullscreen_header_block", + wagtail.blocks.StructBlock( + [ + ( + "desktop_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Pokud není vybráno video, ukáže se na desktopu.", + label="Obrázek na pozadí (desktop)", + required=False, + ), + ), + ( + "mobile_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Pokud není vybráno video, ukáže se na mobilu.", + label="Obrázek na pozadí (mobil)", + required=False, + ), + ), + ( + "desktop_video_url", + wagtail.blocks.URLBlock( + help_text="Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.", + label="Video (desktop)", + required=False, + ), + ), + ( + "mobile_video_url", + wagtail.blocks.URLBlock( + help_text="Pokud je vybráno, ukáže se na mobilech s povoleným autoplayem místo obrázku.", + label="Video (mobil)", + required=False, + ), + ), + ( + "desktop_line_1", + wagtail.blocks.TextBlock( + label="Desktop první řádek" + ), + ), + ( + "desktop_line_2", + wagtail.blocks.TextBlock( + label="Desktop druhý řádek", required=False + ), + ), + ( + "mobile_line_1", + wagtail.blocks.TextBlock( + label="První mobilní řádek" + ), + ), + ( + "mobile_line_2", + wagtail.blocks.TextBlock( + label="Druhý mobilní řádek", required=False + ), + ), + ( + "mobile_line_3", + wagtail.blocks.TextBlock( + label="Třetí mobilní řádek", required=False + ), + ), + ( + "button_url", + wagtail.blocks.URLBlock( + help_text="Bez odkazu tlačítko nebude viditelné.", + label="Odkaz tlačítka", + required=False, + ), + ), + ( + "button_text", + wagtail.blocks.CharBlock( + label="Text tlačítka", required=False + ), + ), + ] + ), + ), + ( + "news_block", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Nejnovější články se načtou automaticky", + label="Titulek", + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popis", required=False + ), + ), + ], + template="styleguide2/includes/organisms/articles/district/articles_section.html", + ), + ), + ( + "elections_block", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", required=True + ), + ), + ( + "text_before_countdown", + wagtail.blocks.CharBlock( + default="Aktuálně zbývá", + label="Text před odpočtem", + required=True, + ), + ), + ( + "countdown_timestamp", + wagtail.blocks.DateTimeBlock( + label="Datum & čas voleb", required=True + ), + ), + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", required=False + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", required=False + ), + ), + ] + ), + label="Tlačítka", + required=False, + ), + ), + ] + ), + ), + ( + "people_block", + wagtail.blocks.StructBlock( + [ + ( + "title_line_1", + wagtail.blocks.CharBlock( + label="První řádek titulku" + ), + ), + ( + "title_line_2", + wagtail.blocks.CharBlock( + label="Druhý řádek titulku" + ), + ), + ( + "description", + wagtail.blocks.TextBlock(label="Popis"), + ), + ( + "list", + wagtail.blocks.ListBlock( + shared.blocks.main.BoxBlock, label="Boxíky" + ), + ), + ], + template="styleguide2/includes/organisms/main_section/district/representatives_section.html", + ), + ), + ( + "calendar_block", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", required=False + ), + ) + ] + ), + ), + ("newsletter_block", wagtail.blocks.StructBlock([])), + ], + blank=True, + verbose_name="Obsah", + ), ), ] diff --git a/district/migrations/0221_alter_districthomepage_content_and_more.py b/district/migrations/0221_alter_districthomepage_content_and_more.py index c41dbae51b2b16b28c899004635b3307eb27ac03..238c365b3b90e1dbf53a0f3bbe39be742a2dd872 100644 --- a/district/migrations/0221_alter_districthomepage_content_and_more.py +++ b/district/migrations/0221_alter_districthomepage_content_and_more.py @@ -1,27 +1,963 @@ # Generated by Django 5.0.6 on 2024-06-11 08:50 -import shared.blocks.main import wagtail.blocks import wagtail.fields import wagtail.images.blocks from django.db import migrations +import shared.blocks.main + class Migration(migrations.Migration): - dependencies = [ - ('district', '0220_alter_districthomepage_content'), + ("district", "0220_alter_districthomepage_content"), ] operations = [ migrations.AlterField( - model_name='districthomepage', - name='content', - field=wagtail.fields.StreamField([('fullscreen_header_block', wagtail.blocks.StructBlock([('desktop_image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na desktopu.', label='Obrázek na pozadí (desktop)', required=False)), ('mobile_image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybráno video, ukáže se na mobilu.', label='Obrázek na pozadí (mobil)', required=False)), ('desktop_video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.', label='Video (desktop)', required=False)), ('mobile_video_url', wagtail.blocks.URLBlock(help_text='Pokud je vybráno, ukáže se na mobilech s povoleným autoplayem místo obrázku.', label='Video (mobil)', required=False)), ('desktop_line_1', wagtail.blocks.TextBlock(label='Desktop první řádek')), ('desktop_line_2', wagtail.blocks.TextBlock(label='Desktop druhý řádek', required=False)), ('mobile_line_1', wagtail.blocks.TextBlock(label='První mobilní řádek')), ('mobile_line_2', wagtail.blocks.TextBlock(label='Druhý mobilní řádek', required=False)), ('mobile_line_3', wagtail.blocks.TextBlock(label='Třetí mobilní řádek', required=False)), ('button_url', wagtail.blocks.URLBlock(help_text='Bez odkazu tlačítko nebude viditelné.', label='Odkaz tlačítka', required=False)), ('button_text', wagtail.blocks.CharBlock(label='Text tlačítka', required=False))])), ('news_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text='Nejnovější články se načtou automaticky', label='Titulek')), ('description', wagtail.blocks.TextBlock(label='Popis', required=False))], template='styleguide2/includes/organisms/articles/district/articles_section.html')), ('elections_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text_before_countdown', wagtail.blocks.CharBlock(default='Aktuálně zbývá', label='Text před odpočtem', required=True)), ('countdown_timestamp', wagtail.blocks.DateTimeBlock(label='Datum & čas voleb', required=True)), ('buttons', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', max_length=128, required=True)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Tlačítka', required=False))])), ('people_block', wagtail.blocks.StructBlock([('title_line_1', wagtail.blocks.CharBlock(label='První řádek titulku')), ('title_line_2', wagtail.blocks.CharBlock(label='Druhý řádek titulku')), ('description', wagtail.blocks.TextBlock(label='Popis')), ('list', wagtail.blocks.ListBlock(shared.blocks.main.BoxBlock, label='Boxíky'))], template='styleguide2/includes/organisms/main_section/district/representatives_section.html')), ('calendar_block', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek', required=False))])), ('carousel_program', wagtail.blocks.StructBlock([('label', wagtail.blocks.CharBlock(default='Program', help_text="Např. 'Program'", label='Nadpis')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('name', wagtail.blocks.CharBlock(label='Název')), ('points', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('content', wagtail.blocks.TextBlock(label='Obsah'))]), label='Body'))]), label='Kategorie')), ('long_version_url', wagtail.blocks.URLBlock(help_text='Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.', label='Odkaz na celou verzi programu', required=False)), ('long_version_text', wagtail.blocks.CharBlock(label='Nadpis odkazu na celou verzi programu', required=False))])), ('newsletter_block', wagtail.blocks.StructBlock([]))], blank=True, verbose_name='Obsah'), + model_name="districthomepage", + name="content", + field=wagtail.fields.StreamField( + [ + ( + "fullscreen_header_block", + wagtail.blocks.StructBlock( + [ + ( + "desktop_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Pokud není vybráno video, ukáže se na desktopu.", + label="Obrázek na pozadí (desktop)", + required=False, + ), + ), + ( + "mobile_image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Pokud není vybráno video, ukáže se na mobilu.", + label="Obrázek na pozadí (mobil)", + required=False, + ), + ), + ( + "desktop_video_url", + wagtail.blocks.URLBlock( + help_text="Pokud je vybráno, ukáže se na desktopech s povoleným autoplayem místo obrázku.", + label="Video (desktop)", + required=False, + ), + ), + ( + "mobile_video_url", + wagtail.blocks.URLBlock( + help_text="Pokud je vybráno, ukáže se na mobilech s povoleným autoplayem místo obrázku.", + label="Video (mobil)", + required=False, + ), + ), + ( + "desktop_line_1", + wagtail.blocks.TextBlock( + label="Desktop první řádek" + ), + ), + ( + "desktop_line_2", + wagtail.blocks.TextBlock( + label="Desktop druhý řádek", required=False + ), + ), + ( + "mobile_line_1", + wagtail.blocks.TextBlock( + label="První mobilní řádek" + ), + ), + ( + "mobile_line_2", + wagtail.blocks.TextBlock( + label="Druhý mobilní řádek", required=False + ), + ), + ( + "mobile_line_3", + wagtail.blocks.TextBlock( + label="Třetí mobilní řádek", required=False + ), + ), + ( + "button_url", + wagtail.blocks.URLBlock( + help_text="Bez odkazu tlačítko nebude viditelné.", + label="Odkaz tlačítka", + required=False, + ), + ), + ( + "button_text", + wagtail.blocks.CharBlock( + label="Text tlačítka", required=False + ), + ), + ] + ), + ), + ( + "news_block", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Nejnovější články se načtou automaticky", + label="Titulek", + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popis", required=False + ), + ), + ], + template="styleguide2/includes/organisms/articles/district/articles_section.html", + ), + ), + ( + "elections_block", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", required=True + ), + ), + ( + "text_before_countdown", + wagtail.blocks.CharBlock( + default="Aktuálně zbývá", + label="Text před odpočtem", + required=True, + ), + ), + ( + "countdown_timestamp", + wagtail.blocks.DateTimeBlock( + label="Datum & čas voleb", required=True + ), + ), + ( + "buttons", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + max_length=128, + required=True, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", required=False + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", required=False + ), + ), + ] + ), + label="Tlačítka", + required=False, + ), + ), + ] + ), + ), + ( + "people_block", + wagtail.blocks.StructBlock( + [ + ( + "title_line_1", + wagtail.blocks.CharBlock( + label="První řádek titulku" + ), + ), + ( + "title_line_2", + wagtail.blocks.CharBlock( + label="Druhý řádek titulku" + ), + ), + ( + "description", + wagtail.blocks.TextBlock(label="Popis"), + ), + ( + "list", + wagtail.blocks.ListBlock( + shared.blocks.main.BoxBlock, label="Boxíky" + ), + ), + ], + template="styleguide2/includes/organisms/main_section/district/representatives_section.html", + ), + ), + ( + "calendar_block", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", required=False + ), + ) + ] + ), + ), + ( + "carousel_program", + wagtail.blocks.StructBlock( + [ + ( + "label", + wagtail.blocks.CharBlock( + default="Program", + help_text="Např. 'Program'", + label="Nadpis", + ), + ), + ( + "categories", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "number", + wagtail.blocks.IntegerBlock( + label="Číslo" + ), + ), + ( + "name", + wagtail.blocks.CharBlock( + label="Název" + ), + ), + ( + "points", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "content", + wagtail.blocks.TextBlock( + label="Obsah" + ), + ) + ] + ), + label="Body", + ), + ), + ] + ), + label="Kategorie", + ), + ), + ( + "long_version_url", + wagtail.blocks.URLBlock( + help_text="Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.", + label="Odkaz na celou verzi programu", + required=False, + ), + ), + ( + "long_version_text", + wagtail.blocks.CharBlock( + label="Nadpis odkazu na celou verzi programu", + required=False, + ), + ), + ] + ), + ), + ("newsletter_block", wagtail.blocks.StructBlock([])), + ], + blank=True, + verbose_name="Obsah", + ), ), migrations.AlterField( - model_name='districtnewprogrampage', - name='program', - field=wagtail.fields.StreamField([('program_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", label='Název programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('url', wagtail.blocks.URLBlock(label='Odkaz pokrývající celou tuto část', required=False)), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('title', wagtail.blocks.CharBlock(label='Titulek článku programu')), ('text', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah'))]), label='Jednotlivé články programu'))])), ('program_group_crossroad', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", label='Název programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text', wagtail.blocks.RichTextBlock(label='Krátký text pod nadpisem', required=False)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['district.DistrictArticlePage', 'district.DistrictArticlesPage', 'district.DistrictCenterPage', 'district.DistrictContactPage', 'district.DistrictCrossroadPage', 'district.DistrictCustomPage', 'district.DistrictElectionCampaignPage', 'district.DistrictElectionProgramPage', 'district.DistrictPeoplePage', 'district.DistrictPersonPage', 'district.DistrictPostElectionStrategyPage', 'district.DistrictProgramPage'], required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Karty programu'))])), ('program_group_popout', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", label='Název programu')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název')), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('description', wagtail.blocks.RichTextBlock(label='Popis', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek vyskakovacího bloku')), ('content', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah')), ('guarantor', wagtail.blocks.PageChooserBlock(label='Garant', page_type=['district.DistrictPersonPage'], required=False))]), label='Jednotlivé bloky programu'))]), label='Kategorie programu'))])), ('program_group_with_candidates', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", label='Název programu')), ('preamble_content', wagtail.blocks.RichTextBlock(help_text='Text, který se zobrazí před přepínačem mezi kandidáty a programem.', label='Preambule', required=False)), ('primary_candidates', wagtail.blocks.StructBlock([('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['district.DistrictPersonPage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False)), ('description', wagtail.blocks.TextBlock(label='Popis'))]), label=' '))], help_text='Zobrazí se ve velkých blocích na začátku stránky.', label='Osoby na čele kandidátky')), ('secondary_candidates', wagtail.blocks.StructBlock([('heading', wagtail.blocks.CharBlock(default='Ostatní kandidátky', label='Nadpis zbytku kandidátky')), ('candidates', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.CharBlock(label='Číslo')), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['district.DistrictPersonPage'])), ('image', wagtail.images.blocks.ImageChooserBlock(help_text='Pokud není vybrán, použije se obrázek ze stránky kandidáta', label='Obrázek', required=False))]), label='Zbylí kandidáti na listině'))], help_text='Zobrazí se v kompaktním seznamu pod čelem kandidátky.', label='Ostatní osoby na kandidátce')), ('program', wagtail.blocks.StreamBlock([('program_group', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", label='Název programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('url', wagtail.blocks.URLBlock(label='Odkaz pokrývající celou tuto část', required=False)), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('title', wagtail.blocks.CharBlock(label='Titulek článku programu')), ('text', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah'))]), label='Jednotlivé články programu'))])), ('program_group_crossroad', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", label='Název programu')), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock(label='Obrázek')), ('title', wagtail.blocks.CharBlock(label='Titulek', required=True)), ('text', wagtail.blocks.RichTextBlock(label='Krátký text pod nadpisem', required=False)), ('page', wagtail.blocks.PageChooserBlock(label='Stránka', page_type=['district.DistrictArticlePage', 'district.DistrictArticlesPage', 'district.DistrictCenterPage', 'district.DistrictContactPage', 'district.DistrictCrossroadPage', 'district.DistrictCustomPage', 'district.DistrictElectionCampaignPage', 'district.DistrictElectionProgramPage', 'district.DistrictPeoplePage', 'district.DistrictPersonPage', 'district.DistrictPostElectionStrategyPage', 'district.DistrictProgramPage'], required=False)), ('link', wagtail.blocks.URLBlock(label='Odkaz', required=False))]), label='Karty programu'))])), ('program_group_popout', wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", label='Název programu')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('name', wagtail.blocks.CharBlock(label='Název')), ('icon', wagtail.images.blocks.ImageChooserBlock(label='Ikona', required=False)), ('description', wagtail.blocks.RichTextBlock(label='Popis', required=False)), ('point_list', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('title', wagtail.blocks.CharBlock(label='Titulek vyskakovacího bloku')), ('content', wagtail.blocks.RichTextBlock(features=['h3', 'h4', 'h5', 'bold', 'italic', 'ol', 'ul', 'hr', 'link', 'document-link', 'image', 'superscript', 'subscript', 'strikethrough', 'blockquote', 'embed'], label='Obsah')), ('guarantor', wagtail.blocks.PageChooserBlock(label='Garant', page_type=['district.DistrictPersonPage'], required=False))]), label='Jednotlivé bloky programu'))]), label='Kategorie programu'))])), ('carousel_program', wagtail.blocks.StructBlock([('label', wagtail.blocks.CharBlock(default='Program', help_text="Např. 'Program'", label='Nadpis')), ('categories', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('number', wagtail.blocks.IntegerBlock(label='Číslo')), ('name', wagtail.blocks.CharBlock(label='Název')), ('points', wagtail.blocks.ListBlock(wagtail.blocks.StructBlock([('content', wagtail.blocks.TextBlock(label='Obsah'))]), label='Body'))]), label='Kategorie')), ('long_version_url', wagtail.blocks.URLBlock(help_text='Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.', label='Odkaz na celou verzi programu', required=False)), ('long_version_text', wagtail.blocks.CharBlock(label='Nadpis odkazu na celou verzi programu', required=False))], template='styleguide2/includes/molecules/program/program_block.html'))]))]))], blank=True, verbose_name='Programy'), + model_name="districtnewprogrampage", + name="program", + field=wagtail.fields.StreamField( + [ + ( + "program_group", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", + label="Název programu", + ), + ), + ( + "point_list", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "url", + wagtail.blocks.URLBlock( + label="Odkaz pokrývající celou tuto část", + required=False, + ), + ), + ( + "icon", + wagtail.images.blocks.ImageChooserBlock( + label="Ikona", required=False + ), + ), + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek článku programu" + ), + ), + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + "embed", + ], + label="Obsah", + ), + ), + ] + ), + label="Jednotlivé články programu", + ), + ), + ] + ), + ), + ( + "program_group_crossroad", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", + label="Název programu", + ), + ), + ( + "point_list", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek" + ), + ), + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", required=True + ), + ), + ( + "text", + wagtail.blocks.RichTextBlock( + label="Krátký text pod nadpisem", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + page_type=[ + "district.DistrictArticlePage", + "district.DistrictArticlesPage", + "district.DistrictCenterPage", + "district.DistrictContactPage", + "district.DistrictCrossroadPage", + "district.DistrictCustomPage", + "district.DistrictElectionCampaignPage", + "district.DistrictElectionProgramPage", + "district.DistrictPeoplePage", + "district.DistrictPersonPage", + "district.DistrictPostElectionStrategyPage", + "district.DistrictProgramPage", + ], + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", required=False + ), + ), + ] + ), + label="Karty programu", + ), + ), + ] + ), + ), + ( + "program_group_popout", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", + label="Název programu", + ), + ), + ( + "categories", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "name", + wagtail.blocks.CharBlock( + label="Název" + ), + ), + ( + "icon", + wagtail.images.blocks.ImageChooserBlock( + label="Ikona", required=False + ), + ), + ( + "description", + wagtail.blocks.RichTextBlock( + label="Popis", required=False + ), + ), + ( + "point_list", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek vyskakovacího bloku" + ), + ), + ( + "content", + wagtail.blocks.RichTextBlock( + features=[ + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + "embed", + ], + label="Obsah", + ), + ), + ( + "guarantor", + wagtail.blocks.PageChooserBlock( + label="Garant", + page_type=[ + "district.DistrictPersonPage" + ], + required=False, + ), + ), + ] + ), + label="Jednotlivé bloky programu", + ), + ), + ] + ), + label="Kategorie programu", + ), + ), + ] + ), + ), + ( + "program_group_with_candidates", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", + label="Název programu", + ), + ), + ( + "preamble_content", + wagtail.blocks.RichTextBlock( + help_text="Text, který se zobrazí před přepínačem mezi kandidáty a programem.", + label="Preambule", + required=False, + ), + ), + ( + "primary_candidates", + wagtail.blocks.StructBlock( + [ + ( + "candidates", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + page_type=[ + "district.DistrictPersonPage" + ], + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta", + label="Obrázek", + required=False, + ), + ), + ( + "description", + wagtail.blocks.TextBlock( + label="Popis" + ), + ), + ] + ), + label=" ", + ), + ) + ], + help_text="Zobrazí se ve velkých blocích na začátku stránky.", + label="Osoby na čele kandidátky", + ), + ), + ( + "secondary_candidates", + wagtail.blocks.StructBlock( + [ + ( + "heading", + wagtail.blocks.CharBlock( + default="Ostatní kandidátky", + label="Nadpis zbytku kandidátky", + ), + ), + ( + "candidates", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "number", + wagtail.blocks.CharBlock( + label="Číslo" + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + page_type=[ + "district.DistrictPersonPage" + ], + ), + ), + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + help_text="Pokud není vybrán, použije se obrázek ze stránky kandidáta", + label="Obrázek", + required=False, + ), + ), + ] + ), + label="Zbylí kandidáti na listině", + ), + ), + ], + help_text="Zobrazí se v kompaktním seznamu pod čelem kandidátky.", + label="Ostatní osoby na kandidátce", + ), + ), + ( + "program", + wagtail.blocks.StreamBlock( + [ + ( + "program_group", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", + label="Název programu", + ), + ), + ( + "point_list", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "url", + wagtail.blocks.URLBlock( + label="Odkaz pokrývající celou tuto část", + required=False, + ), + ), + ( + "icon", + wagtail.images.blocks.ImageChooserBlock( + label="Ikona", + required=False, + ), + ), + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek článku programu" + ), + ), + ( + "text", + wagtail.blocks.RichTextBlock( + features=[ + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + "embed", + ], + label="Obsah", + ), + ), + ] + ), + label="Jednotlivé články programu", + ), + ), + ] + ), + ), + ( + "program_group_crossroad", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", + label="Název programu", + ), + ), + ( + "point_list", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "image", + wagtail.images.blocks.ImageChooserBlock( + label="Obrázek" + ), + ), + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek", + required=True, + ), + ), + ( + "text", + wagtail.blocks.RichTextBlock( + label="Krátký text pod nadpisem", + required=False, + ), + ), + ( + "page", + wagtail.blocks.PageChooserBlock( + label="Stránka", + page_type=[ + "district.DistrictArticlePage", + "district.DistrictArticlesPage", + "district.DistrictCenterPage", + "district.DistrictContactPage", + "district.DistrictCrossroadPage", + "district.DistrictCustomPage", + "district.DistrictElectionCampaignPage", + "district.DistrictElectionProgramPage", + "district.DistrictPeoplePage", + "district.DistrictPersonPage", + "district.DistrictPostElectionStrategyPage", + "district.DistrictProgramPage", + ], + required=False, + ), + ), + ( + "link", + wagtail.blocks.URLBlock( + label="Odkaz", + required=False, + ), + ), + ] + ), + label="Karty programu", + ), + ), + ] + ), + ), + ( + "program_group_popout", + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + help_text="Např. 'Krajské volby 2024', 'Evropské volby 2024', ...", + label="Název programu", + ), + ), + ( + "categories", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "name", + wagtail.blocks.CharBlock( + label="Název" + ), + ), + ( + "icon", + wagtail.images.blocks.ImageChooserBlock( + label="Ikona", + required=False, + ), + ), + ( + "description", + wagtail.blocks.RichTextBlock( + label="Popis", + required=False, + ), + ), + ( + "point_list", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "title", + wagtail.blocks.CharBlock( + label="Titulek vyskakovacího bloku" + ), + ), + ( + "content", + wagtail.blocks.RichTextBlock( + features=[ + "h3", + "h4", + "h5", + "bold", + "italic", + "ol", + "ul", + "hr", + "link", + "document-link", + "image", + "superscript", + "subscript", + "strikethrough", + "blockquote", + "embed", + ], + label="Obsah", + ), + ), + ( + "guarantor", + wagtail.blocks.PageChooserBlock( + label="Garant", + page_type=[ + "district.DistrictPersonPage" + ], + required=False, + ), + ), + ] + ), + label="Jednotlivé bloky programu", + ), + ), + ] + ), + label="Kategorie programu", + ), + ), + ] + ), + ), + ( + "carousel_program", + wagtail.blocks.StructBlock( + [ + ( + "label", + wagtail.blocks.CharBlock( + default="Program", + help_text="Např. 'Program'", + label="Nadpis", + ), + ), + ( + "categories", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "number", + wagtail.blocks.IntegerBlock( + label="Číslo" + ), + ), + ( + "name", + wagtail.blocks.CharBlock( + label="Název" + ), + ), + ( + "points", + wagtail.blocks.ListBlock( + wagtail.blocks.StructBlock( + [ + ( + "content", + wagtail.blocks.TextBlock( + label="Obsah" + ), + ) + ] + ), + label="Body", + ), + ), + ] + ), + label="Kategorie", + ), + ), + ( + "long_version_url", + wagtail.blocks.URLBlock( + help_text="Pro zobrazení odkazu na celou verzi programu musí být obě následující pole vyplněná.", + label="Odkaz na celou verzi programu", + required=False, + ), + ), + ( + "long_version_text", + wagtail.blocks.CharBlock( + label="Nadpis odkazu na celou verzi programu", + required=False, + ), + ), + ], + template="styleguide2/includes/molecules/program/program_block.html", + ), + ), + ] + ), + ), + ] + ), + ), + ], + blank=True, + verbose_name="Programy", + ), ), ] diff --git a/district/migrations/0222_districtsearchpage.py b/district/migrations/0222_districtsearchpage.py index c84eca78b3d7c64beaa8ca7e667300e04c600675..d4b0c08c4dd9735dddb103d3de2d5329271270c8 100644 --- a/district/migrations/0222_districtsearchpage.py +++ b/district/migrations/0222_districtsearchpage.py @@ -1,30 +1,55 @@ # Generated by Django 5.0.6 on 2024-06-11 09:23 import django.db.models.deletion -import shared.models.main import wagtailmetadata.models from django.db import migrations, models +import shared.models.main + class Migration(migrations.Migration): - dependencies = [ - ('district', '0221_alter_districthomepage_content_and_more'), - ('wagtailcore', '0093_uploadedfile'), - ('wagtailimages', '0026_delete_uploadedimage'), + ("district", "0221_alter_districthomepage_content_and_more"), + ("wagtailcore", "0093_uploadedfile"), + ("wagtailimages", "0026_delete_uploadedimage"), ] operations = [ migrations.CreateModel( - name='DistrictSearchPage', + name="DistrictSearchPage", 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': 'Vyhledávací stránka', - 'abstract': False, + "verbose_name": "Vyhledávací stránka", + "abstract": False, }, - bases=(shared.models.main.SubpageMixin, wagtailmetadata.models.WagtailImageMetadataMixin, 'wagtailcore.page', models.Model), + bases=( + shared.models.main.SubpageMixin, + wagtailmetadata.models.WagtailImageMetadataMixin, + "wagtailcore.page", + models.Model, + ), ), ] diff --git a/district/models.py b/district/models.py index ef3a38e409bcde5058a9b460cc5bbdc8e5198c9c..68ffebb2deb57847507fb32294c08d53dc6ff194 100644 --- a/district/models.py +++ b/district/models.py @@ -1,9 +1,9 @@ import json -from django.http import HttpResponseRedirect from django.core.cache import cache from django.core.exceptions import ValidationError from django.db import models +from django.http import HttpResponseRedirect from modelcluster.contrib.taggit import ClusterTaggableManager from modelcluster.fields import ParentalKey from taggit.models import TaggedItemBase @@ -48,8 +48,8 @@ from shared.models import ( MainPeoplePageMixin, MainPersonPageMixin, MainProgramPageMixin, - MainSimplePageMixin, MainSearchPageMixin, + MainSimplePageMixin, PageInMenuMixin, PdfPageMixin, SharedTaggedDistrictArticle, diff --git a/district/templates/district/district_new_program_page.html b/district/templates/district/district_new_program_page.html index a015fc17a055fc65663a4a61b39849b02a4ff03f..791a32b3f73be5f5c4e6809e8fcacbb9effbfb7b 100644 --- a/district/templates/district/district_new_program_page.html +++ b/district/templates/district/district_new_program_page.html @@ -2,4 +2,4 @@ {% block navbar %} {% include 'styleguide2/includes/organisms/layout/district/navbar.html' with selected_item=page.get_menu_title %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/district/templates/district/district_search_page.html b/district/templates/district/district_search_page.html index e8e73f244e6f0c31c2e9f13dee96064333950beb..5e36913121273b3c9871c96992d84ff232d212ed 100644 --- a/district/templates/district/district_search_page.html +++ b/district/templates/district/district_search_page.html @@ -2,4 +2,4 @@ {% block navbar %} {% include 'styleguide2/includes/organisms/layout/district/navbar.html' with selected_item=page.get_menu_title %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/shared/migrations/0005_auto_20240513_0955.py b/shared/migrations/0005_auto_20240513_0955.py index dde10a6c981a109f341293d76ff54eefac32ea91..d923266a1480455aeefff225989b194ddd617a4e 100644 --- a/shared/migrations/0005_auto_20240513_0955.py +++ b/shared/migrations/0005_auto_20240513_0955.py @@ -26,7 +26,7 @@ def fix_tags_names(apps, schema_editor): try: tag.save() - except Exception as e: + except Exception: # The tag already exists, despite numerous checks pass diff --git a/shared/models/main.py b/shared/models/main.py index 8e78600b121f849fc24e8ddd6931c6245fc07286..472c87515c1168b9a6e9c8fb0f727438c163a829 100644 --- a/shared/models/main.py +++ b/shared/models/main.py @@ -241,20 +241,12 @@ class SocialMixin(Page): class PageInMenuMixin(Page): def get_menu_title(self, parent_instance=None) -> str: - instance = ( - self - if parent_instance is None - else parent_instance - ) + instance = self if parent_instance is None else parent_instance menu_iterator = ( instance.root_page.menu if hasattr(instance, "root_page") - else ( - instance.menu - if hasattr(instance, "menu") - else [] - ) + else (instance.menu if hasattr(instance, "menu") else []) ) for menu in menu_iterator: @@ -1107,7 +1099,9 @@ class MainHomePageMixin( context["article_data_list"] = self.materialize_shared_articles_query( self.append_all_shared_articles_query( - self.article_page_model.objects.live().child_of(self.articles_page).all() + self.article_page_model.objects.live() + .child_of(self.articles_page) + .all() ).order_by("-union_timestamp")[:3] ) @@ -1274,7 +1268,10 @@ class MainArticlesPageMixin( def get_base_shared_articles_query(self, filter: models.Q): return self.materialize_shared_articles_query( self.append_all_shared_articles_query( - self.root_page.article_page_model.objects.filter(filter).live().child_of(self).all() + self.root_page.article_page_model.objects.filter(filter) + .live() + .child_of(self) + .all() ).order_by("-union_timestamp") ) diff --git a/shared/static/styleguide2/pirati-ui.svg b/shared/static/styleguide2/pirati-ui.svg index ffc20eccf43c3d89476c0124b2475cd314fe2ecd..c6e3a71ad07f5229dda5d69c9289dc5ce339be12 100644 --- a/shared/static/styleguide2/pirati-ui.svg +++ b/shared/static/styleguide2/pirati-ui.svg @@ -127,4 +127,4 @@ <glyph unicode="" glyph-name="price-tags" horiz-adv-x="1280" d="M1232 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM992 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM128 416l544 544h-80c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l30.058 30.058-416 416z" /> <glyph unicode="" glyph-name="twitter" horiz-adv-x="1001" d="M596.009 526.629l372.819 433.371h-88.346l-323.718-376.29-258.553 376.29h-298.21l390.983-569.018-390.983-454.457h88.351l341.855 397.375 273.051-397.375h298.21l-405.458 590.103zM475 385.969l-354.815 507.521h135.702l624.636-893.48h-135.702l-269.821 385.959z" /> <glyph unicode="" glyph-name="stats-dots" d="M128 64h896v-128h-1024v1024h128zM288 128c-53.020 0-96 42.98-96 96s42.98 96 96 96c2.828 0 5.622-0.148 8.388-0.386l103.192 171.986c-9.84 15.070-15.58 33.062-15.58 52.402 0 53.020 42.98 96 96 96s96-42.98 96-96c0-19.342-5.74-37.332-15.58-52.402l103.192-171.986c2.766 0.238 5.56 0.386 8.388 0.386 2.136 0 4.248-0.094 6.35-0.23l170.356 298.122c-10.536 15.408-16.706 34.036-16.706 54.11 0 53.020 42.98 96 96 96s96-42.98 96-96c0-53.020-42.98-96-96-96-2.14 0-4.248 0.094-6.35 0.232l-170.356-298.124c10.536-15.406 16.706-34.036 16.706-54.11 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 19.34 5.74 37.332 15.578 52.402l-103.19 171.984c-2.766-0.238-5.56-0.386-8.388-0.386s-5.622 0.146-8.388 0.386l-103.192-171.986c9.84-15.068 15.58-33.060 15.58-52.4 0-53.020-42.98-96-96-96z" /> -</font></defs></svg> \ No newline at end of file +</font></defs></svg>