diff --git a/district/migrations/0109_districtarticlepage_mastodon_feed_and_more.py b/district/migrations/0109_districtarticlepage_mastodon_feed_and_more.py deleted file mode 100644 index e38906c90669084139ba05ba52fc3c124b9e6321..0000000000000000000000000000000000000000 --- a/district/migrations/0109_districtarticlepage_mastodon_feed_and_more.py +++ /dev/null @@ -1,558 +0,0 @@ -# Generated by Django 4.1.8 on 2023-04-22 16:15 - -import wagtail.blocks -import wagtail.fields -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("district", "0108_alter_districtcenterpage_content_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="districtarticlepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtarticlespage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtcenterpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtcontactpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtcrossroadpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtcustompage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtelectioncampaignpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtelectionprogrampage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtgeofeaturecollectionpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtgeofeaturedetailpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districthomepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtinteractiveprogrampage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtpeoplepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtpersonpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtpostelectionstrategypage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="districtprogrampage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - ] diff --git a/district/migrations/0109_districtcustompage_mastodon_feed_and_more.py b/district/migrations/0109_districtcustompage_mastodon_feed_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..93c515a83d42121db08883d1e371d1489dfb9565 --- /dev/null +++ b/district/migrations/0109_districtcustompage_mastodon_feed_and_more.py @@ -0,0 +1,48 @@ +# Generated by Django 4.1.8 on 2023-04-24 20:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("district", "0108_alter_districtcenterpage_content_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="districtcustompage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + migrations.AddField( + model_name="districthomepage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + migrations.AddField( + model_name="districtpeoplepage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + migrations.AddField( + model_name="districtpersonpage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + ] diff --git a/district/models.py b/district/models.py index cf218bfb13216c3688b58fb4c79120dcaea39d65..58f02a2ca6b5f15c5f1c1277efa73d9e0b120cd1 100644 --- a/district/models.py +++ b/district/models.py @@ -233,6 +233,7 @@ class DistrictHomePage( FieldPanel("instagram"), FieldPanel("flickr"), FieldPanel("forum"), + FieldPanel("mastodon_feed"), ], gettext_lazy("Odkazy na webu"), ), @@ -258,7 +259,6 @@ class DistrictHomePage( gettext_lazy("Nastavení lišty s kalendářem a mapou"), ), FieldPanel("fallback_image"), - FieldPanel("mastodon_feed"), ] ### EDIT HANDLERS @@ -361,7 +361,6 @@ class DistrictArticlePage( ArticleMixin, ExtendedMetadataPageMixin, SubpageMixin, - MastodonFeedMixin, MetadataPageMixin, Page, ): @@ -388,7 +387,6 @@ class DistrictArticlePage( FieldPanel("is_black"), FieldPanel("tags"), FieldPanel("thumb_image"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels( @@ -429,7 +427,6 @@ class DistrictArticlesPage( RoutablePageMixin, ExtendedMetadataPageMixin, SubpageMixin, - MastodonFeedMixin, MetadataPageMixin, Page, ): @@ -444,7 +441,6 @@ class DistrictArticlesPage( content_panels = Page.content_panels + [ FieldPanel("max_items"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels() @@ -567,7 +563,7 @@ class DistrictArticlesPage( class DistrictContactPage( - ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin, Page + ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page ): ### FIELDS @@ -584,7 +580,6 @@ class DistrictContactPage( content_panels = Page.content_panels + [ FieldPanel("contact_people"), FieldPanel("text"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels() @@ -717,8 +712,8 @@ class DistrictPersonPage( FieldPanel("youtube_url"), FieldPanel("flickr_url"), FieldPanel("custom_web_url"), - FieldPanel("other_urls"), FieldPanel("mastodon_feed"), + FieldPanel("other_urls"), ], "Sociální sítě", ), @@ -814,7 +809,7 @@ class DistrictPeoplePage( class DistrictElectionBasePage( - ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin, Page + ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page ): ### FIELDS @@ -832,7 +827,6 @@ class DistrictElectionBasePage( content_panels = Page.content_panels + [ FieldPanel("content"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels() @@ -877,7 +871,6 @@ class DistrictPostElectionStrategyPage( content_panels = DistrictElectionBasePage.content_panels + [ FieldPanel("perex"), - FieldPanel("mastodon_feed"), ] ### RELATIONS @@ -920,7 +913,6 @@ class DistrictElectionProgramPage( PageChooserPanel("guarantor"), FieldPanel("image"), FieldPanel("perex"), - FieldPanel("mastodon_feed"), ] ### RELATIONS @@ -1048,7 +1040,6 @@ class DistrictElectionCampaignPage(DistrictElectionBasePage): "Hero banner", ), FieldPanel("order"), - FieldPanel("mastodon_feed"), ] ### RELATIONS @@ -1135,7 +1126,7 @@ class DistrictElectionRootPage(RoutablePageMixin, Page): class DistrictInteractiveProgramPage( - ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin, Page + ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page ): ### FIELDS @@ -1152,7 +1143,6 @@ class DistrictInteractiveProgramPage( content_panels = Page.content_panels + [ FieldPanel("perex"), FieldPanel("content"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels() @@ -1182,7 +1172,7 @@ class DistrictInteractiveProgramPage( class DistrictProgramPage( - ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin, Page + ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page ): ### FIELDS @@ -1202,7 +1192,6 @@ class DistrictProgramPage( content_panels = Page.content_panels + [ FieldPanel("perex"), FieldPanel("content"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels() @@ -1235,7 +1224,6 @@ class DistrictCenterPage( CalendarMixin, ExtendedMetadataPageMixin, SubpageMixin, - MastodonFeedMixin, MetadataPageMixin, Page, ): @@ -1282,7 +1270,6 @@ class DistrictCenterPage( FieldPanel("content"), FieldPanel("calendar_url"), FieldPanel("sidebar_content"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels() @@ -1336,7 +1323,7 @@ class DistrictCenterPage( class DistrictCrossroadPage( - ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin, Page + ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page ): ### FIELDS @@ -1363,7 +1350,6 @@ class DistrictCrossroadPage( content_panels = Page.content_panels + [ FieldPanel("cards_content"), FieldPanel("content"), - FieldPanel("mastodon_feed"), ] promote_panels = make_promote_panels() @@ -1432,7 +1418,7 @@ class DistrictCustomPage( class DistrictGeoFeatureCollectionPage( - ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin, Page + ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin, Page ): ### FIELDS perex = models.TextField("Perex", null=True) @@ -1516,7 +1502,6 @@ class DistrictGeoFeatureCollectionPage( FieldPanel("promoted_block_title"), FieldPanel("logo_image"), FieldPanel("image"), - FieldPanel("mastodon_feed"), ], "Obsah hlavní stránky kolekce", ), @@ -1653,7 +1638,6 @@ class DistrictGeoFeatureDetailPage( ExtendedMetadataPageMixin, MetadataPageMixin, SubpageMixin, - MastodonFeedMixin, Page, Orderable, ): @@ -1745,7 +1729,6 @@ class DistrictGeoFeatureDetailPage( ), PageChooserPanel("guarantor"), FieldPanel("sort_order"), - FieldPanel("mastodon_feed"), ] settings_panels = [] diff --git a/district/templates/district/base.html b/district/templates/district/base.html index 4431a1deb954e147e96c68425560cc6687c42380..ed4958a6ab6d30467dfd5b2e18e76ca74a99c813 100644 --- a/district/templates/district/base.html +++ b/district/templates/district/base.html @@ -209,7 +209,9 @@ aria-label="Mastodon feed" > <div class="btn__body py-2"> - {% include "shared/mastodon_icon_snippet.html" with size="20" class_name="mr-2" %} + <div class="md:mr-2"> + {% include "shared/mastodon_icon_snippet.html" with size="20" shadow=True %} + </div> <span class="hidden md:block" aria-hidden="true">Mastodon feed</span> </div> </button> diff --git a/senat_campaign/migrations/0011_senatcampaignhomepage_mastodon_feed.py b/senat_campaign/migrations/0011_senatcampaignhomepage_mastodon_feed.py new file mode 100644 index 0000000000000000000000000000000000000000..458129520e1097913db2cf7fb6e7e5f1402b9ee8 --- /dev/null +++ b/senat_campaign/migrations/0011_senatcampaignhomepage_mastodon_feed.py @@ -0,0 +1,21 @@ +# Generated by Django 4.1.8 on 2023-04-24 20:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("senat_campaign", "0010_alter_senatcampaignhomepage_about_gallery_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="senatcampaignhomepage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + ] diff --git a/senat_campaign/models.py b/senat_campaign/models.py index 7b68f07064a4ced0c76fa65e0299c9c045512deb..bd481f029818588e2dad4ba531af86ceedede7f7 100644 --- a/senat_campaign/models.py +++ b/senat_campaign/models.py @@ -19,6 +19,7 @@ from calendar_utils.models import CalendarMixin from shared.models import ( ExtendedMetadataHomePageMixin, ExtendedMetadataPageMixin, + MastodonFeedMixin, SubpageMixin, ) from tuning import admin_help @@ -42,7 +43,11 @@ class ContactBlock(blocks.StructBlock): class SenatCampaignHomePage( - Page, ExtendedMetadataHomePageMixin, MetadataPageMixin, CalendarMixin + Page, + ExtendedMetadataHomePageMixin, + MetadataPageMixin, + MastodonFeedMixin, + CalendarMixin, ): ### FIELDS @@ -180,6 +185,7 @@ class SenatCampaignHomePage( FieldPanel("instagram"), FieldPanel("twitter"), FieldPanel("linkedin"), + FieldPanel("mastodon_feed"), ], heading="Sociální sítě", ), diff --git a/senat_campaign/templates/senat_campaign/base.html b/senat_campaign/templates/senat_campaign/base.html index 12f90ae58568359ea2a8c5ce04b2e4c7546a407e..24f1dd13e37d6d84e45e53f21504fcd8f93e6595 100644 --- a/senat_campaign/templates/senat_campaign/base.html +++ b/senat_campaign/templates/senat_campaign/base.html @@ -50,7 +50,7 @@ <div class="row align-items-center"> <div class="col-md-6"> <div class="header__socials header__socials--desktop"> - {% include "senat_campaign/socials_snippet.html" %} + {% include "senat_campaign/socials_snippet.html" with masto_link_size=14 %} </div> </div> <div class="col-md-6 text-right"> @@ -137,7 +137,7 @@ </li> </ul> <div class="header__socials header__socials--mobile d-xl-none mb-2"> - {% include "senat_campaign/socials_snippet.html" %} + {% include "senat_campaign/socials_snippet.html" with masto_link_size=20 %} </div> {% if page.root_page.has_donations %} <a href="{{ page.root_page.donations_url }}" class="btn btn-success support_buton btn-sm d-xl-none mb-3">Přispěj!<i class="icon-heart ml-2" title="Ikona srdce"></i></a> @@ -161,7 +161,7 @@ </div><!-- /column --> <div class="col-12 col-md-6"> <div class="socials mb-5"> - {% include "senat_campaign/socials_snippet.html" %} + {% include "senat_campaign/socials_snippet.html" with masto_link_size=42 %} </div> </div><!-- /column --> </div> <!-- /row --> diff --git a/senat_campaign/templates/senat_campaign/socials_snippet.html b/senat_campaign/templates/senat_campaign/socials_snippet.html index 6e5004152bf54f23df2fee083245a5669c61fe76..b345460bcd755aded2bc1318034742db4c38a80a 100644 --- a/senat_campaign/templates/senat_campaign/socials_snippet.html +++ b/senat_campaign/templates/senat_campaign/socials_snippet.html @@ -10,3 +10,4 @@ {% if page.root_page.linkedin %} <a href="{{ page.root_page.linkedin }}" target="_blank"><i class="icon-linkedin" title="Profil na LinkedIn"></i></a> {% endif %} +{% include "shared/mastodon_feed_snippet.html" with is_link=True link_size=masto_link_size %} diff --git a/senate/migrations/0006_senatehomepage_mastodon_feed.py b/senate/migrations/0006_senatehomepage_mastodon_feed.py deleted file mode 100644 index c7cb7f5912342d2f4844564c0ba6a980817a1458..0000000000000000000000000000000000000000 --- a/senate/migrations/0006_senatehomepage_mastodon_feed.py +++ /dev/null @@ -1,48 +0,0 @@ -# Generated by Django 4.1.8 on 2023-04-22 16:15 - -import wagtail.blocks -import wagtail.fields -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("senate", "0005_alter_senatehomepage_candidates_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="senatehomepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - ] diff --git a/senate/models.py b/senate/models.py index 7c26a7bb2392c80e55bf592c85e9f64ff8c42528..ff94da7231bfe5148a8eb5237e57eb02d770cef9 100644 --- a/senate/models.py +++ b/senate/models.py @@ -8,7 +8,6 @@ from wagtail.images.edit_handlers import FieldPanel from wagtail.models import Page from wagtailmetadata.models import MetadataPageMixin -from shared.models import MastodonFeedMixin from tuning import admin_help @@ -26,7 +25,7 @@ class PersonBlock(blocks.StructBlock): label = "osoba" -class SenateHomePage(MetadataPageMixin, MastodonFeedMixin, Page): +class SenateHomePage(MetadataPageMixin, Page): ### FIELDS senators = StreamField( @@ -73,7 +72,6 @@ class SenateHomePage(MetadataPageMixin, MastodonFeedMixin, Page): settings_panels = [ FieldPanel("matomo_id"), - FieldPanel("mastodon_feed"), CommentPanel(), ] diff --git a/senate/templates/senate/base.html b/senate/templates/senate/base.html index 3c29cdca9876dfe26206d6e02b3abaa461bf2a42..bcbab5841b7526968383e3cdee6b13698747eb1a 100644 --- a/senate/templates/senate/base.html +++ b/senate/templates/senate/base.html @@ -62,7 +62,6 @@ <a href="https://www.instagram.com/pirati.cz/"><i class="fab fa-instagram"></i></a> <a href="https://www.youtube.com/user/CeskaPiratskaStrana"><i class="fab fa-youtube"></i></a> <a href="https://www.flickr.com/photos/pirati/"><i class="fab fa-flickr"></i></a> - {% include "shared/mastodon_feed_snippet.html" with is_link=True %} </div> <a href="https://nalodeni.pirati.cz" class="btn-icon c-green my-1"> <div class="btn-wrap"> diff --git a/shared/blocks.py b/shared/blocks.py index 201977daa577802acf15ef5e277f8ff81d1dfc63..3fe1c43cf76d387c6577d665f959cc6cc857e269 100644 --- a/shared/blocks.py +++ b/shared/blocks.py @@ -1044,24 +1044,6 @@ class ChartBlock(blocks.StructBlock): Zobrazí se tolik definovaných sloupců, kolik existuje skupin.""" -class MastodonFeedBlock(blocks.StructBlock): - url = blocks.URLBlock( - required=True, - label="URL pro mastodon feed", - default="https://mastodon.pirati.cz", - ) - user_name = blocks.CharBlock( - required=True, - label="Uživatelské jméno pro mastodon", - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - ) - - class Meta: - label = "Odkaz na mastodon feed" - icon = "link" - template = "shared/blocks/mastodon_feed_block.html" - - DEFAULT_CONTENT_BLOCKS = [ ( "text", diff --git a/shared/models.py b/shared/models.py index b93f060756aeaa6132b6b402911499131d7c24cf..7bc9055420ab5ef3caf9ed75fbe88741d48376ac 100644 --- a/shared/models.py +++ b/shared/models.py @@ -6,25 +6,16 @@ from wagtail.admin.panels import FieldPanel, MultiFieldPanel, PublishingPanel from wagtail.fields import StreamField from wagtail.models import Page -from shared.blocks import ( - DEFAULT_CONTENT_BLOCKS, - MastodonFeedBlock, - MenuItemBlock, - MenuParentBlock, -) +from shared.blocks import DEFAULT_CONTENT_BLOCKS, MenuItemBlock, MenuParentBlock logger = logging.getLogger(__name__) class MastodonFeedMixin(models.Model): - mastodon_feed = StreamField( - [ - ("mastodon_feed", MastodonFeedBlock()), - ], + mastodon_feed = models.URLField( verbose_name="Mastodon feed", blank=True, - use_json_field=True, - max_num=1, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", ) class Meta: diff --git a/shared/templates/shared/blocks/mastodon_feed_block.html b/shared/templates/shared/blocks/mastodon_feed_block.html deleted file mode 100644 index 7bda2afd6e5d69feb609f1f0c4f8a298296c09c0..0000000000000000000000000000000000000000 --- a/shared/templates/shared/blocks/mastodon_feed_block.html +++ /dev/null @@ -1,13 +0,0 @@ -{% load static shared_filters %} - -{% if is_link %} - <a href="{{ self.url | mastodon_url:self.user_name }}" class="social-icon ">{% include "shared/mastodon_icon_snippet.html" with size="14" invert=True %}</a> -{% else %} - <iframe - allowfullscreen - sandbox="allow-top-navigation allow-scripts allow-popups allow-popups-to-escape-sandbox" - width="400" - height="400" - src="https://mastofeed.com/apiv2/feed?userurl={{ self.url | mastodon_url:self.user_name | urlencode:'' }}&theme=dark&size=100&header=true&replies=false&boosts=false"> - </iframe> -{% endif %} diff --git a/shared/templates/shared/mastodon_feed_snippet.html b/shared/templates/shared/mastodon_feed_snippet.html index b3daaa727680562b4e5f1cd54451a23afa2e6bde..24a34a74c53ce3f4edad7c367bf042bdfc576a12 100644 --- a/shared/templates/shared/mastodon_feed_snippet.html +++ b/shared/templates/shared/mastodon_feed_snippet.html @@ -1,7 +1,25 @@ -{% load wagtailcore_tags shared_filters %} - {% if page.mastodon_feed %} - {% include_block page.mastodon_feed with is_link=is_link %} + {% if is_link %} + <a href="{{ page.mastodon_feed }}" class="social-icon ">{% include "shared/mastodon_icon_snippet.html" with size=link_size invert=True %}</a> + {% else %} + <iframe + allowfullscreen + sandbox="allow-top-navigation allow-scripts allow-popups allow-popups-to-escape-sandbox" + width="400" + height="400" + src="https://mastofeed.com/apiv2/feed?userurl={{ page.mastodon_feed | urlencode:'' }}&theme=dark&size=100&header=true&replies=false&boosts=false"> + </iframe> + {% endif %} {% elif page.root_page.mastodon_feed %} - {% include_block page.root_page.mastodon_feed with is_link=is_link %} + {% if is_link %} + <a href="{{ page.root_page.mastodon_feed }}" class="social-icon ">{% include "shared/mastodon_icon_snippet.html" with size=link_size invert=True %}</a> + {% else %} + <iframe + allowfullscreen + sandbox="allow-top-navigation allow-scripts allow-popups allow-popups-to-escape-sandbox" + width="400" + height="400" + src="https://mastofeed.com/apiv2/feed?userurl={{ page.root_page.mastodon_feed | urlencode:'' }}&theme=dark&size=100&header=true&replies=false&boosts=false"> + </iframe> + {% endif %} {% endif %} diff --git a/shared/templates/shared/mastodon_icon_snippet.html b/shared/templates/shared/mastodon_icon_snippet.html index ca9df0c7e765fd69bc6f463f79c1112458aaec00..7b2b93b8a5ec36a8792cda025746de5a28c2f81b 100644 --- a/shared/templates/shared/mastodon_icon_snippet.html +++ b/shared/templates/shared/mastodon_icon_snippet.html @@ -3,10 +3,15 @@ <img src="{% static 'shared/svg/share-icons/mastodon-brands.svg' %}" alt="Sdílet na Mastodonu" - class="{{ class_name }}" - height="{{ size }}" - width="{{ size }}" + height="{% firstof size 14 %}" + width="{% firstof size 14 %}" {% if invert %} - style="filter: invert(1)" + {% if shadow %} + style="filter: invert(1), drop-shadow(0px 0px 4px #000);" + {% else %} + style="filter: invert(1)" + {% endif %} + {% elif shadow %} + style="filter: drop-shadow(0px 0px 4px #fff);" {% endif %} > diff --git a/shared/templatetags/shared_filters.py b/shared/templatetags/shared_filters.py index 547d296fbe416b0fad1abf276eae61e7345169f1..2f06f9ad6a92564d9e3e51757ad0d935f2f7f84f 100644 --- a/shared/templatetags/shared_filters.py +++ b/shared/templatetags/shared_filters.py @@ -1,6 +1,5 @@ import markdown as md from django import template -from django.utils.http import urlencode as urlencodeInternal from django.utils.safestring import mark_safe register = template.Library() @@ -10,15 +9,3 @@ register = template.Library() def markdown(value): """Prekonvertuje vstupni text na markdown, necekane""" return mark_safe(md.markdown(value)) - - -@register.filter -def mastodon_url(url: str | None, user_name: str | None = None): - """ - Gets mastodon url - """ - if url is None or url == "/": - return "https://mastodon.pirati.cz" - if user_name is None or user_name == "": - return url - return url + "/users/" + user_name diff --git a/uniweb/migrations/0042_uniwebarticlepage_mastodon_feed_and_more.py b/uniweb/migrations/0042_uniwebarticlepage_mastodon_feed_and_more.py deleted file mode 100644 index 9a98aec6f16e8c937d5b9f61b2cec6a5f3888e96..0000000000000000000000000000000000000000 --- a/uniweb/migrations/0042_uniwebarticlepage_mastodon_feed_and_more.py +++ /dev/null @@ -1,252 +0,0 @@ -# Generated by Django 4.1.8 on 2023-04-22 16:15 - -import wagtail.blocks -import wagtail.fields -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("uniweb", "0041_alter_uniwebflexiblepage_content_and_more"), - ] - - operations = [ - migrations.AddField( - model_name="uniwebarticlepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="uniwebarticlesindexpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="uniwebflexiblepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="uniwebformpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="uniwebhomepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="uniwebpeoplepage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - migrations.AddField( - model_name="uniwebpersonpage", - name="mastodon_feed", - field=wagtail.fields.StreamField( - [ - ( - "mastodon_feed", - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.URLBlock( - default="https://mastodon.pirati.cz", - label="URL pro mastodon feed", - required=True, - ), - ), - ( - "user_name", - wagtail.blocks.CharBlock( - help_text="Uživatelské jméno vyplňte bez '@' a bez jména feedu. Příklad: 'ivanbartos'", - label="Uživatelské jméno pro mastodon", - required=True, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - verbose_name="Mastodon feed", - ), - ), - ] diff --git a/uniweb/migrations/0042_uniwebhomepage_mastodon_feed_and_more.py b/uniweb/migrations/0042_uniwebhomepage_mastodon_feed_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..8bf97783bb57c86f032afc00d358605bb6908828 --- /dev/null +++ b/uniweb/migrations/0042_uniwebhomepage_mastodon_feed_and_more.py @@ -0,0 +1,39 @@ +# Generated by Django 4.1.8 on 2023-04-24 20:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("uniweb", "0041_alter_uniwebflexiblepage_content_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="uniwebhomepage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + migrations.AddField( + model_name="uniwebpeoplepage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + migrations.AddField( + model_name="uniwebpersonpage", + name="mastodon_feed", + field=models.URLField( + blank=True, + help_text="Zadejte mastodon feed url v tomto formátu: https://mastodon.pirati.cz/users/ivanbartos", + verbose_name="Mastodon feed", + ), + ), + ] diff --git a/uniweb/models.py b/uniweb/models.py index 32aba6fb5ba92b1a52bb03599dcd4d23bb6b16be..f3b9194ea81a51dd7999e6992f2c01d95f68f4d2 100644 --- a/uniweb/models.py +++ b/uniweb/models.py @@ -411,7 +411,7 @@ class UniwebHomePage( class UniwebFlexiblePage( - Page, ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin + Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin ): ### FIELDS @@ -428,7 +428,6 @@ class UniwebFlexiblePage( content_panels = Page.content_panels + [ FieldPanel("content"), - FieldPanel("mastodon_feed"), ] settings_panels = [] @@ -449,7 +448,7 @@ class UniwebFlexiblePage( class UniwebArticlesIndexPage( - Page, ExtendedMetadataPageMixin, SubpageMixin, MastodonFeedMixin, MetadataPageMixin + Page, ExtendedMetadataPageMixin, SubpageMixin, MetadataPageMixin ): ### FIELDS @@ -492,7 +491,6 @@ class UniwebArticlePage( ArticleMixin, ExtendedMetadataPageMixin, SubpageMixin, - MastodonFeedMixin, MetadataPageMixin, Page, ): @@ -540,7 +538,6 @@ class UniwebFormPage( AbstractForm, ExtendedMetadataPageMixin, SubpageMixin, - MastodonFeedMixin, MetadataPageMixin, ): ### FIELDS @@ -715,6 +712,7 @@ class UniwebPersonPage( FieldPanel("flickr_url"), FieldPanel("custom_web_url"), FieldPanel("other_urls"), + FieldPanel("mastodon_feed"), ], "Sociální sítě", ),