From 7daefb85354e3e30e713913dd7bbcfbafaf95c4d Mon Sep 17 00:00:00 2001 From: Andy Chosak Date: Thu, 3 Aug 2023 11:03:30 -0400 Subject: [PATCH 1/3] Delete replaced migrations from last squash Removes `replaces` clause from new squashed migrations, and delete old migrations that were replaced. --- .../0001_squashed_0004_new_table_block.py | 3 - ...0047_add_use_json_field_to_streamfields.py | 2897 - ...0002_remove_answerpage_redirect_to_page.py | 17 - .../0003_remove_answerpage_share_and_print.py | 17 - .../migrations/0004_new_table_block.py | 672 - ...0011_add_use_json_field_to_streamfields.py | 8308 -- .../0001_squashed_0014_new_table_block.py | 3 - .../0012_remove_content_image_bleed_option.py | 8153 -- .../migrations/0013_fig_no_tables.py | 8147 -- .../migrations/0014_new_table_block.py | 8532 -- ...0006_add_use_json_field_to_streamfields.py | 902 - .../0001_squashed_0008_new_table_block.py | 3 - .../0007_remove_content_image_bleed_option.py | 717 - .../migrations/0008_new_table_block.py | 809 - ...0018_add_use_json_field_to_streamfields.py | 12877 --- .../0001_squashed_0020_new_table_block.py | 3 - .../0019_remove_content_image_bleed_option.py | 2590 - .../migrations/0020_new_table_block.py | 2778 - ...0036_add_use_json_field_to_streamfields.py | 3397 - .../0001_squashed_0038_new_table_block.py | 3 - .../0037_remove_content_image_bleed_option.py | 940 - .../migrations/0038_new_table_block.py | 1128 - ...0235_add_use_json_field_to_streamfields.py | 83891 ---------------- .../0001_squashed_0254_delete_campaignpage.py | 3 - cfgov/v1/migrations/0236_case_docket_table.py | 1299 - .../0237_remove_content_image_bleed_option.py | 14188 --- .../v1/migrations/0238_collapse_oaa_table.py | 1296 - cfgov/v1/migrations/0239_field_cleanup.py | 21 - .../migrations/0240_filterable_list_sort.py | 1151 - .../migrations/0241_remove_filterable_5050.py | 1119 - .../migrations/0242_filterable_list_topics.py | 35 - .../migrations/0243_filterable_list_topics.py | 1095 - .../migrations/0244_deprecate_2ndary_links.py | 21 - .../migrations/0245_alter_emailsignup_url.py | 18 - .../0246_issue_spotlight_category.py | 18 - cfgov/v1/migrations/0247_eap_no_tables.py | 1114 - .../migrations/0248_filterable_list_mixin.py | 92 - .../v1/migrations/0249_populate_filterable.py | 82 - cfgov/v1/migrations/0250_rename_filterable.py | 38 - .../v1/migrations/0251_cleanup_filterable.py | 973 - .../0252_filterable_empty_content.py | 975 - cfgov/v1/migrations/0253_new_table_block.py | 15961 --- .../v1/migrations/0254_delete_campaignpage.py | 20 - 43 files changed, 186306 deletions(-) delete mode 100644 cfgov/ask_cfpb/migrations/0001_squashed_0047_add_use_json_field_to_streamfields.py delete mode 100644 cfgov/ask_cfpb/migrations/0002_remove_answerpage_redirect_to_page.py delete mode 100644 cfgov/ask_cfpb/migrations/0003_remove_answerpage_share_and_print.py delete mode 100644 cfgov/ask_cfpb/migrations/0004_new_table_block.py delete mode 100644 cfgov/filing_instruction_guide/migrations/0001_squashed_0011_add_use_json_field_to_streamfields.py delete mode 100644 cfgov/filing_instruction_guide/migrations/0012_remove_content_image_bleed_option.py delete mode 100644 cfgov/filing_instruction_guide/migrations/0013_fig_no_tables.py delete mode 100644 cfgov/filing_instruction_guide/migrations/0014_new_table_block.py delete mode 100644 cfgov/form_explainer/migrations/0001_squashed_0006_add_use_json_field_to_streamfields.py delete mode 100644 cfgov/form_explainer/migrations/0007_remove_content_image_bleed_option.py delete mode 100644 cfgov/form_explainer/migrations/0008_new_table_block.py delete mode 100644 cfgov/paying_for_college/migrations/0001_squashed_0018_add_use_json_field_to_streamfields.py delete mode 100644 cfgov/paying_for_college/migrations/0019_remove_content_image_bleed_option.py delete mode 100644 cfgov/paying_for_college/migrations/0020_new_table_block.py delete mode 100644 cfgov/regulations3k/migrations/0001_squashed_0036_add_use_json_field_to_streamfields.py delete mode 100644 cfgov/regulations3k/migrations/0037_remove_content_image_bleed_option.py delete mode 100644 cfgov/regulations3k/migrations/0038_new_table_block.py delete mode 100644 cfgov/v1/migrations/0001_squashed_0235_add_use_json_field_to_streamfields.py delete mode 100644 cfgov/v1/migrations/0236_case_docket_table.py delete mode 100644 cfgov/v1/migrations/0237_remove_content_image_bleed_option.py delete mode 100644 cfgov/v1/migrations/0238_collapse_oaa_table.py delete mode 100644 cfgov/v1/migrations/0239_field_cleanup.py delete mode 100644 cfgov/v1/migrations/0240_filterable_list_sort.py delete mode 100644 cfgov/v1/migrations/0241_remove_filterable_5050.py delete mode 100644 cfgov/v1/migrations/0242_filterable_list_topics.py delete mode 100644 cfgov/v1/migrations/0243_filterable_list_topics.py delete mode 100644 cfgov/v1/migrations/0244_deprecate_2ndary_links.py delete mode 100644 cfgov/v1/migrations/0245_alter_emailsignup_url.py delete mode 100644 cfgov/v1/migrations/0246_issue_spotlight_category.py delete mode 100644 cfgov/v1/migrations/0247_eap_no_tables.py delete mode 100644 cfgov/v1/migrations/0248_filterable_list_mixin.py delete mode 100644 cfgov/v1/migrations/0249_populate_filterable.py delete mode 100644 cfgov/v1/migrations/0250_rename_filterable.py delete mode 100644 cfgov/v1/migrations/0251_cleanup_filterable.py delete mode 100644 cfgov/v1/migrations/0252_filterable_empty_content.py delete mode 100644 cfgov/v1/migrations/0253_new_table_block.py delete mode 100644 cfgov/v1/migrations/0254_delete_campaignpage.py diff --git a/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py b/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py index b70e1052388..0c3a7850d49 100644 --- a/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py +++ b/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py @@ -17,9 +17,6 @@ class Migration(migrations.Migration): - - replaces = [('ask_cfpb', '0001_squashed_0047_add_use_json_field_to_streamfields'), ('ask_cfpb', '0002_remove_answerpage_redirect_to_page'), ('ask_cfpb', '0003_remove_answerpage_share_and_print'), ('ask_cfpb', '0004_new_table_block')] - initial = True dependencies = [ diff --git a/cfgov/ask_cfpb/migrations/0001_squashed_0047_add_use_json_field_to_streamfields.py b/cfgov/ask_cfpb/migrations/0001_squashed_0047_add_use_json_field_to_streamfields.py deleted file mode 100644 index 93649d06bd1..00000000000 --- a/cfgov/ask_cfpb/migrations/0001_squashed_0047_add_use_json_field_to_streamfields.py +++ /dev/null @@ -1,2897 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-25 14:20 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - -import wagtail.blocks -import wagtail.contrib.routable_page.models -import wagtail.fields -import wagtail.images.blocks -import wagtail.search.index -import wagtail.snippets.blocks - -import modelcluster.fields - -import v1.atomic_elements.molecules -import v1.atomic_elements.tables -import v1.blocks -import v1.models.snippets - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("v1", "0001_squashed_0235_add_use_json_field_to_streamfields"), - ("wagtailforms", "0005_alter_formsubmission_form_data"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("wagtailredirects", "0008_add_verbose_name_plural"), - ("wagtailinventory", "0003_pageblock_id_bigautofield"), - ("wagtailcore", "0069_log_entry_jsonfield"), - ] - - operations = [ - migrations.CreateModel( - name="Answer", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("question", models.TextField(blank=True)), - ("created_at", models.DateTimeField(auto_now_add=True)), - ( - "last_user", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - ), - ), - ], - options={ - "ordering": ["-id"], - }, - ), - migrations.CreateModel( - name="AnswerLandingPage", - fields=[ - ( - "landingpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.landingpage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.landingpage",), - ), - migrations.CreateModel( - name="AnswerResultsPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="ArticlePage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "category", - models.CharField( - choices=[ - ("basics", "Basics"), - ("common_issues", "Common issues"), - ("howto", "How to"), - ("know_your_rights", "Know your rights"), - ], - max_length=255, - ), - ), - ("heading", models.CharField(max_length=255)), - ("intro", models.TextField()), - ( - "inset_heading", - models.CharField( - blank=True, max_length=255, verbose_name="Heading" - ), - ), - ( - "sections", - wagtail.fields.StreamField( - [ - ( - "section", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - label="Section heading", - max_length=255, - required=True, - ), - ), - ( - "summary", - wagtail.blocks.TextBlock( - blank=True, - label="Section summary", - required=False, - ), - ), - ( - "link_text", - wagtail.blocks.CharBlock( - blank=True, - label="Section link text", - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - blank=True, - label="Section link URL", - max_length=255, - required=False, - ), - ), - ( - "subsections", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - blank=True, - label="Subsection heading", - max_length=255, - required=False, - ), - ), - ( - "summary", - wagtail.blocks.TextBlock( - blank=True, - label="Subsection summary", - required=False, - ), - ), - ( - "link_text", - wagtail.blocks.CharBlock( - label="Subsection link text", - required=True, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - label="Subsection link URL", - required=True, - ), - ), - ] - ) - ), - ), - ] - ), - ) - ], - use_json_field=None, - ), - ), - ( - "sidebar", - wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="Category", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=255)), - ("name_es", models.CharField(max_length=255)), - ("slug", models.SlugField(help_text="Do not edit this field")), - ( - "slug_es", - models.SlugField(help_text="Do not edit this field"), - ), - ( - "intro", - wagtail.fields.RichTextField( - blank=True, - help_text="Do not use H2, H3, H4, or H5 to style this text. Do not add links, images, videos or other rich text elements.", - ), - ), - ( - "intro_es", - wagtail.fields.RichTextField( - blank=True, - help_text="Do not use this field. It is not currently displayed on the front end.", - ), - ), - ( - "category_image", - models.ForeignKey( - blank=True, - help_text="Select a custom image to appear when visitors share pages belonging to this category on social media.", - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="v1.cfgovimage", - ), - ), - ], - options={ - "verbose_name_plural": "Categories", - "ordering": ["name"], - }, - ), - migrations.CreateModel( - name="NextStep", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("title", models.CharField(max_length=255)), - ("show_title", models.BooleanField(default=False)), - ("text", wagtail.fields.RichTextField(blank=True)), - ], - ), - migrations.CreateModel( - name="PortalSearchPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ("overview", models.TextField(blank=True)), - ( - "portal_topic", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="portal_search_pages", - to="v1.portaltopic", - ), - ), - ], - options={ - "abstract": False, - }, - bases=( - wagtail.contrib.routable_page.models.RoutablePageMixin, - "v1.cfgovpage", - ), - ), - migrations.CreateModel( - name="TagResultsPage", - fields=[ - ( - "answerresultspage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="ask_cfpb.answerresultspage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=( - wagtail.contrib.routable_page.models.RoutablePageMixin, - "ask_cfpb.answerresultspage", - ), - ), - migrations.CreateModel( - name="ArticleLink", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "sort_order", - models.IntegerField(blank=True, editable=False, null=True), - ), - ("text", models.CharField(max_length=255)), - ("url", models.CharField(max_length=255)), - ( - "article_page", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="article_links", - to="ask_cfpb.articlepage", - ), - ), - ], - options={ - "ordering": ["sort_order"], - "abstract": False, - }, - ), - migrations.CreateModel( - name="AnswerPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "last_edited", - models.DateField( - blank=True, - help_text="Change the date to today if you make a significant change.", - null=True, - ), - ), - ("question", models.TextField(blank=True)), - ( - "statement", - models.TextField( - blank=True, - help_text="(Optional) Use this field to rephrase the question title as a statement. Use only if this answer has been chosen to appear on a money topic portal (e.g. /consumer-tools/debt-collection).", - ), - ), - ( - "short_answer", - wagtail.fields.RichTextField( - blank=True, help_text="Optional answer intro" - ), - ), - ( - "answer_content", - wagtail.fields.StreamField( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h2", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - verbose_name="Answer", - ), - ), - ( - "featured", - models.BooleanField( - default=False, - help_text="Check to make this one of two featured answers on the landing page.", - ), - ), - ("featured_rank", models.IntegerField(blank=True, null=True)), - ( - "search_tags", - models.CharField( - blank=True, - help_text="Search words or phrases, separated by commas", - max_length=1000, - ), - ), - ( - "sidebar", - wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "rss_feed", - v1.atomic_elements.molecules.RSSFeed(), - ), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "answer_base", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="answer_pages", - to="ask_cfpb.answer", - ), - ), - ( - "category", - models.ManyToManyField( - blank=True, - help_text="Categorize this answer. Avoid putting into more than one category.", - to="ask_cfpb.Category", - ), - ), - ( - "portal_category", - modelcluster.fields.ParentalManyToManyField( - blank=True, to="v1.PortalCategory" - ), - ), - ( - "portal_topic", - modelcluster.fields.ParentalManyToManyField( - blank=True, - help_text="Limit to 1 portal topic if possible", - to="v1.PortalTopic", - ), - ), - ( - "primary_portal_topic", - modelcluster.fields.ParentalKey( - blank=True, - help_text="Use only if assigning more than one portal topic, to control which topic is used as a breadcrumb.", - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="primary_portal_topic", - to="v1.portaltopic", - ), - ), - ( - "redirect_to_page", - models.ForeignKey( - blank=True, - help_text="Choose another AnswerPage to redirect this page to", - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="redirect_to_pages", - to="ask_cfpb.answerpage", - ), - ), - ( - "related_questions", - modelcluster.fields.ParentalManyToManyField( - blank=True, - help_text="Maximum of 3 related questions", - related_name="related_question", - to="ask_cfpb.AnswerPage", - ), - ), - ( - "related_resource", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to="v1.relatedresource", - ), - ), - ( - "share_and_print", - models.BooleanField( - default=False, - help_text="Include share and print buttons above answer.", - ), - ), - ( - "notification", - wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ], - help_text="Include only one notification.", - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="GlossaryTerm", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name_en", - models.CharField( - max_length=255, verbose_name="TERM (ENGLISH)" - ), - ), - ( - "definition_en", - wagtail.fields.RichTextField( - blank=True, - null=True, - verbose_name="DEFINITION (ENGLISH)", - ), - ), - ( - "anchor_en", - models.CharField( - blank=True, - max_length=255, - null=True, - verbose_name="ANCHOR SLUG (ENGLISH)", - ), - ), - ( - "name_es", - models.CharField( - blank=True, - max_length=255, - null=True, - verbose_name="TERM (SPANISH)", - ), - ), - ( - "definition_es", - wagtail.fields.RichTextField( - blank=True, - null=True, - verbose_name="DEFINITION (SPANISH)", - ), - ), - ( - "anchor_es", - models.CharField( - blank=True, - max_length=255, - null=True, - verbose_name="ANCHOR SLUG (SPANISH)", - ), - ), - ( - "answer_page_en", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="glossary_terms", - to="ask_cfpb.answerpage", - verbose_name="ANSWER PAGE (ENGLISH)", - ), - ), - ( - "answer_page_es", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="glossary_terms_es", - to="ask_cfpb.answerpage", - verbose_name="ANSWER PAGE (SPANISH)", - ), - ), - ( - "portal_topic", - modelcluster.fields.ParentalKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="glossary_terms", - to="v1.portaltopic", - ), - ), - ], - options={ - "unique_together": {("portal_topic", "name_en")}, - }, - bases=(wagtail.search.index.Indexed, models.Model), - ), - migrations.AlterField( - model_name="answer", - name="last_user", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - ), - ), - migrations.AlterField( - model_name="answerpage", - name="answer_content", - field=wagtail.fields.StreamField( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - help_text="Add an optional anchor link tag to allow linking directly to this block. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'block-one-tag')", - label="Anchor tag", - required=False, - ), - ), - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h2", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=["link", "document-link"], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - verbose_name="Answer", - ), - ), - migrations.AlterField( - model_name="answerpage", - name="notification", - field=wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - migrations.RemoveField( - model_name="articlepage", - name="cfgovpage_ptr", - ), - migrations.DeleteModel( - name="ArticleLink", - ), - migrations.DeleteModel( - name="ArticlePage", - ), - migrations.AlterField( - model_name="answerpage", - name="answer_content", - field=wagtail.fields.StreamField( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - help_text="Add an optional anchor link tag to allow linking directly to this block. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'block-one-tag')", - label="Anchor tag", - required=False, - ), - ), - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h2", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=["link", "document-link"], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - verbose_name="Answer", - ), - ), - migrations.AlterField( - model_name="answerpage", - name="notification", - field=wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="answerpage", - name="sidebar", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/ask_cfpb/migrations/0002_remove_answerpage_redirect_to_page.py b/cfgov/ask_cfpb/migrations/0002_remove_answerpage_redirect_to_page.py deleted file mode 100644 index bc15db1acdf..00000000000 --- a/cfgov/ask_cfpb/migrations/0002_remove_answerpage_redirect_to_page.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-15 16:04 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ask_cfpb', '0001_squashed_0047_add_use_json_field_to_streamfields'), - ] - - operations = [ - migrations.RemoveField( - model_name='answerpage', - name='redirect_to_page', - ), - ] diff --git a/cfgov/ask_cfpb/migrations/0003_remove_answerpage_share_and_print.py b/cfgov/ask_cfpb/migrations/0003_remove_answerpage_share_and_print.py deleted file mode 100644 index b4174f986df..00000000000 --- a/cfgov/ask_cfpb/migrations/0003_remove_answerpage_share_and_print.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-15 16:43 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('ask_cfpb', '0002_remove_answerpage_redirect_to_page'), - ] - - operations = [ - migrations.RemoveField( - model_name='answerpage', - name='share_and_print', - ), - ] diff --git a/cfgov/ask_cfpb/migrations/0004_new_table_block.py b/cfgov/ask_cfpb/migrations/0004_new_table_block.py deleted file mode 100644 index 8fe4d2f4c06..00000000000 --- a/cfgov/ask_cfpb/migrations/0004_new_table_block.py +++ /dev/null @@ -1,672 +0,0 @@ -# Generated by Django 3.2.20 on 2023-07-07 18:35 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.contrib.typed_table_block.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("ask_cfpb", "0003_remove_answerpage_share_and_print"), - ] - - operations = [ - migrations.AlterField( - model_name="answerpage", - name="answer_content", - field=wagtail.fields.StreamField( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - help_text="Add an optional anchor link tag to allow linking directly to this block. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'block-one-tag')", - label="Anchor tag", - required=False, - ), - ), - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h2", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=["link", "document-link"], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - verbose_name="Answer", - ), - ), - ] diff --git a/cfgov/filing_instruction_guide/migrations/0001_squashed_0011_add_use_json_field_to_streamfields.py b/cfgov/filing_instruction_guide/migrations/0001_squashed_0011_add_use_json_field_to_streamfields.py deleted file mode 100644 index f923e16921c..00000000000 --- a/cfgov/filing_instruction_guide/migrations/0001_squashed_0011_add_use_json_field_to_streamfields.py +++ /dev/null @@ -1,8308 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-25 14:43 - -import datetime - -import django.db.models.deletion -from django.db import migrations, models - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - -import filing_instruction_guide.blocks -import modelcluster.fields - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("v1", "0001_squashed_0235_add_use_json_field_to_streamfields"), - ] - - operations = [ - migrations.CreateModel( - name="FIGContentPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ("eyebrow", models.CharField(blank=True, max_length=100)), - ("page_header", models.CharField(blank=True, max_length=200)), - ("subheader", models.TextField(blank=True)), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "Fig_Section", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Section header (h2)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ( - "p", - "p", - ), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "data_points_block", - filing_instruction_guide.blocks.FigDataPointsBlock(), - ), - ], - block_counts={ - "data_points_block": { - "max_num": 1 - } - }, - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Subsection header (h3)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ( - "p", - "p", - ), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Level_3_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Level 3 subsection header (h4)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ( - "p", - "p", - ), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ( - "effective_end_date", - models.DateField(blank=True, null=True), - ), - ( - "effective_start_date", - models.DateField( - blank=True, default=datetime.date.today, null=True - ), - ), - ( - "version_status", - models.CharField( - choices=[ - ("current", "Current"), - ("old", "Out-of-date"), - ("archived", "Archived"), - ], - default="current", - max_length=20, - ), - ), - ( - "data_points_download_location", - models.CharField( - blank=True, - help_text="The URL of the raw JSON file containing the FIG data points", - max_length=300, - ), - ), - ( - "top_content", - wagtail.fields.StreamField( - [ - ( - "top_content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - help_text="Content that will appear above the first FIG section", - required=False, - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="DataPoint", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("number", models.IntegerField(blank=True)), - ("title", models.CharField(blank=True, max_length=400)), - ("anchor", models.CharField(blank=True, max_length=400)), - ("rule_section", models.CharField(blank=True, max_length=100)), - ("intro_text", models.TextField(blank=True)), - ( - "page", - modelcluster.fields.ParentalKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="data_points", - to="filing_instruction_guide.figcontentpage", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.CreateModel( - name="DataFieldJson", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("info", models.JSONField(blank=True)), - ( - "data_point", - modelcluster.fields.ParentalKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="data_fields_json", - to="filing_instruction_guide.datapoint", - ), - ), - ], - ), - ] diff --git a/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py b/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py index bf3d22ddcab..434b14a39a0 100644 --- a/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py +++ b/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py @@ -13,9 +13,6 @@ class Migration(migrations.Migration): - - replaces = [('filing_instruction_guide', '0001_squashed_0011_add_use_json_field_to_streamfields'), ('filing_instruction_guide', '0012_remove_content_image_bleed_option'), ('filing_instruction_guide', '0013_fig_no_tables'), ('filing_instruction_guide', '0014_new_table_block')] - initial = True dependencies = [ diff --git a/cfgov/filing_instruction_guide/migrations/0012_remove_content_image_bleed_option.py b/cfgov/filing_instruction_guide/migrations/0012_remove_content_image_bleed_option.py deleted file mode 100644 index 41b7a5a5ff2..00000000000 --- a/cfgov/filing_instruction_guide/migrations/0012_remove_content_image_bleed_option.py +++ /dev/null @@ -1,8153 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-03 22:08 - -from django.db import migrations - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - -import filing_instruction_guide.blocks - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ( - "filing_instruction_guide", - "0001_squashed_0011_add_use_json_field_to_streamfields", - ), - ] - - operations = [ - migrations.AlterField( - model_name="figcontentpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "Fig_Section", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Section header (h2)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "data_points_block", - filing_instruction_guide.blocks.FigDataPointsBlock(), - ), - ], - block_counts={ - "data_points_block": {"max_num": 1} - }, - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Subsection header (h3)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Level_3_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Level 3 subsection header (h4)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="figcontentpage", - name="top_content", - field=wagtail.fields.StreamField( - [ - ( - "top_content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ( - "33-33-33", - "33/33/33", - ), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ( - "rounded", - "Rounded corners", - ), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ( - "datetime", - "Date/time", - ), - ("line", "Line"), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - help_text="Content that will appear above the first FIG section", - required=False, - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/filing_instruction_guide/migrations/0013_fig_no_tables.py b/cfgov/filing_instruction_guide/migrations/0013_fig_no_tables.py deleted file mode 100644 index e53b0decb61..00000000000 --- a/cfgov/filing_instruction_guide/migrations/0013_fig_no_tables.py +++ /dev/null @@ -1,8147 +0,0 @@ -# Generated by Django 3.2.19 on 2023-06-13 18:15 - -from django.db import migrations -import filing_instruction_guide.blocks -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("filing_instruction_guide", "0012_remove_content_image_bleed_option"), - ] - - operations = [ - migrations.AlterField( - model_name="figcontentpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "Fig_Section", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Section header (h2)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "data_points_block", - filing_instruction_guide.blocks.FigDataPointsBlock(), - ), - ], - block_counts={ - "data_points_block": {"max_num": 1} - }, - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Subsection header (h3)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Level_3_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Level 3 subsection header (h4)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="figcontentpage", - name="top_content", - field=wagtail.fields.StreamField( - [ - ( - "top_content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ( - "33-33-33", - "33/33/33", - ), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ( - "rounded", - "Rounded corners", - ), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ( - "datetime", - "Date/time", - ), - ("line", "Line"), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - help_text="Content that will appear above the first FIG section", - required=False, - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/filing_instruction_guide/migrations/0014_new_table_block.py b/cfgov/filing_instruction_guide/migrations/0014_new_table_block.py deleted file mode 100644 index 215ac90ecf7..00000000000 --- a/cfgov/filing_instruction_guide/migrations/0014_new_table_block.py +++ /dev/null @@ -1,8532 +0,0 @@ -# Generated by Django 3.2.20 on 2023-07-07 18:35 - -from django.db import migrations -import filing_instruction_guide.blocks -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.contrib.typed_table_block.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("filing_instruction_guide", "0013_fig_no_tables"), - ] - - operations = [ - migrations.AlterField( - model_name="figcontentpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "Fig_Section", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Section header (h2)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "data_points_block", - filing_instruction_guide.blocks.FigDataPointsBlock(), - ), - ], - block_counts={ - "data_points_block": {"max_num": 1} - }, - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Subsection header (h3)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "Fig_Level_3_Subsection", - wagtail.blocks.StructBlock( - [ - ( - "header", - wagtail.blocks.TextBlock( - label="Level 3 subsection header (h4)" - ), - ), - ( - "section_id", - wagtail.blocks.TextBlock( - help_text="Will be filled in automatically upon save.", - required=False, - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar", - ), - ( - "datetime", - "Date/time", - ), - ( - "line", - "Line", - ), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "70", - "70%", - ), - ( - "66", - "66%", - ), - ( - "60", - "60%", - ), - ( - "50", - "50%", - ), - ( - "40", - "40%", - ), - ( - "33", - "33%", - ), - ( - "30", - "30%", - ), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "h2", - ), - ( - "h3", - "h3", - ), - ( - "h4", - "h4", - ), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="figcontentpage", - name="top_content", - field=wagtail.fields.StreamField( - [ - ( - "top_content", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ( - "33-33-33", - "33/33/33", - ), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ( - "rounded", - "Rounded corners", - ), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ( - "datetime", - "Date/time", - ), - ("line", "Line"), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - help_text="Content that will appear above the first FIG section", - required=False, - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/form_explainer/migrations/0001_squashed_0006_add_use_json_field_to_streamfields.py b/cfgov/form_explainer/migrations/0001_squashed_0006_add_use_json_field_to_streamfields.py deleted file mode 100644 index 4f2abff0c3e..00000000000 --- a/cfgov/form_explainer/migrations/0001_squashed_0006_add_use_json_field_to_streamfields.py +++ /dev/null @@ -1,902 +0,0 @@ -# Generated by Django 3.2.18 on 2023-04-25 14:44 - -import django.db.models.deletion -from django.db import migrations, models - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("v1", "0001_squashed_0235_add_use_json_field_to_streamfields"), - ] - - operations = [ - migrations.CreateModel( - name="FormExplainerPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "explainer", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - label="Heading (optional)", - required=False, - ), - ), - ( - "pages", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", - required=True, - ), - ), - ( - "categories", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - help_text="Optional. Leave blank if there is only one type of note for this image.", - label="Category title", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - label="Expandable header", - required=True, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "link", - "document-link", - ], - label="Expandable text", - required=True, - ), - ), - ( - "coordinates", - wagtail.blocks.StructBlock( - [ - ( - "left", - wagtail.blocks.FloatBlock( - label="X value (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "top", - wagtail.blocks.FloatBlock( - label="Y value (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "width", - wagtail.blocks.FloatBlock( - label="Width (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "height", - wagtail.blocks.FloatBlock( - label="Height (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ], - form_classname="coordinates", - help_text='Enter percentage values for the highlighted area of the image associated with this expandable. See Hubcap documentation for more information on identifying coordinates.', - label="Image coordinates", - ), - ), - ], - form_classname="explainer_notes", - required=False, - ), - default=[], - ), - ), - ], - required=False, - ) - ), - ), - ], - required=False, - ) - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ( - "rounded", - "Rounded corners", - ), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - ] diff --git a/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py b/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py index ce8c1e20b43..c9b408f8a2e 100644 --- a/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py +++ b/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py @@ -10,9 +10,6 @@ class Migration(migrations.Migration): - - replaces = [('form_explainer', '0001_squashed_0006_add_use_json_field_to_streamfields'), ('form_explainer', '0007_remove_content_image_bleed_option'), ('form_explainer', '0008_new_table_block')] - initial = True dependencies = [ diff --git a/cfgov/form_explainer/migrations/0007_remove_content_image_bleed_option.py b/cfgov/form_explainer/migrations/0007_remove_content_image_bleed_option.py deleted file mode 100644 index 587bad96a2a..00000000000 --- a/cfgov/form_explainer/migrations/0007_remove_content_image_bleed_option.py +++ /dev/null @@ -1,717 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-03 22:08 - -from django.db import migrations - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ( - "form_explainer", - "0001_squashed_0006_add_use_json_field_to_streamfields", - ), - ] - - operations = [ - migrations.AlterField( - model_name="formexplainerpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "explainer", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - label="Heading (optional)", - required=False, - ), - ), - ( - "pages", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", - required=True, - ), - ), - ( - "categories", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - help_text="Optional. Leave blank if there is only one type of note for this image.", - label="Category title", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - label="Expandable header", - required=True, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "link", - "document-link", - ], - label="Expandable text", - required=True, - ), - ), - ( - "coordinates", - wagtail.blocks.StructBlock( - [ - ( - "left", - wagtail.blocks.FloatBlock( - label="X value (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "top", - wagtail.blocks.FloatBlock( - label="Y value (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "width", - wagtail.blocks.FloatBlock( - label="Width (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "height", - wagtail.blocks.FloatBlock( - label="Height (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ], - form_classname="coordinates", - help_text='Enter percentage values for the highlighted area of the image associated with this expandable. See Hubcap documentation for more information on identifying coordinates.', - label="Image coordinates", - ), - ), - ], - form_classname="explainer_notes", - required=False, - ), - default=[], - ), - ), - ], - required=False, - ) - ), - ), - ], - required=False, - ) - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ] diff --git a/cfgov/form_explainer/migrations/0008_new_table_block.py b/cfgov/form_explainer/migrations/0008_new_table_block.py deleted file mode 100644 index 4bda96cb728..00000000000 --- a/cfgov/form_explainer/migrations/0008_new_table_block.py +++ /dev/null @@ -1,809 +0,0 @@ -# Generated by Django 3.2.20 on 2023-07-07 18:35 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.contrib.typed_table_block.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("form_explainer", "0007_remove_content_image_bleed_option"), - ] - - operations = [ - migrations.AlterField( - model_name="formexplainerpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "explainer", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - label="Heading (optional)", - required=False, - ), - ), - ( - "pages", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", - required=True, - ), - ), - ( - "categories", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - help_text="Optional. Leave blank if there is only one type of note for this image.", - label="Category title", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - label="Expandable header", - required=True, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "link", - "document-link", - ], - label="Expandable text", - required=True, - ), - ), - ( - "coordinates", - wagtail.blocks.StructBlock( - [ - ( - "left", - wagtail.blocks.FloatBlock( - label="X value (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "top", - wagtail.blocks.FloatBlock( - label="Y value (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "width", - wagtail.blocks.FloatBlock( - label="Width (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ( - "height", - wagtail.blocks.FloatBlock( - label="Height (in percentage)", - max_value=100, - min_value=0, - required=True, - ), - ), - ], - form_classname="coordinates", - help_text='Enter percentage values for the highlighted area of the image associated with this expandable. See Hubcap documentation for more information on identifying coordinates.', - label="Image coordinates", - ), - ), - ], - form_classname="explainer_notes", - required=False, - ), - default=[], - ), - ), - ], - required=False, - ) - ), - ), - ], - required=False, - ) - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ] diff --git a/cfgov/paying_for_college/migrations/0001_squashed_0018_add_use_json_field_to_streamfields.py b/cfgov/paying_for_college/migrations/0001_squashed_0018_add_use_json_field_to_streamfields.py deleted file mode 100644 index 87bdddc95a1..00000000000 --- a/cfgov/paying_for_college/migrations/0001_squashed_0018_add_use_json_field_to_streamfields.py +++ /dev/null @@ -1,12877 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-04 14:47 - -import django.core.validators -import django.db.models.deletion -from django.db import migrations, models - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("wagtailcore", "0060_fix_workflow_unique_constraint"), - ("v1", "0001_squashed_0235_add_use_json_field_to_streamfields"), - ("wagtailinventory", "0001_initial"), - ("wagtailforms", "0004_add_verbose_name_plural"), - ("wagtailredirects", "0006_redirect_increase_max_length"), - ] - - operations = [ - migrations.CreateModel( - name="BAHRate", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("zip5", models.CharField(max_length=5)), - ("value", models.IntegerField()), - ], - ), - migrations.CreateModel( - name="ConstantCap", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=255)), - ( - "slug", - models.CharField( - blank=True, - help_text="VARIABLE NAME FOR JS", - max_length=255, - ), - ), - ("value", models.IntegerField()), - ("note", models.TextField(blank=True)), - ("updated", models.DateField(auto_now=True)), - ], - options={ - "ordering": ["slug"], - }, - ), - migrations.CreateModel( - name="ConstantRate", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("name", models.CharField(max_length=255)), - ( - "slug", - models.CharField( - blank=True, - help_text="VARIABLE NAME FOR JS", - max_length=255, - ), - ), - ("value", models.DecimalField(decimal_places=5, max_digits=6)), - ("note", models.TextField(blank=True)), - ("updated", models.DateField(auto_now=True)), - ], - options={ - "ordering": ["slug"], - }, - ), - migrations.CreateModel( - name="Contact", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "contacts", - models.TextField( - blank=True, help_text="COMMA-SEPARATED LIST OF EMAILS" - ), - ), - ("endpoint", models.CharField(blank=True, max_length=255)), - ("name", models.CharField(blank=True, max_length=255)), - ("internal_note", models.TextField(blank=True)), - ], - ), - migrations.CreateModel( - name="Feedback", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("url", models.TextField(blank=True, null=True)), - ("created", models.DateTimeField(auto_now_add=True)), - ("message", models.TextField()), - ], - options={ - "abstract": False, - }, - ), - migrations.CreateModel( - name="School", - fields=[ - ( - "school_id", - models.IntegerField(primary_key=True, serialize=False), - ), - ("ope6_id", models.IntegerField(blank=True, null=True)), - ("ope8_id", models.IntegerField(blank=True, null=True)), - ( - "settlement_school", - models.CharField(blank=True, default="", max_length=100), - ), - ("data_json", models.TextField(blank=True)), - ("city", models.CharField(blank=True, max_length=50)), - ("state", models.CharField(blank=True, max_length=2)), - ("zip5", models.CharField(blank=True, max_length=5)), - ("enrollment", models.IntegerField(blank=True, null=True)), - ("accreditor", models.CharField(blank=True, max_length=255)), - ("ownership", models.CharField(blank=True, max_length=255)), - ( - "control", - models.CharField( - blank=True, - help_text="'Public', 'Private' or 'For-profit'", - max_length=50, - ), - ), - ("url", models.TextField(blank=True)), - ("degrees_predominant", models.TextField(blank=True)), - ("degrees_highest", models.TextField(blank=True)), - ("program_count", models.IntegerField(blank=True, null=True)), - ( - "program_most_popular", - models.JSONField(blank=True, null=True), - ), - ("main_campus", models.BooleanField(blank=True, null=True)), - ("online_only", models.BooleanField(blank=True, null=True)), - ("operating", models.BooleanField(default=True)), - ( - "under_investigation", - models.BooleanField( - default=False, help_text="Heightened Cash Monitoring 2" - ), - ), - ("KBYOSS", models.BooleanField(default=False)), - ( - "grad_rate_4yr", - models.DecimalField( - blank=True, decimal_places=3, max_digits=5, null=True - ), - ), - ( - "grad_rate_lt4", - models.DecimalField( - blank=True, decimal_places=3, max_digits=5, null=True - ), - ), - ( - "grad_rate", - models.DecimalField( - blank=True, - decimal_places=3, - help_text="A 2-YEAR POOLED VALUE", - max_digits=5, - null=True, - ), - ), - ( - "repay_3yr", - models.DecimalField( - blank=True, - decimal_places=10, - help_text="GRADS WITH A DECLINING BALANCE AFTER 3 YRS", - max_digits=13, - null=True, - ), - ), - ( - "repay_5yr", - models.DecimalField( - blank=True, - decimal_places=10, - help_text="GRADS WITH A DECLINING BALANCE AFTER 5 YRS", - max_digits=13, - null=True, - ), - ), - ( - "default_rate", - models.DecimalField( - blank=True, - decimal_places=3, - help_text="LOAN DEFAULT RATE AT 5 YRS", - max_digits=5, - null=True, - ), - ), - ( - "median_total_debt", - models.DecimalField( - blank=True, - decimal_places=1, - help_text="MEDIAN STUDENT DEBT 10 YRS AFTER ENROLLING", - max_digits=7, - null=True, - ), - ), - ( - "median_monthly_debt", - models.DecimalField( - blank=True, - decimal_places=2, - help_text="MEDIAN STUDENT MONTHLY DEBT", - max_digits=7, - null=True, - ), - ), - ( - "median_annual_pay", - models.IntegerField( - blank=True, - help_text="MEDIAN PAY 10 YRS AFTER ENTRY", - null=True, - ), - ), - ( - "median_annual_pay_6yr", - models.IntegerField( - blank=True, - help_text="MEDIAN PAY 6 YRS AFTER ENTRY", - null=True, - ), - ), - ( - "avg_net_price", - models.IntegerField( - blank=True, help_text="OVERALL AVERAGE", null=True - ), - ), - ( - "avg_net_price_slices", - models.JSONField(blank=True, null=True), - ), - ( - "tuition_out_of_state", - models.IntegerField(blank=True, null=True), - ), - ( - "tuition_in_state", - models.IntegerField(blank=True, null=True), - ), - ("offers_perkins", models.BooleanField(default=False)), - ( - "cohort_ranking_by_control", - models.JSONField(blank=True, null=True), - ), - ( - "cohort_ranking_by_highest_degree", - models.JSONField(blank=True, null=True), - ), - ( - "cohort_ranking_by_state", - models.JSONField(blank=True, null=True), - ), - ( - "associate_transfer_rate", - models.DecimalField( - blank=True, - decimal_places=3, - help_text="Transfer rate for first-time, full-time students at less-than-four-year institutions (150% of expected time to completion)", - max_digits=5, - null=True, - ), - ), - ( - "contact", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="paying_for_college.contact", - ), - ), - ], - ), - migrations.CreateModel( - name="Notification", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("url", models.TextField(blank=True, null=True)), - ("oid", models.CharField(max_length=40)), - ("timestamp", models.DateTimeField()), - ("errors", models.CharField(max_length=255)), - ( - "emails", - models.TextField( - blank=True, - help_text="COMMA-SEPARATED STRING OF EMAILS", - ), - ), - ("sent", models.BooleanField(default=False)), - ("log", models.TextField(blank=True)), - ( - "institution", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="paying_for_college.school", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.CreateModel( - name="Nickname", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("nickname", models.TextField()), - ("is_female", models.BooleanField(default=False)), - ( - "institution", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="paying_for_college.school", - ), - ), - ], - options={ - "ordering": ["nickname"], - }, - ), - migrations.CreateModel( - name="Alias", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("alias", models.TextField()), - ("is_primary", models.BooleanField(default=False)), - ( - "institution", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="paying_for_college.school", - ), - ), - ], - options={ - "verbose_name_plural": "Aliases", - }, - ), - migrations.CreateModel( - name="Program", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("program_name", models.CharField(max_length=255)), - ("accreditor", models.CharField(blank=True, max_length=255)), - ("level", models.CharField(blank=True, max_length=255)), - ("program_code", models.CharField(blank=True, max_length=255)), - ("campus", models.CharField(blank=True, max_length=255)), - ("cip_code", models.CharField(blank=True, max_length=255)), - ("soc_codes", models.CharField(blank=True, max_length=255)), - ( - "total_cost", - models.IntegerField( - blank=True, help_text="COMPUTED", null=True - ), - ), - ( - "time_to_complete", - models.IntegerField( - blank=True, help_text="IN MONTHS", null=True - ), - ), - ( - "completion_rate", - models.DecimalField( - blank=True, decimal_places=2, max_digits=5, null=True - ), - ), - ( - "completion_cohort", - models.IntegerField( - blank=True, help_text="COMPLETION COHORT", null=True - ), - ), - ( - "completers", - models.IntegerField( - blank=True, - help_text="COMPLETERS OF THE PROGRAM", - null=True, - ), - ), - ("titleiv_debt", models.IntegerField(blank=True, null=True)), - ("private_debt", models.IntegerField(blank=True, null=True)), - ( - "institutional_debt", - models.IntegerField(blank=True, null=True), - ), - ( - "mean_student_loan_completers", - models.IntegerField( - blank=True, - help_text="TITLEIV_DEBT + PRIVATE_DEBT + INSTITUTIONAL_DEBT", - null=True, - ), - ), - ( - "median_student_loan_completers", - models.IntegerField( - blank=True, - help_text="TITLEIV_DEBT + PRIVATE_DEBT + INSTITUTIONAL_DEBT", - null=True, - ), - ), - ( - "default_rate", - models.DecimalField( - blank=True, decimal_places=2, max_digits=5, null=True - ), - ), - ( - "salary", - models.IntegerField( - blank=True, help_text="MEDIAN SALARY", null=True - ), - ), - ( - "program_length", - models.IntegerField( - blank=True, help_text="IN MONTHS", null=True - ), - ), - ("tuition", models.IntegerField(blank=True, null=True)), - ("fees", models.IntegerField(blank=True, null=True)), - ( - "housing", - models.IntegerField( - blank=True, help_text="HOUSING & MEALS", null=True - ), - ), - ( - "books", - models.IntegerField( - blank=True, help_text="BOOKS & SUPPLIES", null=True - ), - ), - ("transportation", models.IntegerField(blank=True, null=True)), - ("other_costs", models.IntegerField(blank=True, null=True)), - ( - "job_rate", - models.DecimalField( - blank=True, - decimal_places=2, - help_text="COMPLETERS WHO GET RELATED JOB", - max_digits=5, - null=True, - ), - ), - ( - "job_note", - models.TextField( - blank=True, help_text="EXPLANATION FROM SCHOOL" - ), - ), - ("test", models.BooleanField(default=False)), - ( - "institution", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="paying_for_college.school", - ), - ), - ( - "level_name", - models.CharField(blank=True, max_length=255, null=True), - ), - ( - "median_monthly_debt", - models.IntegerField( - blank=True, - help_text="MEDIAN MONTHLY PAYMENT FOR A 10-YEAR LOAN", - null=True, - ), - ), - ], - ), - migrations.CreateModel( - name="CollegeCostsPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(), - ), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="RepayingStudentDebtPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(), - ), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.DeleteModel( - name="Feedback", - ), - migrations.AlterField( - model_name="collegecostspage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="repayingstudentdebtpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="collegecostspage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="repayingstudentdebtpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="collegecostspage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="collegecostspage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="repayingstudentdebtpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="repayingstudentdebtpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py b/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py index 857f7babca2..ccdf9c6414a 100644 --- a/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py +++ b/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py @@ -10,9 +10,6 @@ class Migration(migrations.Migration): - - replaces = [('paying_for_college', '0001_squashed_0018_add_use_json_field_to_streamfields'), ('paying_for_college', '0019_remove_content_image_bleed_option'), ('paying_for_college', '0020_new_table_block')] - initial = True dependencies = [ diff --git a/cfgov/paying_for_college/migrations/0019_remove_content_image_bleed_option.py b/cfgov/paying_for_college/migrations/0019_remove_content_image_bleed_option.py deleted file mode 100644 index d19cb467050..00000000000 --- a/cfgov/paying_for_college/migrations/0019_remove_content_image_bleed_option.py +++ /dev/null @@ -1,2590 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-03 22:08 - -from django.db import migrations - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ( - "paying_for_college", - "0001_squashed_0018_add_use_json_field_to_streamfields", - ), - ] - - operations = [ - migrations.AlterField( - model_name="collegecostspage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="repayingstudentdebtpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/paying_for_college/migrations/0020_new_table_block.py b/cfgov/paying_for_college/migrations/0020_new_table_block.py deleted file mode 100644 index 45fbd49ca38..00000000000 --- a/cfgov/paying_for_college/migrations/0020_new_table_block.py +++ /dev/null @@ -1,2778 +0,0 @@ -# Generated by Django 3.2.20 on 2023-07-07 18:35 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.contrib.typed_table_block.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("paying_for_college", "0019_remove_content_image_bleed_option"), - ] - - operations = [ - migrations.AlterField( - model_name="collegecostspage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="repayingstudentdebtpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/regulations3k/migrations/0001_squashed_0036_add_use_json_field_to_streamfields.py b/cfgov/regulations3k/migrations/0001_squashed_0036_add_use_json_field_to_streamfields.py deleted file mode 100644 index 362c9c58c2b..00000000000 --- a/cfgov/regulations3k/migrations/0001_squashed_0036_add_use_json_field_to_streamfields.py +++ /dev/null @@ -1,3397 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-04 15:09 - -import datetime -import re - -import django.core.validators -import django.db.models.deletion -from django.db import migrations, models - -import wagtail.blocks -import wagtail.contrib.routable_page.models -import wagtail.fields -import wagtail.images.blocks - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("v1", "0001_squashed_0235_add_use_json_field_to_streamfields"), - ] - - operations = [ - migrations.CreateModel( - name="EffectiveVersion", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("authority", models.CharField(blank=True, max_length=255)), - ("source", models.CharField(blank=True, max_length=255)), - ( - "effective_date", - models.DateField(default=datetime.date.today), - ), - ("created", models.DateField(default=datetime.date.today)), - ("draft", models.BooleanField(default=False)), - ], - options={ - "ordering": ["effective_date"], - "default_related_name": "version", - }, - ), - migrations.CreateModel( - name="Part", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("cfr_title_number", models.CharField(max_length=255)), - ("chapter", models.CharField(max_length=255)), - ("part_number", models.CharField(max_length=255)), - ("title", models.CharField(max_length=255)), - ("short_name", models.CharField(blank=True, max_length=255)), - ], - options={ - "ordering": ["part_number"], - }, - ), - migrations.CreateModel( - name="RegulationsSearchPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=( - wagtail.contrib.routable_page.models.RoutablePageMixin, - "v1.cfgovpage", - ), - ), - migrations.CreateModel( - name="Section", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("label", models.CharField(blank=True, max_length=255)), - ("title", models.CharField(blank=True, max_length=255)), - ("contents", models.TextField(blank=True)), - ("sortable_label", models.CharField(max_length=255)), - ], - options={ - "ordering": ["sortable_label"], - }, - ), - migrations.CreateModel( - name="SectionParagraph", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("paragraph", models.TextField(blank=True)), - ("paragraph_id", models.CharField(blank=True, max_length=255)), - ( - "section", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="paragraphs", - to="regulations3k.section", - ), - ), - ], - ), - migrations.CreateModel( - name="Subpart", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "label", - models.CharField( - help_text="Labels must be unique within this regulation version and always require at least 1 alphanumeric character, then any number of alphanumeric characters and hyphens, with no spaces.", - max_length=255, - validators=[ - django.core.validators.RegexValidator( - re.compile("^[\\w]+[-\\w]*$"), - "Enter a valid “label” consisting of letters, numbers, hyphens, and no spaces.", - "invalid", - ) - ], - ), - ), - ("title", models.CharField(blank=True, max_length=255)), - ( - "subpart_type", - models.IntegerField( - choices=[ - (0, "Regulation Body"), - (1000, "Appendix"), - (2000, "Interpretation"), - ], - default=0, - ), - ), - ( - "version", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="subparts", - to="regulations3k.effectiveversion", - ), - ), - ], - options={ - "ordering": ["subpart_type", "label"], - }, - ), - migrations.AddField( - model_name="section", - name="subpart", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="sections", - to="regulations3k.subpart", - ), - ), - migrations.AddField( - model_name="effectiveversion", - name="part", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="versions", - to="regulations3k.part", - ), - ), - migrations.AlterField( - model_name="section", - name="label", - field=models.CharField( - help_text="Labels always require at least 1 alphanumeric character, then any number of alphanumeric characters and hyphens, with no spaces.", - max_length=255, - validators=[ - django.core.validators.RegexValidator( - re.compile("^[\\w]+[-\\w]*$"), - "Enter a valid “label” consisting of letters, numbers, and hyphens.", - "invalid", - ) - ], - ), - ), - migrations.AlterField( - model_name="section", - name="label", - field=models.CharField( - help_text="Labels always require at least 1 alphanumeric character, then any number of alphanumeric characters and hyphens, with no spaces.", - max_length=255, - validators=[ - django.core.validators.RegexValidator( - re.compile("^[\\w]+[-\\w]*$"), - "Enter a valid “label” consisting of letters, numbers, hyphens, and no spaces.", - "invalid", - ) - ], - ), - ), - migrations.CreateModel( - name="RegulationLandingPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "regulations_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Regulations list heading", - required=False, - ), - ), - ( - "more_regs_page", - wagtail.blocks.PageChooserBlock( - help_text="Link to more regulations" - ), - ), - ( - "more_regs_text", - wagtail.blocks.CharBlock( - help_text="Text to show on link to more regulations", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=( - wagtail.contrib.routable_page.models.RoutablePageMixin, - "v1.cfgovpage", - ), - ), - migrations.CreateModel( - name="RegulationPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - blank=True, - null=True, - use_json_field=None, - ), - ), - ( - "secondary_nav_exclude_sibling_pages", - models.BooleanField(default=False), - ), - ( - "regulation", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.PROTECT, - related_name="page", - to="regulations3k.part", - ), - ), - ], - options={ - "abstract": False, - }, - bases=( - wagtail.contrib.routable_page.models.RoutablePageMixin, - "v1.cfgovpage", - ), - ), - migrations.AlterField( - model_name="regulationlandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "regulations_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Regulations list heading", - required=False, - ), - ), - ( - "more_regs_page", - wagtail.blocks.PageChooserBlock( - help_text="Link to more regulations" - ), - ), - ( - "more_regs_text", - wagtail.blocks.CharBlock( - help_text="Text to show on link to more regulations", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="regulationpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - blank=True, - null=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="regulationlandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "regulations_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Regulations list heading", - required=False, - ), - ), - ( - "more_regs_page", - wagtail.blocks.PageChooserBlock( - help_text="Link to more regulations" - ), - ), - ( - "more_regs_text", - wagtail.blocks.CharBlock( - help_text="Text to show on link to more regulations", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="regulationlandingpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="regulationpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - blank=True, - null=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="regulationpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py b/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py index 384f842744f..5d6c2b256df 100644 --- a/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py +++ b/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py @@ -14,9 +14,6 @@ class Migration(migrations.Migration): - - replaces = [('regulations3k', '0001_squashed_0036_add_use_json_field_to_streamfields'), ('regulations3k', '0037_remove_content_image_bleed_option'), ('regulations3k', '0038_new_table_block')] - initial = True dependencies = [ diff --git a/cfgov/regulations3k/migrations/0037_remove_content_image_bleed_option.py b/cfgov/regulations3k/migrations/0037_remove_content_image_bleed_option.py deleted file mode 100644 index 598f1b90ad1..00000000000 --- a/cfgov/regulations3k/migrations/0037_remove_content_image_bleed_option.py +++ /dev/null @@ -1,940 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-03 22:08 - -from django.db import migrations - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - -import v1.atomic_elements.tables -import v1.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ( - "regulations3k", - "0001_squashed_0036_add_use_json_field_to_streamfields", - ), - ] - - operations = [ - migrations.AlterField( - model_name="regulationlandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "regulations_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Regulations list heading", - required=False, - ), - ), - ( - "more_regs_page", - wagtail.blocks.PageChooserBlock( - help_text="Link to more regulations" - ), - ), - ( - "more_regs_text", - wagtail.blocks.CharBlock( - help_text="Text to show on link to more regulations", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="regulationpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - blank=True, - null=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/regulations3k/migrations/0038_new_table_block.py b/cfgov/regulations3k/migrations/0038_new_table_block.py deleted file mode 100644 index da45c616e31..00000000000 --- a/cfgov/regulations3k/migrations/0038_new_table_block.py +++ /dev/null @@ -1,1128 +0,0 @@ -# Generated by Django 3.2.20 on 2023-07-07 18:35 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.contrib.typed_table_block.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("regulations3k", "0037_remove_content_image_bleed_option"), - ] - - operations = [ - migrations.AlterField( - model_name="regulationlandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "regulations_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Regulations list heading", - required=False, - ), - ), - ( - "more_regs_page", - wagtail.blocks.PageChooserBlock( - help_text="Link to more regulations" - ), - ), - ( - "more_regs_text", - wagtail.blocks.CharBlock( - help_text="Text to show on link to more regulations", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="regulationpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ], - blank=True, - null=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0001_squashed_0235_add_use_json_field_to_streamfields.py b/cfgov/v1/migrations/0001_squashed_0235_add_use_json_field_to_streamfields.py deleted file mode 100644 index 86a7358c31e..00000000000 --- a/cfgov/v1/migrations/0001_squashed_0235_add_use_json_field_to_streamfields.py +++ /dev/null @@ -1,83891 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-08 14:32 - -import datetime - -import django.core.validators -import django.db.migrations.operations.special -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks -import wagtail.images.models -import wagtail.models.collections -import wagtail.search.index -import wagtail.snippets.blocks - -import localflavor.us.models -import modelcluster.contrib.taggit -import modelcluster.fields -import taggit.managers -import wagtailmedia.blocks - -import jobmanager.blocks -import v1.atomic_elements.molecules -import v1.atomic_elements.tables -import v1.blocks -import v1.models.snippets -import v1.util.ref - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("contenttypes", "__first__"), - ("wagtailimages", "0019_delete_filter"), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("wagtailcore", "0067_alter_pagerevision_content_json"), - ( - "wagtailcore", - "0041_group_collection_permissions_verbose_name_plural", - ), - ("wagtailcore", "0040_page_draft_title"), - ("taggit", "0002_auto_20150616_2121"), - ("wagtaildocs", "0007_merge"), - ("login", "0001_squashed_0003_simplify_password_logic"), - ("wagtailcore", "0066_collection_management_permissions"), - ] - - operations = [ - migrations.CreateModel( - name="CDNHistory", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("created", models.DateTimeField(auto_now_add=True)), - ("subject", models.CharField(max_length=2083)), - ("message", models.CharField(max_length=255)), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - migrations.CreateModel( - name="CFGOVAuthoredPages", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ], - options={ - "verbose_name": "Author", - "verbose_name_plural": "Authors", - }, - ), - migrations.CreateModel( - name="CFGOVImage", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "title", - models.CharField(max_length=255, verbose_name="title"), - ), - ( - "file", - models.ImageField( - height_field="height", - upload_to=wagtail.images.models.get_upload_to, - verbose_name="file", - width_field="width", - ), - ), - ( - "width", - models.IntegerField(editable=False, verbose_name="width"), - ), - ( - "height", - models.IntegerField(editable=False, verbose_name="height"), - ), - ( - "created_at", - models.DateTimeField( - auto_now_add=True, - db_index=True, - verbose_name="created at", - ), - ), - ( - "focal_point_x", - models.PositiveIntegerField(blank=True, null=True), - ), - ( - "focal_point_y", - models.PositiveIntegerField(blank=True, null=True), - ), - ( - "focal_point_width", - models.PositiveIntegerField(blank=True, null=True), - ), - ( - "focal_point_height", - models.PositiveIntegerField(blank=True, null=True), - ), - ( - "file_size", - models.PositiveIntegerField(editable=False, null=True), - ), - ( - "alt", - models.TextField( - blank=True, - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - ), - ), - ( - "collection", - models.ForeignKey( - default=wagtail.models.collections.get_root_collection_id, - on_delete=django.db.models.deletion.CASCADE, - related_name="+", - to="wagtailcore.collection", - verbose_name="collection", - ), - ), - ( - "tags", - taggit.managers.TaggableManager( - blank=True, - help_text=None, - through="taggit.TaggedItem", - to="taggit.Tag", - verbose_name="tags", - ), - ), - ( - "uploaded_by_user", - models.ForeignKey( - blank=True, - editable=False, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - to=settings.AUTH_USER_MODEL, - verbose_name="uploaded by user", - ), - ), - ( - "file_hash", - models.CharField( - blank=True, editable=False, max_length=40 - ), - ), - ], - options={ - "abstract": False, - }, - bases=(wagtail.search.index.Indexed, models.Model), - ), - migrations.CreateModel( - name="CFGOVPage", - 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", - ), - ), - ( - "language", - models.CharField( - choices=[ - ("en", "English"), - ("es", "Spanish"), - ("zh", "Chinese"), - ("vi", "Vietnamese"), - ("ko", "Korean"), - ("tl", "Tagalog"), - ("ru", "Russian"), - ("ar", "Arabic"), - ("ht", "Haitian Creole"), - ], - default="en", - max_length=2, - ), - ), - ( - "sidefoot", - wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Op-Ed", - "Op-ed", - ), - ( - "Press Release", - "Press release", - ), - ( - "Speech", - "Speech", - ), - ( - "Testimony", - "Testimony", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "and_filtering", - wagtail.blocks.BooleanBlock( - default=False, - help_text="If checked, related posts will only be pulled in if they match ALL topic tags set on this page. Otherwise, related posts can match any one topic tag.", - label="Match all topic tags", - required=False, - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Categories", - max_length=100, - ), - ), - ( - "show_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="list-ul", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Stay informed", - required=False, - ), - ), - ( - "default_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - label="Default heading style", - required=False, - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - required=False, - ), - ), - ( - "gd_code", - wagtail.blocks.CharBlock( - help_text="Code for the topic (i.e., mailing list) you want people who submit this form to subscribe to. Format: USCFPB_###", - label="GovDelivery code", - required=False, - ), - ), - ( - "disclaimer_page", - wagtail.blocks.PageChooserBlock( - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - label="Privacy Act statement", - required=False, - ), - ), - ] - ), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "rss_feed", - v1.atomic_elements.molecules.RSSFeed(), - ), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "authors", - modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text="A comma separated list of authors.", - through="v1.CFGOVAuthoredPages", - to="taggit.Tag", - verbose_name="Authors", - ), - ), - ( - "social_sharing_image", - models.ForeignKey( - blank=True, - help_text="Optionally select a custom image to appear when users share this page on social media websites. Recommended size: 1200w x 630h. Maximum size: 4096w x 4096h.", - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="v1.cfgovimage", - ), - ), - ], - bases=("wagtailcore.page",), - ), - migrations.CreateModel( - name="Contact", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "heading", - models.CharField( - help_text="The snippet heading", - max_length=255, - verbose_name="Heading", - ), - ), - ("body", wagtail.fields.RichTextField(blank=True)), - ( - "contact_info", - wagtail.fields.StreamField( - [ - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, required=False - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, required=False - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, required=False - ), - ), - ] - ), - ), - ( - "hyperlink", - wagtail.blocks.StructBlock( - [ - ("url", wagtail.blocks.URLBlock()), - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "body_shown_in_expandables", - models.BooleanField(default=False), - ), - ], - options={ - "ordering": ["heading"], - }, - ), - migrations.CreateModel( - name="Feedback", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("submitted_on", models.DateTimeField(auto_now_add=True)), - ("comment", models.TextField(blank=True, null=True)), - ( - "language", - models.CharField(blank=True, max_length=8, null=True), - ), - ( - "referrer", - models.CharField(blank=True, max_length=255, null=True), - ), - ("is_helpful", models.BooleanField(blank=True, null=True)), - ( - "expect_to_buy", - models.CharField(blank=True, max_length=255, null=True), - ), - ( - "currently_own", - models.CharField(blank=True, max_length=255, null=True), - ), - ( - "email", - models.EmailField(blank=True, max_length=250, null=True), - ), - ( - "page", - models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="feedback", - to="wagtailcore.page", - ), - ), - ], - options={ - "permissions": ( - ( - "export_feedback", - "Can export feedback from the Wagtail admin", - ), - ), - }, - ), - migrations.CreateModel( - name="PortalCategory", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("heading", models.CharField(blank=True, max_length=255)), - ("heading_es", models.CharField(blank=True, max_length=255)), - ( - "display_order", - models.IntegerField( - default=0, - help_text="Controls sequence of categories in sidebar navigation.", - ), - ), - ], - options={ - "verbose_name_plural": "portal categories", - "ordering": ["display_order"], - }, - ), - migrations.CreateModel( - name="PortalCategoryTag", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="tagged_portal_category", - to="v1.portalcategory", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="v1_portalcategorytag_items", - to="taggit.tag", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.CreateModel( - name="PortalTopic", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("heading", models.CharField(blank=True, max_length=255)), - ("heading_es", models.CharField(blank=True, max_length=255)), - ], - options={ - "abstract": False, - }, - ), - migrations.CreateModel( - name="PortalTopicTag", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="tagged_portal_topic", - to="v1.portaltopic", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="v1_portaltopictag_items", - to="taggit.tag", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.CreateModel( - name="RelatedResource", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("title", models.CharField(max_length=255)), - ( - "title_es", - models.CharField(blank=True, max_length=255, null=True), - ), - ("text", wagtail.fields.RichTextField(blank=True, null=True)), - ( - "text_es", - wagtail.fields.RichTextField(blank=True, null=True), - ), - ], - bases=(wagtail.search.index.Indexed, models.Model), - ), - migrations.CreateModel( - name="Resource", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("title", models.CharField(max_length=255)), - ( - "desc", - wagtail.fields.RichTextField( - blank=True, verbose_name="Description" - ), - ), - ( - "link", - models.URLField( - blank=True, - help_text="Example: URL to order a few copies of a printed piece.", - validators=[django.core.validators.URLValidator], - ), - ), - ( - "alternate_link", - models.URLField( - blank=True, - help_text="Example: a URL to for ordering bulk copies.", - validators=[django.core.validators.URLValidator], - ), - ), - ( - "order", - models.PositiveSmallIntegerField( - blank=True, - help_text="Resources will be listed alphabetically by title in a Resource List module, unless any in the list have a number in this field; those with an order value will appear in ascending order.", - null=True, - ), - ), - ( - "alternate_file", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="wagtaildocs.document", - ), - ), - ( - "related_file", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="wagtaildocs.document", - ), - ), - ], - options={ - "ordering": ("order", "title"), - }, - ), - migrations.CreateModel( - name="ResourceTag", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="tagged_items", - to="v1.resource", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="v1_resourcetag_items", - to="taggit.tag", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.CreateModel( - name="ReusableText", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "title", - models.CharField( - max_length=255, - verbose_name="Snippet title (internal only)", - ), - ), - ( - "sidefoot_heading", - models.CharField( - blank=True, - help_text='Applies "slug" style heading. Only for use in sidebars and prefooters (the "sidefoot"). See [GHE]/flapjack/Modules-V1/wiki/Atoms#slugs', - max_length=255, - ), - ), - ("text", wagtail.fields.RichTextField()), - ], - bases=(wagtail.search.index.Indexed, models.Model), - ), - migrations.CreateModel( - name="AbstractFilterPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "article_subheader", - wagtail.blocks.RichTextBlock(icon="form"), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "item_introduction", - wagtail.blocks.StructBlock( - [ - ( - "show_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Whether to show the category or not (category must be set in 'Configuration').", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "date", - wagtail.blocks.DateBlock( - required=False - ), - ), - ( - "has_social", - wagtail.blocks.BooleanBlock( - help_text="Whether to show the share icons or not.", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "preview_title", - models.CharField(blank=True, max_length=255, null=True), - ), - ( - "preview_subheading", - models.CharField(blank=True, max_length=255, null=True), - ), - ( - "preview_description", - wagtail.fields.RichTextField(blank=True, null=True), - ), - ( - "secondary_link_url", - models.CharField(blank=True, max_length=500, null=True), - ), - ( - "secondary_link_text", - models.CharField(blank=True, max_length=255, null=True), - ), - ( - "date_published", - models.DateField(default=datetime.date.today), - ), - ("date_filed", models.DateField(blank=True, null=True)), - ("comments_close_by", models.DateField(blank=True, null=True)), - ( - "preview_image", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="v1.cfgovimage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="BrowseFilterablePage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(), - ), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=None, - ), - ), - ( - "secondary_nav_exclude_sibling_pages", - models.BooleanField(default=False), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="HomePage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="LandingPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="SublandingFilterablePage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(), - ), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.AddField( - model_name="resource", - name="tags", - field=taggit.managers.TaggableManager( - blank=True, - help_text="Tags can be used to filter resources in a Resource List.", - through="v1.ResourceTag", - to="taggit.Tag", - verbose_name="Tags", - ), - ), - migrations.AddField( - model_name="resource", - name="thumbnail", - field=models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="v1.cfgovimage", - ), - ), - migrations.AddField( - model_name="portaltopic", - name="tags", - field=taggit.managers.TaggableManager( - blank=True, - help_text="Tags are used to identify and organize portal topic pages.", - through="v1.PortalTopicTag", - to="taggit.Tag", - verbose_name="Tags", - ), - ), - migrations.AddField( - model_name="portalcategory", - name="tags", - field=taggit.managers.TaggableManager( - blank=True, - help_text="Tags are used to identify and organize portal see-all pages.", - through="v1.PortalCategoryTag", - to="taggit.Tag", - verbose_name="Tags", - ), - ), - migrations.CreateModel( - name="CFGOVTaggedPages", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - to="v1.cfgovpage", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="v1_cfgovtaggedpages_items", - to="taggit.tag", - ), - ), - ], - options={ - "verbose_name": "Tag", - "verbose_name_plural": "Tags", - }, - ), - migrations.AddField( - model_name="cfgovpage", - name="tags", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text="A comma-separated list of tags.", - related_name="tagged_pages", - through="v1.CFGOVTaggedPages", - to="taggit.Tag", - verbose_name="Tags", - ), - ), - migrations.AddField( - model_name="cfgovauthoredpages", - name="content_object", - field=modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, to="v1.cfgovpage" - ), - ), - migrations.AddField( - model_name="cfgovauthoredpages", - name="tag", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="v1_cfgovauthoredpages_items", - to="taggit.tag", - ), - ), - migrations.CreateModel( - name="ActivityLogPage", - fields=[ - ( - "sublandingfilterablepage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.sublandingfilterablepage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.sublandingfilterablepage",), - ), - migrations.CreateModel( - name="BlogPage", - fields=[ - ( - "abstractfilterpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.abstractfilterpage", - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - ), - ), - ], - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.abstractfilterpage",), - ), - migrations.CreateModel( - name="EventArchivePage", - fields=[ - ( - "browsefilterablepage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.browsefilterablepage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.browsefilterablepage",), - ), - migrations.CreateModel( - name="EventPage", - fields=[ - ( - "abstractfilterpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.abstractfilterpage", - ), - ), - ( - "body", - wagtail.fields.RichTextField( - blank=True, verbose_name="Subheading" - ), - ), - ("archive_body", wagtail.fields.RichTextField(blank=True)), - ("live_body", wagtail.fields.RichTextField(blank=True)), - ( - "persistent_body", - wagtail.fields.StreamField( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ("start_dt", models.DateTimeField(verbose_name="Start")), - ( - "end_dt", - models.DateTimeField( - blank=True, null=True, verbose_name="End" - ), - ), - ("future_body", wagtail.fields.RichTextField(blank=True)), - ( - "flickr_url", - models.URLField(blank=True, verbose_name="Flickr URL"), - ), - ( - "live_stream_availability", - models.BooleanField( - blank=True, - default=False, - help_text="Check if this event will be streamed live. This causes the event page to show the parts necessary for live streaming.", - verbose_name="Streaming?", - ), - ), - ( - "live_stream_date", - models.DateTimeField( - blank=True, - help_text="Enter the date and time that the page should switch from showing the venue image to showing the live video feed. This is typically 15 minutes prior to the event start time.", - null=True, - verbose_name="Go Live Date", - ), - ), - ("venue_coords", models.CharField(blank=True, max_length=100)), - ("venue_name", models.CharField(blank=True, max_length=100)), - ("venue_street", models.CharField(blank=True, max_length=100)), - ("venue_suite", models.CharField(blank=True, max_length=100)), - ("venue_city", models.CharField(blank=True, max_length=100)), - ( - "venue_state", - localflavor.us.models.USStateField( - blank=True, max_length=2 - ), - ), - ("venue_zipcode", models.CharField(blank=True, max_length=12)), - ( - "venue_image_type", - models.CharField( - choices=[ - ("map", "Map"), - ("image", "Image (selected below)"), - ("none", "No map or image"), - ], - default="map", - help_text='If "Image" is chosen here, you must select the image you want below. It should be sized to 1416x796.', - max_length=8, - ), - ), - ( - "post_event_image_type", - models.CharField( - choices=[ - ("placeholder", "Placeholder image"), - ("image", "Unique image (selected below)"), - ], - default="placeholder", - help_text='Choose what to display after an event concludes. This will be overridden by embedded video if the "YouTube video ID (archive)" field on the previous tab is populated. If "Unique image" is chosen here, you must select the image you want below. It should be sized to 1416x796.', - max_length=16, - verbose_name="Post-event image type", - ), - ), - ( - "agenda_items", - wagtail.fields.StreamField( - [ - ( - "item", - wagtail.blocks.StructBlock( - [ - ( - "start_time", - wagtail.blocks.TimeBlock( - label="Start", required=False - ), - ), - ( - "end_time", - wagtail.blocks.TimeBlock( - label="End", required=False - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - max_length=100, required=False - ), - ), - ( - "location", - wagtail.blocks.CharBlock( - max_length=100, required=False - ), - ), - ( - "speakers", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "name", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.URLBlock( - required=False - ), - ), - ], - icon="user", - required=False, - ) - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - ( - "archive_image", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="wagtailimages.image", - ), - ), - ( - "post_event_image", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="v1.cfgovimage", - ), - ), - ( - "speech_transcript", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="wagtaildocs.document", - ), - ), - ( - "venue_image", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="v1.cfgovimage", - ), - ), - ( - "video_transcript", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="+", - to="wagtaildocs.document", - ), - ), - ( - "archive_video_id", - models.CharField( - blank=True, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - max_length=11, - null=True, - validators=[ - django.core.validators.RegexValidator( - regex="^[\\w-]{11}$" - ) - ], - verbose_name="YouTube video ID (archive)", - ), - ), - ( - "live_video_id", - models.CharField( - blank=True, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - max_length=11, - null=True, - validators=[ - django.core.validators.RegexValidator( - regex="^[\\w-]{11}$" - ) - ], - verbose_name="YouTube video ID (live)", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.abstractfilterpage",), - ), - migrations.CreateModel( - name="LegacyBlogPage", - fields=[ - ( - "abstractfilterpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.abstractfilterpage", - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "content", - wagtail.blocks.RawHTMLBlock( - help_text="Content from WordPress unescaped." - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ], - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.abstractfilterpage",), - ), - migrations.CreateModel( - name="NewsroomLandingPage", - fields=[ - ( - "browsefilterablepage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.browsefilterablepage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.browsefilterablepage",), - ), - migrations.CreateModel( - name="LegacyNewsroomPage", - fields=[ - ( - "legacyblogpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.legacyblogpage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.legacyblogpage",), - ), - migrations.CreateModel( - name="NewsroomPage", - fields=[ - ( - "blogpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.blogpage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.blogpage",), - ), - migrations.CreateModel( - name="EnforcementActionPage", - fields=[ - ( - "abstractfilterpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.abstractfilterpage", - ), - ), - ( - "court", - models.CharField(blank=True, default="", max_length=150), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "initial_filing_date", - models.DateField(blank=True, null=True), - ), - ( - "public_enforcement_action", - models.CharField(blank=True, max_length=150), - ), - ( - "settled_or_contested_at_filing", - models.CharField( - blank=True, - choices=[ - ("Settled", "Settled"), - ("Contested", "Contested"), - ], - max_length=10, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.abstractfilterpage",), - ), - migrations.CreateModel( - name="EnforcementActionStatus", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "status", - models.CharField( - choices=[ - ( - "expired-terminated-dismissed", - "Expired/Terminated/Dismissed", - ), - ("pending-litigation", "Pending Litigation"), - ( - "post-order-post-judgment", - "Post Order/Post Judgment", - ), - ], - max_length=50, - ), - ), - ( - "action", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="statuses", - to="v1.enforcementactionpage", - ), - ), - ], - ), - migrations.CreateModel( - name="EnforcementActionDocket", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("docket_number", models.CharField(max_length=50)), - ( - "action", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="docket_numbers", - to="v1.enforcementactionpage", - ), - ), - ], - ), - migrations.CreateModel( - name="EnforcementActionsFilterPage", - fields=[ - ( - "browsefilterablepage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.browsefilterablepage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.browsefilterablepage",), - ), - migrations.CreateModel( - name="Banner", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "title", - models.CharField( - help_text="For internal reference only; does not appear on the site.", - max_length=255, - ), - ), - ( - "url_pattern", - models.CharField( - help_text="A regular expression pattern for matching URLs that should show the banner, for example: contact-us|^/complaint/$", - max_length=1000, - validators=[ - django.core.validators.RegexValidator( - regex="[A-Za-z0-9\\-_.:/?&|\\^$]" - ) - ], - verbose_name="URL patterns", - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "content", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ) - ], - use_json_field=None, - ), - ), - ("enabled", models.BooleanField()), - ], - ), - migrations.CreateModel( - name="CampaignPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "jumbo_hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_50_50", - wagtail.blocks.BooleanBlock( - help_text="Optional. Set both the hero text and image to 50% width, prevent the background color from appearing in the left/right margins of the hero, and also add a border to the hero area. Requires the uploaded large image to be 755px x 575px.", - label="50/50 layout", - required=False, - ), - ), - ] - ), - ), - ( - "features", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "info_units", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.AddField( - model_name="cfgovpage", - name="schema_json", - field=models.JSONField( - blank=True, - help_text='Enter structured data for this page in JSON-LD format, for use by search engines in providing rich search results. Learn more. JSON entered here will be output in the <head> of the page between <script type="application/ld+json"> and </script> tags.', - null=True, - verbose_name="Schema JSON", - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="authors", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text="A comma separated list of authors.", - related_name="authored_pages", - through="v1.CFGOVAuthoredPages", - to="taggit.Tag", - verbose_name="Authors", - ), - ), - migrations.AddField( - model_name="cfgovpage", - name="force_breadcrumbs", - field=models.BooleanField( - blank=True, - default=False, - help_text="Normally breadcrumbs don't appear on pages one or two levels below the homepage. Check this option to force breadcrumbs to appear on all children of this page no matter how many levels below the homepage they are (for example, if you want breadcrumbs to appear on all children of a top-level campaign page).", - verbose_name="Force breadcrumbs on child pages", - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "and_filtering", - wagtail.blocks.BooleanBlock( - default=False, - help_text="If checked, related posts will only be pulled in if they match ALL topic tags set on this page. Otherwise, related posts can match any one topic tag.", - label="Match all topic tags", - required=False, - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Categories", - max_length=100, - ), - ), - ( - "show_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="list-ul", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Stay informed", required=False - ), - ), - ( - "default_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - label="Default heading style", - required=False, - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - required=False, - ), - ), - ( - "gd_code", - wagtail.blocks.CharBlock( - help_text="Code for the topic (i.e., mailing list) you want people who submit this form to subscribe to. Format: USCFPB_###", - label="GovDelivery code", - required=False, - ), - ), - ( - "disclaimer_page", - wagtail.blocks.PageChooserBlock( - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - label="Privacy Act statement", - required=False, - ), - ), - ] - ), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.CreateModel( - name="IndexedPageRevision", - fields=[], - options={ - "proxy": True, - "indexes": [], - "constraints": [], - }, - bases=(wagtail.search.index.Indexed, "wagtailcore.pagerevision"), - ), - migrations.CreateModel( - name="EnforcementActionDisposition", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "final_disposition", - models.CharField(blank=True, max_length=150), - ), - ( - "final_order_civil_money_penalty", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ("final_order_date", models.DateField(blank=True, null=True)), - ("dismissal_date", models.DateField(blank=True, null=True)), - ( - "action", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="enforcement_dispositions", - to="v1.enforcementactionpage", - ), - ), - ( - "estimated_consumers_entitled_to_relief", - models.CharField(blank=True, max_length=30), - ), - ( - "final_disposition_type", - models.CharField( - blank=True, - choices=[ - ("Final Order", "Final Order"), - ("Dismissal", "Dismissal"), - ], - max_length=15, - ), - ), - ( - "final_order_civil_money_penalty_suspended", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ( - "final_order_consumer_redress", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ( - "final_order_consumer_redress_suspended", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ( - "final_order_disgorgement", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ( - "final_order_disgorgement_suspended", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ( - "final_order_other_consumer_relief", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ( - "final_order_other_consumer_relief_suspended", - models.DecimalField( - decimal_places=2, default=0, max_digits=13 - ), - ), - ], - ), - migrations.CreateModel( - name="EnforcementActionStatute", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "statute", - models.CharField( - choices=[ - ( - "CFPA Deceptive", - "Consumer Financial Protection Act - Deceptive Acts or Practices", - ), - ( - "CFPA Unfair", - "Consumer Financial Protection Act - Unfair Acts or Practices", - ), - ( - "CFPA Abusive", - "Consumer Financial Protection Act - Abusive Acts or Practices", - ), - ( - "CFPA", - "Consumer Financial Protection Act - Other", - ), - ( - "AMTPA", - "Alternative Mortgage Transaction Parity Act/Regulation D", - ), - ("CLA", "Consumer Leasing Act/Regulation M"), - ("Credit Practice Rules", "Credit Practices Rule"), - ( - "EFTA/Regulation E", - "Electronic Fund Transfer Act/Regulation E", - ), - ( - "ECOA/Regulation B", - "Equal Credit Opportunity Act/Regulation B", - ), - ("FCBA", "Fair Credit Billing Act"), - ( - "FCRA/Regulation V", - "Fair Credit Reporting Act/Regulation V", - ), - ( - "FDCPA", - "Fair Debt Collection Practices Act/Regulation F", - ), - ( - "FDIA", - "Federal Deposit Insurance Act/Regulation I", - ), - ( - "GLBA/Regulation P", - "Gramm-Leach-Bliley Act/Regulation P", - ), - ( - "HMDA", - "Home Mortgage Disclosure Act/Regulation C", - ), - ( - "HOEPA", - "Home Ownership and Equity Protection Act", - ), - ("HOPA", "Home Owners Protection Act"), - ( - "ILSFDA", - "Interstate Land Sales Full Disclosure Act/Regulation J, K, and L", - ), - ("Military Lending Act", "Military Lending Act"), - ( - "Regulation N (MAP Rule)", - "Mortgage Acts and Practices – Advertising Final Rule (Regulation N)", - ), - ( - "Regulation O (MARS Rule)", - "Mortgage Assistance Relief Services Rule (Regulation O)", - ), - ( - "MRAPLA", - "Mortgage Reform and Anti-Predatory Lending Act", - ), - ( - "RESPA", - "Real Estate Settlement Procedures Act/Regulation X", - ), - ( - "SMLA", - "S.A.F.E. Mortgage Licensing Act/Regulation H", - ), - ( - "Telemarketing Sales Rule (TSR)", - "Telemarketing Sales Rule", - ), - ( - "TILA/Regulation Z", - "Truth in Lending Act/Regulation Z", - ), - ( - "TISA/Regulation DD", - "Truth in Savings Act/Regulation DD", - ), - ], - max_length=30, - ), - ), - ( - "action", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="statutes", - to="v1.enforcementactionpage", - ), - ), - ], - ), - migrations.CreateModel( - name="EnforcementActionProduct", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "product", - models.CharField( - choices=[ - ( - "Auto Finance Origination", - "Auto Finance Origination", - ), - ( - "Auto Finance Servicing", - "Auto Finance Servicing", - ), - ( - "Business Lending (ECOA)", - "Business Lending (ECOA)", - ), - ( - "Consumer Reporting Agencies", - "Consumer Reporting Agencies", - ), - ( - "Consumer Reporting ? User", - "Consumer Reporting - User", - ), - ("Credit Cards", "Credit Cards"), - ("Credit Repair", "Credit Repair"), - ("Debt Collection", "Debt Collection"), - ("Debt Relief", "Debt Relief"), - ("Deposits", "Deposits"), - ("Furnishing", "Furnishing"), - ("Fair Lending", "Fair Lending"), - ("Mortgage Origination", "Mortgage Origination"), - ("Mortgage Servicing", "Mortgage Servicing"), - ("Payments", "Payments"), - ("Prepaid", "Prepaid"), - ("Remittances", "Remittances"), - ( - "Short Term, Small Dollar", - "Short Term, Small Dollar", - ), - ( - "Student Loan Origination", - "Student Loan Origination", - ), - ( - "Student Loan Servicing", - "Student Loan Servicing", - ), - ( - "Other Consumer Lending", - "Other Consumer Lending", - ), - ( - "Other Consumer Products (Not Lending)", - "Other Consumer Product (not lending)", - ), - ], - max_length=50, - ), - ), - ( - "action", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="products", - to="v1.enforcementactionpage", - ), - ), - ], - ), - migrations.CreateModel( - name="EnforcementActionDefendantType", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "defendant_type", - models.CharField( - blank=True, - choices=[ - ("Non-Bank", "Nonbank"), - ("Bank", "Bank"), - ("Individual", "Individual"), - ], - max_length=15, - ), - ), - ( - "action", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="defendant_types", - to="v1.enforcementactionpage", - ), - ), - ], - ), - migrations.CreateModel( - name="EnforcementActionAtRisk", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "at_risk_group", - models.CharField( - choices=[ - ("Fair Lending", "Fair Lending"), - ( - "Limited English Proficiency", - "Limited English Proficiency", - ), - ("Older Americans", "Older Americans"), - ("Servicemembers", "Servicemembers"), - ("Students", "Students"), - ], - max_length=30, - ), - ), - ( - "action", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="at_risk_groups", - to="v1.enforcementactionpage", - ), - ), - ], - ), - migrations.CreateModel( - name="StoryPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "jumbo_hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_50_50", - wagtail.blocks.BooleanBlock( - help_text="Optional. Set both the hero text and image to 50% width, prevent the background color from appearing in the left/right margins of the hero, and also add a border to the hero area. Requires the uploaded large image to be 755px x 575px.", - label="50/50 layout", - required=False, - ), - ), - ] - ), - ), - ( - "features", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(), - ), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.AlterField( - model_name="cfgovpage", - name="language", - field=models.CharField( - choices=[ - ("en", "English"), - ("es", "Spanish"), - ("zh", "Chinese"), - ("vi", "Vietnamese"), - ("ko", "Korean"), - ("tl", "Tagalog"), - ("ru", "Russian"), - ("ar", "Arabic"), - ("ht", "Haitian Creole"), - ("zh-Hans", "Chinese (Simplified)"), - ], - default="en", - max_length=100, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="language", - field=models.CharField( - choices=[ - ("en", "English"), - ("es", "Spanish"), - ("vi", "Vietnamese"), - ("ko", "Korean"), - ("tl", "Tagalog"), - ("ru", "Russian"), - ("ar", "Arabic"), - ("ht", "Haitian Creole"), - ("zh-Hans", "Chinese (Simplified)"), - ("zh-Hant", "Chinese (Traditional)"), - ], - default="en", - max_length=100, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="language", - field=models.CharField( - choices=[ - ("ar", "Arabic"), - ("zh-Hans", "Chinese (Simplified)"), - ("zh-Hant", "Chinese (Traditional)"), - ("en", "English"), - ("ht", "Haitian Creole"), - ("ko", "Korean"), - ("ru", "Russian"), - ("es", "Spanish"), - ("tl", "Tagalog"), - ("vi", "Vietnamese"), - ], - default="en", - max_length=100, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "and_filtering", - wagtail.blocks.BooleanBlock( - default=False, - help_text="If checked, related posts will only be pulled in if they match ALL topic tags set on this page. Otherwise, related posts can match any one topic tag.", - label="Match all topic tags", - required=False, - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Categories", - max_length=100, - ), - ), - ( - "show_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="list-ul", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Stay informed", required=False - ), - ), - ( - "default_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - label="Default heading style", - required=False, - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - required=False, - ), - ), - ( - "gd_code", - wagtail.blocks.CharBlock( - help_text="Code for the topic (i.e., mailing list) you want people who submit this form to subscribe to. Format: USCFPB_###", - label="GovDelivery code", - required=False, - ), - ), - ( - "disclaimer_page", - wagtail.blocks.PageChooserBlock( - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - label="Privacy Act statement", - required=False, - ), - ), - ] - ), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "and_filtering", - wagtail.blocks.BooleanBlock( - default=False, - help_text="If checked, related posts will only be pulled in if they match ALL topic tags set on this page. Otherwise, related posts can match any one topic tag.", - label="Match all topic tags", - required=False, - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Stay informed", required=False - ), - ), - ( - "default_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - label="Default heading style", - required=False, - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - required=False, - ), - ), - ( - "gd_code", - wagtail.blocks.CharBlock( - help_text="Code for the topic (i.e., mailing list) you want people who submit this form to subscribe to. Format: USCFPB_###", - label="GovDelivery code", - required=False, - ), - ), - ( - "disclaimer_page", - wagtail.blocks.PageChooserBlock( - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - label="Privacy Act statement", - required=False, - ), - ), - ] - ), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Director's Statement", - "Director's statement", - ), - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "and_filtering", - wagtail.blocks.BooleanBlock( - default=False, - help_text="If checked, related posts will only be pulled in if they match ALL topic tags set on this page. Otherwise, related posts can match any one topic tag.", - label="Match all topic tags", - required=False, - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Stay informed", required=False - ), - ), - ( - "default_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - label="Default heading style", - required=False, - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - required=False, - ), - ), - ( - "gd_code", - wagtail.blocks.CharBlock( - help_text="Code for the topic (i.e., mailing list) you want people who submit this form to subscribe to. Format: USCFPB_###", - label="GovDelivery code", - required=False, - ), - ), - ( - "disclaimer_page", - wagtail.blocks.PageChooserBlock( - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - label="Privacy Act statement", - required=False, - ), - ), - ] - ), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.CreateModel( - name="DocumentDetailPage", - fields=[ - ( - "abstractfilterpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.abstractfilterpage", - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.abstractfilterpage",), - ), - migrations.CreateModel( - name="LearnPage", - fields=[ - ( - "abstractfilterpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.abstractfilterpage", - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "contact_expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ) - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.abstractfilterpage",), - ), - migrations.CreateModel( - name="BrowsePage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(), - ), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "subtitle", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ( - "tilemap", - "Tile grid map", - ), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock( - label="Raw HTML block" - ), - ), - ( - "chart_block", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - required=True - ), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "bar", - "Bar | % y-axis values", - ), - ( - "line", - "Line | millions/billions y-axis values", - ), - ( - "line-index", - "Line-Index | integer y-axis values", - ), - ( - "tile_map", - "Tile Map | grid-like USA map", - ), - ] - ), - ), - ( - "color_scheme", - wagtail.blocks.ChoiceBlock( - choices=[ - ("blue", "Blue"), - ("gold", "Gold"), - ("green", "Green"), - ("navy", "Navy"), - ("neutral", "Neutral"), - ("purple", "Purple"), - ("teal", "Teal"), - ], - help_text='Chart\'s color scheme. See "https://github.com/cfpb/cfpb-chart-builder#createchart-options-".', - required=False, - ), - ), - ( - "data_source", - wagtail.blocks.CharBlock( - help_text='Location of the chart\'s data source relative to "https://files.consumerfinance.gov/data/". For example,"consumer-credit-trends/auto-loans/num_data_AUT.csv".', - required=True, - ), - ), - ( - "date_published", - wagtail.blocks.DateBlock( - help_text="Automatically generated when CCT cron job runs" - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Briefly summarize the chart for visually impaired users.", - required=True, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "metadata", - wagtail.blocks.CharBlock( - help_text='Optional metadata for the chart to use. For example, with CCT this would be the chart\'s "group".', - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text to display as a footnote. For example, "Data from the last six months are not final."', - required=False, - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - help_text="Custom y-axis label. NOTE: Line-Index chart y-axis is not overridable with this field!", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_chart_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", - required=True, - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_map_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", - required=True, - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_downloads_block", - wagtail.blocks.StructBlock( - [ - ( - "show_archives", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to allow the archival section to display. No section will appear if there are no archival downloads.", - required=False, - ), - ) - ] - ), - ), - ( - "data_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "market_key", - wagtail.blocks.CharBlock( - help_text="Market identifier, e.g. AUT", - max_length=20, - required=True, - ), - ), - ( - "num_originations", - wagtail.blocks.CharBlock( - help_text="Number of originations, e.g. 1.2 million", - max_length=20, - ), - ), - ( - "value_originations", - wagtail.blocks.CharBlock( - help_text="Total dollar value of originations, e.g. $3.4 billion", - max_length=20, - ), - ), - ( - "year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "num_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Auto loans originated", - max_length=100, - ), - ), - ( - "value_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Dollar volume of new loans", - max_length=100, - ), - ), - ( - "year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year originations", - max_length=100, - ), - ), - ( - "inquiry_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for inquiry data", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year inquiries", - max_length=100, - required=False, - ), - ), - ( - "tightness_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for credit tightness data", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year credit tightness", - max_length=100, - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", required=False - ), - ), - ] - ), - ), - ( - "job_listing_table", - jobmanager.blocks.JobListingTable(), - ), - ( - "yes_checklist", - wagtail.blocks.StructBlock( - [ - ( - "checklist", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "item", - wagtail.blocks.CharBlock( - help_text="Short description for a checkbox item" - ), - ), - ( - "details", - wagtail.blocks.RichTextBlock( - help_text="Deeper explanation of the item", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "raf_tool", - wagtail.blocks.StructBlock( - [ - ( - "county_threshold", - wagtail.blocks.IntegerBlock( - help_text="Optional: Add a number to determine how many results trigger display of county dropdown for a state.", - required=False, - ), - ) - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "secondary_nav_exclude_sibling_pages", - models.BooleanField(default=False), - ), - ( - "share_and_print", - models.BooleanField( - default=False, - help_text="Include share and print buttons above page content.", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Consumer Advisories", - "Consumer advisories", - ), - ( - "Director's Statement", - "Director's statement", - ), - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "and_filtering", - wagtail.blocks.BooleanBlock( - default=False, - help_text="If checked, related posts will only be pulled in if they match ALL topic tags set on this page. Otherwise, related posts can match any one topic tag.", - label="Match all topic tags", - required=False, - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Stay informed", required=False - ), - ), - ( - "default_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - label="Default heading style", - required=False, - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - required=False, - ), - ), - ( - "gd_code", - wagtail.blocks.CharBlock( - help_text="Code for the topic (i.e., mailing list) you want people who submit this form to subscribe to. Format: USCFPB_###", - label="GovDelivery code", - required=False, - ), - ), - ( - "disclaimer_page", - wagtail.blocks.PageChooserBlock( - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - label="Privacy Act statement", - required=False, - ), - ), - ] - ), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.CreateModel( - name="CFGOVContentOwner", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField( - max_length=100, unique=True, verbose_name="name" - ), - ), - ( - "slug", - models.SlugField( - max_length=100, unique=True, verbose_name="slug" - ), - ), - ], - options={ - "verbose_name": "Content Owner", - "verbose_name_plural": "Content Owners", - }, - ), - migrations.CreateModel( - name="CFGOVOwnedPages", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - to="v1.cfgovpage", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="owned_pages", - to="v1.cfgovcontentowner", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.AddField( - model_name="cfgovpage", - name="content_owners", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text="A comma separated list of internal content owners.Use division acronyms only.", - related_name="cfgov_content_owners", - through="v1.CFGOVOwnedPages", - to="v1.CFGOVContentOwner", - verbose_name="Content Owners", - ), - ), - migrations.AlterField( - model_name="cfgovauthoredpages", - name="id", - field=models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - migrations.CreateModel( - name="CFGOVPageCategory", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "name", - models.CharField( - choices=[ - ( - "Administrative adjudication docket", - ( - ( - "administrative-adjudication", - "Administrative adjudication", - ), - ( - "stipulation-and-constent-order", - "Stipulation and consent order", - ), - ), - ), - ( - "Amicus Brief", - ( - ("us-supreme-court", "U.S. Supreme Court"), - ( - "fed-circuit-court", - "Federal Circuit Court", - ), - ( - "fed-district-court", - "Federal District Court", - ), - ("state-court", "State Court"), - ), - ), - ( - "Blog", - ( - ("at-the-cfpb", "At the CFPB"), - ( - "directors-notebook", - "Director's notebook", - ), - ( - "policy_compliance", - "Policy and compliance", - ), - ( - "data-research-reports", - "Data, research, and reports", - ), - ( - "info-for-consumers", - "Info for consumers", - ), - ), - ), - ( - "Consumer Reporting Companies", - ( - ("nationwide", "Nationwide"), - ( - "employment-screening", - "Employment screening", - ), - ("tenant-screening", "Tenant screening"), - ( - "check-bank-screening", - "Check and bank screening", - ), - ( - "personal-property-insurance", - "Personal property insurance", - ), - ("medical", "Medical"), - ( - "low-income-and-subprime", - "Low-income and subprime", - ), - ( - "supplementary-reports", - "Supplementary reports", - ), - ("utilities", "Utilities"), - ("retail", "Retail"), - ("gaming", "Gaming"), - ), - ), - ( - "Enforcement Action", - ( - ( - "administrative-proceeding", - "Administrative Proceeding", - ), - ("civil-action", "Civil Action"), - ), - ), - ( - "Final rule", - ( - ( - "interim-final-rule", - "Interim final rule", - ), - ("final-rule", "Final rule"), - ), - ), - ( - "FOIA Frequently Requested Record", - ( - ("report", "Report"), - ("log", "Log"), - ("record", "Record"), - ), - ), - ( - "Newsroom", - ( - ( - "consumer-advisories", - "Consumer advisories", - ), - ( - "directors-statement", - "Director's statement", - ), - ("op-ed", "Op-ed"), - ("press-release", "Press release"), - ("speech", "Speech"), - ("testimony", "Testimony"), - ), - ), - ( - "Notice and Opportunity for Comment", - ( - ( - "notice-proposed-rule", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule", "Proposed rule"), - ( - "interim-final-rule-2", - "Interim final rule", - ), - ( - "request-comment-info", - "Request for comment or information", - ), - ("proposed-policy", "Proposed policy"), - ( - "intent-preempt-determ", - "Intent to make preemption determination", - ), - ( - "info-collect-activity", - "Information collection activities", - ), - ( - "notice-privacy-act", - "Notice related to Privacy Act", - ), - ), - ), - ( - "Research Hub", - ( - ("data-point", "Data point"), - ( - "industry-markets", - "Industry and markets", - ), - ), - ), - ( - "Research Report", - ( - ( - "consumer-complaint", - "Consumer complaint", - ), - ( - "super-highlight", - "Supervisory Highlights", - ), - ("data-point", "Data point"), - ( - "industry-markets", - "Industry and markets", - ), - ( - "consumer-edu-empower", - "Consumer education and empowerment", - ), - ("to-congress", "To Congress"), - ("data-spotlight", "Data spotlight"), - ), - ), - ( - "Rule Under Development", - ( - ( - "notice-proposed-rule-2", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule-2", "Proposed rule"), - ), - ), - ( - "Story", - ( - ("auto-loans", "Auto loans"), - ( - "bank-accts-services", - "Bank accounts and services", - ), - ("credit-cards", "Credit cards"), - ( - "credit-reports-scores", - "Credit reports and scores", - ), - ("debt-collection", "Debt collection"), - ("money-transfers", "Money transfers"), - ("mortgages", "Mortgages"), - ("payday-loans", "Payday loans"), - ("prepaid-cards", "Prepaid cards"), - ("student-loans", "Student loans"), - ), - ), - ], - max_length=255, - ), - ), - ( - "page", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="categories", - to="v1.cfgovpage", - ), - ), - ], - options={ - "ordering": ["name"], - "abstract": False, - }, - ), - migrations.CreateModel( - name="CFGOVRendition", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "filter_spec", - models.CharField(db_index=True, max_length=255), - ), - ( - "file", - models.ImageField( - height_field="height", - upload_to=wagtail.images.models.get_rendition_upload_to, - width_field="width", - ), - ), - ("width", models.IntegerField(editable=False)), - ("height", models.IntegerField(editable=False)), - ( - "focal_point_key", - models.CharField( - blank=True, default="", editable=False, max_length=16 - ), - ), - ( - "image", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="renditions", - to="v1.cfgovimage", - ), - ), - ], - options={ - "unique_together": { - ("image", "filter_spec", "focal_point_key") - }, - }, - ), - migrations.AlterField( - model_name="portalcategory", - name="id", - field=models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - migrations.AlterField( - model_name="portaltopic", - name="id", - field=models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - migrations.AlterField( - model_name="resource", - name="id", - field=models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Consumer Advisories", - "Consumer advisories", - ), - ( - "Director's Statement", - "Director's statement", - ), - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "tag_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "any", - "Include related posts that match ANY topic tags on this page", - ), - ( - "all", - "Include related posts that match ALL topic tags on this page", - ), - ( - "ignore", - "IGNORE topic tags when selecting related posts", - ), - ] - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ( - "email_signup", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Stay informed", required=False - ), - ), - ( - "default_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - label="Default heading style", - required=False, - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - required=False, - ), - ), - ( - "gd_code", - wagtail.blocks.CharBlock( - help_text="Code for the topic (i.e., mailing list) you want people who submit this form to subscribe to. Format: USCFPB_###", - label="GovDelivery code", - required=False, - ), - ), - ( - "disclaimer_page", - wagtail.blocks.PageChooserBlock( - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - label="Privacy Act statement", - required=False, - ), - ), - ] - ), - ), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.CreateModel( - name="ResearchHubPage", - fields=[ - ( - "sublandingfilterablepage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.sublandingfilterablepage", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.sublandingfilterablepage",), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Consumer Advisories", - "Consumer advisories", - ), - ( - "Director's Statement", - "Director's statement", - ), - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "tag_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "any", - "Include related posts that match ANY topic tags on this page", - ), - ( - "all", - "Include related posts that match ALL topic tags on this page", - ), - ( - "ignore", - "IGNORE topic tags when selecting related posts", - ), - ] - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.CreateModel( - name="SublandingPage", - fields=[ - ( - "cfgovpage_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="v1.cfgovpage", - ), - ), - ( - "header", - wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - ( - "content", - wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "information", - "Information", - ), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(), - ), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ( - "link", - "Link", - ), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock( - label="Tag" - ), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "post_preview_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="How many posts do you want to show?", - label="Limit", - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - default="Published" - ), - ), - ] - ), - ), - ( - "contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "sidebar_breakout", - wagtail.fields.StreamField( - [ - ("slug", wagtail.blocks.CharBlock(icon="title")), - ( - "heading", - wagtail.blocks.CharBlock(icon="title"), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "breakout_image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.images.blocks.ImageChooserBlock(), - ), - ( - "is_round", - wagtail.blocks.BooleanBlock( - default=True, - label="Round?", - required=False, - ), - ), - ( - "icon", - wagtail.blocks.CharBlock( - help_text="Enter icon class name." - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - label="Introduction Heading", - required=False, - ), - ), - ( - "body", - wagtail.blocks.TextBlock( - label="Introduction Body", - required=False, - ), - ), - ], - heading="Breakout Image", - icon="image", - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Consumer Advisories", - "Consumer advisories", - ), - ( - "Director's Statement", - "Director's statement", - ), - ( - "Op-Ed", - "Op-ed", - ), - ( - "Press Release", - "Press release", - ), - ( - "Speech", - "Speech", - ), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "tag_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "any", - "Include related posts that match ANY topic tags on this page", - ), - ( - "all", - "Include related posts that match ALL topic tags on this page", - ), - ( - "ignore", - "IGNORE topic tags when selecting related posts", - ), - ] - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "job_listing_list", - wagtail.blocks.StructBlock( - [ - ( - "more_jobs_page", - wagtail.blocks.PageChooserBlock( - help_text="Link to full list of jobs" - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - ( - "portal_topic", - models.ForeignKey( - blank=True, - help_text="Select a topic if this is a MONEY TOPICS portal page.", - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="portal_pages", - to="v1.portaltopic", - ), - ), - ], - options={ - "abstract": False, - }, - bases=("v1.cfgovpage",), - ), - migrations.CreateModel( - name="EmailSignUp", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "topic", - models.CharField( - blank=True, - max_length=255, - null=True, - verbose_name="Topic name (internal only)", - ), - ), - ( - "code", - models.TextField( - blank=True, - help_text="GovDelivery Code (USCFPB_###) for the list people who submit the form will sign up for. Provide either this or the signup URL, but not both.", - null=True, - verbose_name="GovDelivery Code", - ), - ), - ( - "url", - models.URLField( - blank=True, - help_text="URL for the GovDelivery signup page people will be linked to in order to signup. Provide either this or the signup URL, but not both.", - null=True, - verbose_name="GovDelivery URL", - ), - ), - ( - "heading", - models.TextField(blank=True, default="Stay informed"), - ), - ( - "default_heading", - models.BooleanField( - blank=True, - default=True, - help_text="If selected, heading will be styled as an H5 with green top rule. Deselect to style header as H3.", - null=True, - verbose_name="Default heading style", - ), - ), - ( - "text", - wagtail.fields.RichTextField( - blank=True, - help_text="Write a sentence or two about what kinds of emails the user is signing up for, how frequently they will be sent, etc.", - ), - ), - ( - "disclaimer_page", - models.ForeignKey( - blank=True, - help_text='Choose the page that the "See Privacy Act statement" link should go to. If in doubt, use "Generic Email Sign-Up Privacy Act Statement".', - null=True, - on_delete=django.db.models.deletion.PROTECT, - to="wagtailcore.page", - verbose_name="Privacy Act statement", - ), - ), - ], - bases=(wagtail.search.index.Indexed, models.Model), - ), - migrations.DeleteModel( - name="Feedback", - ), - migrations.AlterField( - model_name="blogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(max_length=500), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - ), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="browsepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ( - "chart_block", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar | % y-axis values"), - ( - "line", - "Line | millions/billions y-axis values", - ), - ( - "line-index", - "Line-Index | integer y-axis values", - ), - ( - "tile_map", - "Tile Map | grid-like USA map", - ), - ] - ), - ), - ( - "color_scheme", - wagtail.blocks.ChoiceBlock( - choices=[ - ("blue", "Blue"), - ("gold", "Gold"), - ("green", "Green"), - ("navy", "Navy"), - ("neutral", "Neutral"), - ("purple", "Purple"), - ("teal", "Teal"), - ], - help_text='Chart\'s color scheme. See "https://github.com/cfpb/cfpb-chart-builder#createchart-options-".', - required=False, - ), - ), - ( - "data_source", - wagtail.blocks.CharBlock( - help_text='Location of the chart\'s data source relative to "https://files.consumerfinance.gov/data/". For example,"consumer-credit-trends/auto-loans/num_data_AUT.csv".', - required=True, - ), - ), - ( - "date_published", - wagtail.blocks.DateBlock( - help_text="Automatically generated when CCT cron job runs" - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Briefly summarize the chart for visually impaired users.", - required=True, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "metadata", - wagtail.blocks.CharBlock( - help_text='Optional metadata for the chart to use. For example, with CCT this would be the chart\'s "group".', - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text to display as a footnote. For example, "Data from the last six months are not final."', - required=False, - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - help_text="Custom y-axis label. NOTE: Line-Index chart y-axis is not overridable with this field!", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_chart_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_map_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_downloads_block", - wagtail.blocks.StructBlock( - [ - ( - "show_archives", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to allow the archival section to display. No section will appear if there are no archival downloads.", - required=False, - ), - ) - ] - ), - ), - ( - "data_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "market_key", - wagtail.blocks.CharBlock( - help_text="Market identifier, e.g. AUT", - max_length=20, - required=True, - ), - ), - ( - "num_originations", - wagtail.blocks.CharBlock( - help_text="Number of originations, e.g. 1.2 million", - max_length=20, - ), - ), - ( - "value_originations", - wagtail.blocks.CharBlock( - help_text="Total dollar value of originations, e.g. $3.4 billion", - max_length=20, - ), - ), - ( - "year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "num_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Auto loans originated", - max_length=100, - ), - ), - ( - "value_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Dollar volume of new loans", - max_length=100, - ), - ), - ( - "year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year originations", - max_length=100, - ), - ), - ( - "inquiry_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for inquiry data", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year inquiries", - max_length=100, - required=False, - ), - ), - ( - "tightness_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for credit tightness data", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year credit tightness", - max_length=100, - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", required=False - ), - ), - ] - ), - ), - ("job_listing_table", jobmanager.blocks.JobListingTable()), - ( - "yes_checklist", - wagtail.blocks.StructBlock( - [ - ( - "checklist", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "item", - wagtail.blocks.CharBlock( - help_text="Short description for a checkbox item" - ), - ), - ( - "details", - wagtail.blocks.RichTextBlock( - help_text="Deeper explanation of the item", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "raf_tool", - wagtail.blocks.StructBlock( - [ - ( - "county_threshold", - wagtail.blocks.IntegerBlock( - help_text="Optional: Add a number to determine how many results trigger display of county dropdown for a state.", - required=False, - ), - ) - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="campaignpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_units", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="campaignpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "jumbo_hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_50_50", - wagtail.blocks.BooleanBlock( - help_text="Optional. Set both the hero text and image to 50% width, prevent the background color from appearing in the left/right margins of the hero, and also add a border to the hero area. Requires the uploaded large image to be 755px x 575px.", - label="50/50 layout", - required=False, - ), - ), - ] - ), - ), - ( - "features", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="enforcementactionpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="eventpage", - name="persistent_body", - field=wagtail.fields.StreamField( - [ - ("content", wagtail.blocks.RichTextBlock(icon="edit")), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock(required=False), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="landingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="learnpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "contact_expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ) - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="storypage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="storypage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "jumbo_hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_50_50", - wagtail.blocks.BooleanBlock( - help_text="Optional. Set both the hero text and image to 50% width, prevent the background color from appearing in the left/right margins of the hero, and also add a border to the hero area. Requires the uploaded large image to be 755px x 575px.", - label="50/50 layout", - required=False, - ), - ), - ] - ), - ), - ( - "features", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="sublandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "post_preview_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="How many posts do you want to show?", - label="Limit", - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - default="Published" - ), - ), - ] - ), - ), - ( - "contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="blogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(max_length=500), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - ), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="learnpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "contact_expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ) - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="storypage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="legacyblogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(max_length=500), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - ), - ), - ( - "content", - wagtail.blocks.RawHTMLBlock( - help_text="Content from WordPress unescaped." - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="cfgovpagecategory", - name="name", - field=models.CharField( - choices=[ - ( - "Administrative adjudication docket", - ( - ( - "administrative-adjudication", - "Administrative adjudication", - ), - ( - "stipulation-and-constent-order", - "Stipulation and consent order", - ), - ), - ), - ( - "Amicus Brief", - ( - ("us-supreme-court", "U.S. Supreme Court"), - ("fed-circuit-court", "Federal Circuit Court"), - ("fed-district-court", "Federal District Court"), - ("state-court", "State Court"), - ), - ), - ( - "Blog", - ( - ("at-the-cfpb", "At the CFPB"), - ("directors-notebook", "Director's notebook"), - ("policy-compliance", "Policy and compliance"), - ( - "data-research-reports", - "Data, research, and reports", - ), - ("info-for-consumers", "Info for consumers"), - ), - ), - ( - "Consumer Reporting Companies", - ( - ("nationwide", "Nationwide"), - ("employment-screening", "Employment screening"), - ("tenant-screening", "Tenant screening"), - ( - "check-bank-screening", - "Check and bank screening", - ), - ( - "personal-property-insurance", - "Personal property insurance", - ), - ("medical", "Medical"), - ( - "low-income-and-subprime", - "Low-income and subprime", - ), - ("supplementary-reports", "Supplementary reports"), - ("utilities", "Utilities"), - ("retail", "Retail"), - ("gaming", "Gaming"), - ), - ), - ( - "Enforcement Action", - ( - ( - "administrative-proceeding", - "Administrative Proceeding", - ), - ("civil-action", "Civil Action"), - ), - ), - ( - "Final rule", - ( - ("interim-final-rule", "Interim final rule"), - ("final-rule", "Final rule"), - ), - ), - ( - "FOIA Frequently Requested Record", - ( - ("report", "Report"), - ("log", "Log"), - ("record", "Record"), - ), - ), - ( - "Newsroom", - ( - ("consumer-advisories", "Consumer advisories"), - ("directors-statement", "Director's statement"), - ("op-ed", "Op-ed"), - ("press-release", "Press release"), - ("speech", "Speech"), - ("testimony", "Testimony"), - ), - ), - ( - "Notice and Opportunity for Comment", - ( - ( - "notice-proposed-rule", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule", "Proposed rule"), - ("interim-final-rule-2", "Interim final rule"), - ( - "request-comment-info", - "Request for comment or information", - ), - ("proposed-policy", "Proposed policy"), - ( - "intent-preempt-determ", - "Intent to make preemption determination", - ), - ( - "info-collect-activity", - "Information collection activities", - ), - ( - "notice-privacy-act", - "Notice related to Privacy Act", - ), - ), - ), - ( - "Research Hub", - ( - ("data-point", "Data point"), - ("industry-markets", "Industry and markets"), - ), - ), - ( - "Research Report", - ( - ("consumer-complaint", "Consumer complaint"), - ("super-highlight", "Supervisory Highlights"), - ("data-point", "Data point"), - ("industry-markets", "Industry and markets"), - ( - "consumer-edu-empower", - "Consumer education and empowerment", - ), - ("to-congress", "To Congress"), - ("data-spotlight", "Data spotlight"), - ), - ), - ( - "Rule Under Development", - ( - ( - "notice-proposed-rule-2", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule-2", "Proposed rule"), - ), - ), - ( - "Story", - ( - ("auto-loans", "Auto loans"), - ( - "bank-accts-services", - "Bank accounts and services", - ), - ("credit-cards", "Credit cards"), - ( - "credit-reports-scores", - "Credit reports and scores", - ), - ("debt-collection", "Debt collection"), - ("money-transfers", "Money transfers"), - ("mortgages", "Mortgages"), - ("payday-loans", "Payday loans"), - ("prepaid-cards", "Prepaid cards"), - ("student-loans", "Student loans"), - ), - ), - ], - max_length=255, - ), - ), - migrations.AlterField( - model_name="blogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="legacyblogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "street", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, - required=False, - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, - required=False, - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ( - "content", - wagtail.blocks.RawHTMLBlock( - help_text="Content from WordPress unescaped." - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="cfgovpagecategory", - name="name", - field=models.CharField( - choices=[ - ( - "Administrative adjudication docket", - ( - ( - "administrative-adjudication", - "Administrative adjudication", - ), - ( - "stipulation-and-constent-order", - "Stipulation and consent order", - ), - ), - ), - ( - "Amicus Brief", - ( - ("us-supreme-court", "U.S. Supreme Court"), - ("fed-circuit-court", "Federal Circuit Court"), - ("fed-district-court", "Federal District Court"), - ("state-court", "State Court"), - ), - ), - ( - "Blog", - ( - ("at-the-cfpb", "At the CFPB"), - ("directors-notebook", "Director's notebook"), - ("policy-compliance", "Policy and compliance"), - ( - "data-research-reports", - "Data, research, and reports", - ), - ("info-for-consumers", "Info for consumers"), - ), - ), - ( - "Consumer Reporting Companies", - ( - ("nationwide", "Nationwide"), - ("employment-screening", "Employment screening"), - ("tenant-screening", "Tenant screening"), - ( - "check-bank-screening", - "Check and bank screening", - ), - ( - "personal-property-insurance", - "Personal property insurance", - ), - ("medical", "Medical"), - ( - "low-income-and-subprime", - "Low-income and subprime", - ), - ("supplementary-reports", "Supplementary reports"), - ("utilities", "Utilities"), - ("retail", "Retail"), - ("gaming", "Gaming"), - ), - ), - ( - "Enforcement Action", - ( - ( - "administrative-proceeding", - "Administrative Proceeding", - ), - ("civil-action", "Civil Action"), - ), - ), - ( - "Final rule", - ( - ("interim-final-rule", "Interim final rule"), - ("final-rule", "Final rule"), - ), - ), - ( - "FOIA Frequently Requested Record", - ( - ("report", "Report"), - ("log", "Log"), - ("record", "Record"), - ), - ), - ( - "Newsroom", - ( - ("consumer-advisories", "Consumer advisories"), - ("directors-statement", "Director's statement"), - ("op-ed", "Op-ed"), - ("press-release", "Press release"), - ("speech", "Speech"), - ("testimony", "Testimony"), - ), - ), - ( - "Notice and Opportunity for Comment", - ( - ( - "notice-proposed-rule", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule", "Proposed rule"), - ("interim-final-rule-2", "Interim final rule"), - ( - "request-comment-info", - "Request for comment or information", - ), - ("proposed-policy", "Proposed policy"), - ( - "intent-preempt-determ", - "Intent to make preemption determination", - ), - ( - "info-collect-activity", - "Information collection activities", - ), - ( - "notice-privacy-act", - "Notice related to Privacy Act", - ), - ), - ), - ( - "Research Hub", - ( - ( - "research-publication", - "Office of Research Publication", - ), - ), - ), - ( - "Research Report", - ( - ("consumer-complaint", "Consumer complaint"), - ("super-highlight", "Supervisory Highlights"), - ("data-point", "Data point"), - ("industry-markets", "Industry and markets"), - ( - "consumer-edu-empower", - "Consumer education and empowerment", - ), - ("to-congress", "To Congress"), - ("data-spotlight", "Data spotlight"), - ), - ), - ( - "Rule Under Development", - ( - ( - "notice-proposed-rule-2", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule-2", "Proposed rule"), - ), - ), - ( - "Story", - ( - ("auto-loans", "Auto loans"), - ( - "bank-accts-services", - "Bank accounts and services", - ), - ("credit-cards", "Credit cards"), - ( - "credit-reports-scores", - "Credit reports and scores", - ), - ("debt-collection", "Debt collection"), - ("money-transfers", "Money transfers"), - ("mortgages", "Mortgages"), - ("payday-loans", "Payday loans"), - ("prepaid-cards", "Prepaid cards"), - ("student-loans", "Student loans"), - ), - ), - ], - max_length=255, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="language", - field=models.CharField( - choices=[ - ("ar", "Arabic"), - ("zh-Hant", "Chinese (Traditional)"), - ("en", "English"), - ("ht", "Haitian Creole"), - ("ko", "Korean"), - ("ru", "Russian"), - ("es", "Spanish"), - ("tl", "Tagalog"), - ("vi", "Vietnamese"), - ], - default="en", - max_length=100, - ), - ), - migrations.AddField( - model_name="cfgovpage", - name="english_page", - field=models.ForeignKey( - blank=True, - help_text="Optionally select the English version of this page (non-English pages only)", - null=True, - on_delete=django.db.models.deletion.SET_NULL, - related_name="non_english_pages", - to="wagtailcore.page", - ), - ), - migrations.AlterField( - model_name="cfgovpagecategory", - name="name", - field=models.CharField( - choices=[ - ( - "Administrative adjudication docket", - ( - ( - "administrative-adjudication", - "Administrative adjudication", - ), - ( - "stipulation-and-constent-order", - "Stipulation and consent order", - ), - ), - ), - ( - "Amicus Brief", - ( - ("us-supreme-court", "U.S. Supreme Court"), - ("fed-circuit-court", "Federal Circuit Court"), - ("fed-district-court", "Federal District Court"), - ("state-court", "State Court"), - ), - ), - ( - "Blog", - ( - ("at-the-cfpb", "At the CFPB"), - ("directors-notebook", "Director's notebook"), - ("policy-compliance", "Policy and compliance"), - ( - "data-research-reports", - "Data, research, and reports", - ), - ("info-for-consumers", "Info for consumers"), - ), - ), - ( - "Consumer Reporting Companies", - ( - ("nationwide", "Nationwide"), - ("employment-screening", "Employment screening"), - ("tenant-screening", "Tenant screening"), - ( - "check-bank-screening", - "Check and bank account screening", - ), - ( - "personal-property-insurance", - "Personal property insurance", - ), - ("medical", "Medical"), - ( - "low-income-and-subprime", - "Low-income and subprime", - ), - ("supplementary-reports", "Supplementary reports"), - ("utilities", "Utilities"), - ("retail", "Retail"), - ("gaming", "Gaming"), - ), - ), - ( - "Enforcement Action", - ( - ( - "administrative-proceeding", - "Administrative Proceeding", - ), - ("civil-action", "Civil Action"), - ), - ), - ( - "Final rule", - ( - ("interim-final-rule", "Interim final rule"), - ("final-rule", "Final rule"), - ), - ), - ( - "FOIA Frequently Requested Record", - ( - ("report", "Report"), - ("log", "Log"), - ("record", "Record"), - ), - ), - ( - "Newsroom", - ( - ("consumer-advisories", "Consumer advisories"), - ("directors-statement", "Director's statement"), - ("op-ed", "Op-ed"), - ("press-release", "Press release"), - ("speech", "Speech"), - ("testimony", "Testimony"), - ), - ), - ( - "Notice and Opportunity for Comment", - ( - ( - "notice-proposed-rule", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule", "Proposed rule"), - ("interim-final-rule-2", "Interim final rule"), - ( - "request-comment-info", - "Request for comment or information", - ), - ("proposed-policy", "Proposed policy"), - ( - "intent-preempt-determ", - "Intent to make preemption determination", - ), - ( - "info-collect-activity", - "Information collection activities", - ), - ( - "notice-privacy-act", - "Notice related to Privacy Act", - ), - ), - ), - ( - "Research Hub", - ( - ( - "research-publication", - "Office of Research Publication", - ), - ), - ), - ( - "Research Report", - ( - ("consumer-complaint", "Consumer complaint"), - ("super-highlight", "Supervisory Highlights"), - ("data-point", "Data point"), - ("industry-markets", "Industry and markets"), - ( - "consumer-edu-empower", - "Consumer education and empowerment", - ), - ("to-congress", "To Congress"), - ("data-spotlight", "Data spotlight"), - ), - ), - ( - "Rule Under Development", - ( - ( - "notice-proposed-rule-2", - "Advance notice of proposed rulemaking", - ), - ("proposed-rule-2", "Proposed rule"), - ), - ), - ( - "Story", - ( - ("auto-loans", "Auto loans"), - ( - "bank-accts-services", - "Bank accounts and services", - ), - ("credit-cards", "Credit cards"), - ( - "credit-reports-scores", - "Credit reports and scores", - ), - ("debt-collection", "Debt collection"), - ("money-transfers", "Money transfers"), - ("mortgages", "Mortgages"), - ("payday-loans", "Payday loans"), - ("prepaid-cards", "Prepaid cards"), - ("student-loans", "Student loans"), - ), - ), - ], - max_length=255, - ), - ), - migrations.RemoveField( - model_name="contact", - name="body_shown_in_expandables", - ), - migrations.AlterField( - model_name="blogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="browsepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ( - "chart_block", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar | % y-axis values"), - ( - "line", - "Line | millions/billions y-axis values", - ), - ( - "line-index", - "Line-Index | integer y-axis values", - ), - ( - "tile_map", - "Tile Map | grid-like USA map", - ), - ] - ), - ), - ( - "color_scheme", - wagtail.blocks.ChoiceBlock( - choices=[ - ("blue", "Blue"), - ("gold", "Gold"), - ("green", "Green"), - ("navy", "Navy"), - ("neutral", "Neutral"), - ("purple", "Purple"), - ("teal", "Teal"), - ], - help_text='Chart\'s color scheme. See "https://github.com/cfpb/cfpb-chart-builder#createchart-options-".', - required=False, - ), - ), - ( - "data_source", - wagtail.blocks.CharBlock( - help_text='Location of the chart\'s data source relative to "https://files.consumerfinance.gov/data/". For example,"consumer-credit-trends/auto-loans/num_data_AUT.csv".', - required=True, - ), - ), - ( - "date_published", - wagtail.blocks.DateBlock( - help_text="Automatically generated when CCT cron job runs" - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Briefly summarize the chart for visually impaired users.", - required=True, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "metadata", - wagtail.blocks.CharBlock( - help_text='Optional metadata for the chart to use. For example, with CCT this would be the chart\'s "group".', - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text to display as a footnote. For example, "Data from the last six months are not final."', - required=False, - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - help_text="Custom y-axis label. NOTE: Line-Index chart y-axis is not overridable with this field!", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_chart_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_map_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_downloads_block", - wagtail.blocks.StructBlock( - [ - ( - "show_archives", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to allow the archival section to display. No section will appear if there are no archival downloads.", - required=False, - ), - ) - ] - ), - ), - ( - "data_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "market_key", - wagtail.blocks.CharBlock( - help_text="Market identifier, e.g. AUT", - max_length=20, - required=True, - ), - ), - ( - "num_originations", - wagtail.blocks.CharBlock( - help_text="Number of originations, e.g. 1.2 million", - max_length=20, - ), - ), - ( - "value_originations", - wagtail.blocks.CharBlock( - help_text="Total dollar value of originations, e.g. $3.4 billion", - max_length=20, - ), - ), - ( - "year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "num_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Auto loans originated", - max_length=100, - ), - ), - ( - "value_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Dollar volume of new loans", - max_length=100, - ), - ), - ( - "year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year originations", - max_length=100, - ), - ), - ( - "inquiry_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for inquiry data", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year inquiries", - max_length=100, - required=False, - ), - ), - ( - "tightness_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for credit tightness data", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year credit tightness", - max_length=100, - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", required=False - ), - ), - ] - ), - ), - ("job_listing_table", jobmanager.blocks.JobListingTable()), - ( - "yes_checklist", - wagtail.blocks.StructBlock( - [ - ( - "checklist", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "item", - wagtail.blocks.CharBlock( - help_text="Short description for a checkbox item" - ), - ), - ( - "details", - wagtail.blocks.RichTextBlock( - help_text="Deeper explanation of the item", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "raf_tool", - wagtail.blocks.StructBlock( - [ - ( - "county_threshold", - wagtail.blocks.IntegerBlock( - help_text="Optional: Add a number to determine how many results trigger display of county dropdown for a state.", - required=False, - ), - ) - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="enforcementactionpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="learnpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="legacyblogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ( - "content", - wagtail.blocks.RawHTMLBlock( - help_text="Content from WordPress unescaped." - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="storypage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="sublandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "post_preview_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="How many posts do you want to show?", - label="Limit", - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - default="Published" - ), - ), - ] - ), - ), - ( - "contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="learnpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "contact_us_table", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "rows", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.ContactUsRow, - collapsed=True, - min_num=1, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="language", - field=models.CharField( - choices=[ - ("ar", "Arabic"), - ("zh-Hant", "Chinese"), - ("en", "English"), - ("ht", "Haitian Creole"), - ("ko", "Korean"), - ("ru", "Russian"), - ("es", "Spanish"), - ("tl", "Tagalog"), - ("vi", "Vietnamese"), - ], - default="en", - max_length=100, - ), - ), - migrations.AddField( - model_name="browsefilterablepage", - name="navigation_label", - field=models.CharField( - blank=True, - help_text="Optional short label for left navigation.", - max_length=100, - null=True, - ), - ), - migrations.AddField( - model_name="browsepage", - name="navigation_label", - field=models.CharField( - blank=True, - help_text="Optional short label for left navigation.", - max_length=100, - null=True, - ), - ), - migrations.AlterField( - model_name="browsefilterablepage", - name="secondary_nav_exclude_sibling_pages", - field=models.BooleanField( - default=False, - help_text="Don't show siblings of this page in the left navigation.", - ), - ), - migrations.AlterField( - model_name="browsepage", - name="secondary_nav_exclude_sibling_pages", - field=models.BooleanField( - default=False, - help_text="Don't show siblings of this page in the left navigation.", - ), - ), - migrations.DeleteModel( - name="IndexedPageRevision", - ), - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "crc_table", - wagtail.blocks.StructBlock( - [ - ( - "website", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "phone", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "mailing_address", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=None, - ), - ), - migrations.AlterField( - model_name="abstractfilterpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "article_subheader", - wagtail.blocks.RichTextBlock(icon="form"), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "item_introduction", - wagtail.blocks.StructBlock( - [ - ( - "show_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Whether to show the category or not (category must be set in 'Configuration').", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "date", - wagtail.blocks.DateBlock(required=False), - ), - ( - "has_social", - wagtail.blocks.BooleanBlock( - help_text="Whether to show the share icons or not.", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="banner", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "content", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ) - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="blogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsefilterablepage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ( - "chart_block", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar | % y-axis values"), - ( - "line", - "Line | millions/billions y-axis values", - ), - ( - "line-index", - "Line-Index | integer y-axis values", - ), - ( - "tile_map", - "Tile Map | grid-like USA map", - ), - ] - ), - ), - ( - "color_scheme", - wagtail.blocks.ChoiceBlock( - choices=[ - ("blue", "Blue"), - ("gold", "Gold"), - ("green", "Green"), - ("navy", "Navy"), - ("neutral", "Neutral"), - ("purple", "Purple"), - ("teal", "Teal"), - ], - help_text='Chart\'s color scheme. See "https://github.com/cfpb/cfpb-chart-builder#createchart-options-".', - required=False, - ), - ), - ( - "data_source", - wagtail.blocks.CharBlock( - help_text='Location of the chart\'s data source relative to "https://files.consumerfinance.gov/data/". For example,"consumer-credit-trends/auto-loans/num_data_AUT.csv".', - required=True, - ), - ), - ( - "date_published", - wagtail.blocks.DateBlock( - help_text="Automatically generated when CCT cron job runs" - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Briefly summarize the chart for visually impaired users.", - required=True, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "metadata", - wagtail.blocks.CharBlock( - help_text='Optional metadata for the chart to use. For example, with CCT this would be the chart\'s "group".', - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text to display as a footnote. For example, "Data from the last six months are not final."', - required=False, - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - help_text="Custom y-axis label. NOTE: Line-Index chart y-axis is not overridable with this field!", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_chart_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_map_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_downloads_block", - wagtail.blocks.StructBlock( - [ - ( - "show_archives", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to allow the archival section to display. No section will appear if there are no archival downloads.", - required=False, - ), - ) - ] - ), - ), - ( - "data_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "market_key", - wagtail.blocks.CharBlock( - help_text="Market identifier, e.g. AUT", - max_length=20, - required=True, - ), - ), - ( - "num_originations", - wagtail.blocks.CharBlock( - help_text="Number of originations, e.g. 1.2 million", - max_length=20, - ), - ), - ( - "value_originations", - wagtail.blocks.CharBlock( - help_text="Total dollar value of originations, e.g. $3.4 billion", - max_length=20, - ), - ), - ( - "year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "num_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Auto loans originated", - max_length=100, - ), - ), - ( - "value_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Dollar volume of new loans", - max_length=100, - ), - ), - ( - "year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year originations", - max_length=100, - ), - ), - ( - "inquiry_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for inquiry data", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year inquiries", - max_length=100, - required=False, - ), - ), - ( - "tightness_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for credit tightness data", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year credit tightness", - max_length=100, - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", required=False - ), - ), - ] - ), - ), - ("job_listing_table", jobmanager.blocks.JobListingTable()), - ( - "yes_checklist", - wagtail.blocks.StructBlock( - [ - ( - "checklist", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "item", - wagtail.blocks.CharBlock( - help_text="Short description for a checkbox item" - ), - ), - ( - "details", - wagtail.blocks.RichTextBlock( - help_text="Deeper explanation of the item", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "raf_tool", - wagtail.blocks.StructBlock( - [ - ( - "county_threshold", - wagtail.blocks.IntegerBlock( - help_text="Optional: Add a number to determine how many results trigger display of county dropdown for a state.", - required=False, - ), - ) - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsepage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="campaignpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_units", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="campaignpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "jumbo_hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_50_50", - wagtail.blocks.BooleanBlock( - help_text="Optional. Set both the hero text and image to 50% width, prevent the background color from appearing in the left/right margins of the hero, and also add a border to the hero area. Requires the uploaded large image to be 755px x 575px.", - label="50/50 layout", - required=False, - ), - ), - ] - ), - ), - ( - "features", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="cfgovpage", - name="sidefoot", - field=wagtail.fields.StreamField( - [ - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Consumer Advisories", - "Consumer advisories", - ), - ( - "Director's Statement", - "Director's statement", - ), - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "tag_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "any", - "Include related posts that match ANY topic tags on this page", - ), - ( - "all", - "Include related posts that match ALL topic tags on this page", - ), - ( - "ignore", - "IGNORE topic tags when selecting related posts", - ), - ] - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "related_metadata", - wagtail.blocks.StructBlock( - [ - ( - "slug", - wagtail.blocks.CharBlock(max_length=100), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "blob", - wagtail.blocks.RichTextBlock(), - ), - ], - icon="pilcrow", - ), - ), - ( - "list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ], - icon="list-ul", - ), - ), - ( - "date", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - max_length=100 - ), - ), - ( - "date", - wagtail.blocks.DateBlock(), - ), - ], - icon="date", - ), - ), - ( - "topics", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - default="Topics", - max_length=100, - ), - ), - ( - "show_topics", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ], - icon="tag", - ), - ), - ] - ), - ), - ( - "is_half_width", - wagtail.blocks.BooleanBlock( - default=False, required=False - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "sidebar_contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ("rss_feed", v1.atomic_elements.molecules.RSSFeed()), - ( - "social_media", - wagtail.blocks.StructBlock( - [ - ( - "is_share_view", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If unchecked, social media icons will link users to official CFPB accounts. Do not fill in any further fields.", - label="Desired action: share this page", - required=False, - ), - ), - ( - "blurb", - wagtail.blocks.CharBlock( - default="Look what I found on the CFPB's site!", - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ( - "twitter_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for Twitter shares. If blank, will default to value of blurb field above.", - max_length=100, - required=False, - ), - ), - ( - "twitter_related", - wagtail.blocks.CharBlock( - help_text='(Optional) A comma-separated list of accounts related to the content of the shared URL. Do not enter the @ symbol. If blank, it will default to just "cfpb".', - required=False, - ), - ), - ( - "twitter_hashtags", - wagtail.blocks.CharBlock( - help_text="(Optional) A comma-separated list of hashtags to be appended to default tweet text.", - required=False, - ), - ), - ( - "twitter_lang", - wagtail.blocks.CharBlock( - help_text='(Optional) Loads text components in the specified language, if other than English. E.g., use "es" for Spanish. See https://dev.twitter.com/web/overview/languages for a list of supported language codes.', - required=False, - ), - ), - ( - "email_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom subject for email shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "email_text", - wagtail.blocks.CharBlock( - help_text='(Optional) Custom text for email shares. If blank, will default to "Check out this page from the CFPB".', - required=False, - ), - ), - ( - "email_signature", - wagtail.blocks.CharBlock( - help_text="(Optional) Adds a custom signature line to email shares. ", - required=False, - ), - ), - ( - "linkedin_title", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom title for LinkedIn shares. If blank, will default to value of blurb field above.", - required=False, - ), - ), - ( - "linkedin_text", - wagtail.blocks.CharBlock( - help_text="(Optional) Custom text for LinkedIn shares.", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - v1.models.snippets.ReusableText - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="contact", - name="contact_info", - field=wagtail.fields.StreamField( - [ - ( - "email", - wagtail.blocks.StructBlock( - [ - ( - "emails", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "url", - wagtail.blocks.EmailBlock( - label="Email address" - ), - ), - ( - "text", - wagtail.blocks.CharBlock( - label="Link text (optional)", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "phone", - wagtail.blocks.StructBlock( - [ - ( - "fax", - wagtail.blocks.BooleanBlock( - default=False, - label="Is this number a fax?", - required=False, - ), - ), - ( - "phones", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "number", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - max_length=15, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "extension", - wagtail.blocks.CharBlock( - max_length=4, - required=False, - ), - ), - ( - "vanity", - wagtail.blocks.CharBlock( - help_text="A phoneword version of the above number. Include any formatting. Ex. (555) 222-CFPB", - max_length=15, - required=False, - ), - ), - ( - "tty", - wagtail.blocks.CharBlock( - help_text="Do not include spaces or dashes. Ex. 8554112372", - label="TTY", - max_length=15, - required=False, - validators=[ - django.core.validators.RegexValidator( - message="Enter a numeric phone number, without punctuation.", - regex="^\\d*$", - ) - ], - ), - ), - ( - "tty_ext", - wagtail.blocks.CharBlock( - label="TTY Extension", - max_length=4, - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "address", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "title", - wagtail.blocks.CharBlock(required=False), - ), - ( - "street", - wagtail.blocks.CharBlock(required=False), - ), - ( - "city", - wagtail.blocks.CharBlock( - max_length=50, required=False - ), - ), - ( - "state", - wagtail.blocks.CharBlock( - max_length=25, required=False - ), - ), - ( - "zip_code", - wagtail.blocks.CharBlock( - max_length=15, required=False - ), - ), - ] - ), - ), - ( - "hyperlink", - wagtail.blocks.StructBlock( - [ - ("url", wagtail.blocks.URLBlock()), - ( - "text", - wagtail.blocks.CharBlock(required=False), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "crc_table", - wagtail.blocks.StructBlock( - [ - ( - "website", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "phone", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "mailing_address", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="enforcementactionpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="eventpage", - name="agenda_items", - field=wagtail.fields.StreamField( - [ - ( - "item", - wagtail.blocks.StructBlock( - [ - ( - "start_time", - wagtail.blocks.TimeBlock( - label="Start", required=False - ), - ), - ( - "end_time", - wagtail.blocks.TimeBlock( - label="End", required=False - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - max_length=100, required=False - ), - ), - ( - "location", - wagtail.blocks.CharBlock( - max_length=100, required=False - ), - ), - ( - "speakers", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "name", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "url", - wagtail.blocks.URLBlock( - required=False - ), - ), - ], - icon="user", - required=False, - ) - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="eventpage", - name="persistent_body", - field=wagtail.fields.StreamField( - [ - ("content", wagtail.blocks.RichTextBlock(icon="edit")), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock(required=False), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="landingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="landingpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="learnpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "contact_us_table", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "rows", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.ContactUsRow, - collapsed=True, - min_num=1, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="legacyblogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ( - "content", - wagtail.blocks.RawHTMLBlock( - help_text="Content from WordPress unescaped." - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="storypage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="storypage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "jumbo_hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_50_50", - wagtail.blocks.BooleanBlock( - help_text="Optional. Set both the hero text and image to 50% width, prevent the background color from appearing in the left/right margins of the hero, and also add a border to the hero area. Requires the uploaded large image to be 755px x 575px.", - label="50/50 layout", - required=False, - ), - ), - ] - ), - ), - ( - "features", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "post_preview_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="How many posts do you want to show?", - label="Limit", - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - default="Published" - ), - ), - ] - ), - ), - ( - "contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingpage", - name="header", - field=wagtail.fields.StreamField( - [ - ( - "hero", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text='For complete guidelines on creating heroes, visit our Design System. Character counts (including spaces) at largest breakpoint:', - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - help_text='Character counts (including spaces) at largest breakpoint:', - label="Sub-heading", - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - help_text='When saving illustrations, use a transparent background. See image dimension guidelines.', - label="Large image", - required=False, - ), - ), - ( - "small_image", - wagtail.images.blocks.ImageChooserBlock( - help_text='Optional. Provides an alternate image for small displays when using a photo or bleeding hero. Not required for the standard illustration. See image dimension guidelines.', - required=False, - ), - ), - ( - "background_color", - wagtail.blocks.CharBlock( - help_text='Specify a hex value (including the # sign) from our official color palette.', - required=False, - ), - ), - ( - "is_white_text", - wagtail.blocks.BooleanBlock( - help_text="Optional. Turns the hero text white. Useful if using a dark background color or background image.", - label="White text", - required=False, - ), - ), - ( - "is_overlay", - wagtail.blocks.BooleanBlock( - help_text='Optional. Uses the large image as a background under the entire hero, creating the "Photo" style of hero (see Design System for details). When using this option, make sure to specify a background color (above) for the left/right margins that appear when screens are wider than 1200px and for the text section when the photo and text stack at mobile sizes.', - label="Photo", - required=False, - ), - ), - ( - "is_bleeding", - wagtail.blocks.BooleanBlock( - help_text="Optional. Select if you want the illustration to bleed vertically off the top and bottom of the hero space.", - label="Bleed", - required=False, - ), - ), - ] - ), - ) - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingpage", - name="sidebar_breakout", - field=wagtail.fields.StreamField( - [ - ("slug", wagtail.blocks.CharBlock(icon="title")), - ("heading", wagtail.blocks.CharBlock(icon="title")), - ("paragraph", wagtail.blocks.RichTextBlock(icon="edit")), - ( - "breakout_image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.images.blocks.ImageChooserBlock(), - ), - ( - "is_round", - wagtail.blocks.BooleanBlock( - default=True, - label="Round?", - required=False, - ), - ), - ( - "icon", - wagtail.blocks.CharBlock( - help_text="Enter icon class name." - ), - ), - ( - "heading", - wagtail.blocks.CharBlock( - label="Introduction Heading", - required=False, - ), - ), - ( - "body", - wagtail.blocks.TextBlock( - label="Introduction Body", - required=False, - ), - ), - ], - heading="Breakout Image", - icon="image", - ), - ), - ( - "related_posts", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="This limit applies to EACH TYPE of post this module retrieves, not the total number of retrieved posts.", - ), - ), - ( - "show_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="This toggles the heading and icon for the related types.", - label="Show Heading and Icon?", - required=False, - ), - ), - ( - "header_title", - wagtail.blocks.CharBlock( - default="Further reading", - label="Slug Title", - ), - ), - ( - "relate_posts", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Blog Posts", - required=False, - ), - ), - ( - "relate_newsroom", - wagtail.blocks.BooleanBlock( - default=True, - editable=False, - label="Newsroom", - required=False, - ), - ), - ( - "relate_events", - wagtail.blocks.BooleanBlock( - default=True, - label="Events", - required=False, - ), - ), - ( - "specific_categories", - wagtail.blocks.ListBlock( - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "Blog", - ( - ( - "At the CFPB", - "At the CFPB", - ), - ( - "Director's notebook", - "Director's notebook", - ), - ( - "Policy & Compliance", - "Policy and compliance", - ), - ( - "Data, Research & Reports", - "Data, research, and reports", - ), - ( - "Info for Consumers", - "Info for consumers", - ), - ), - ), - ( - "Newsroom", - ( - ( - "Consumer Advisories", - "Consumer advisories", - ), - ( - "Director's Statement", - "Director's statement", - ), - ("Op-Ed", "Op-ed"), - ( - "Press Release", - "Press release", - ), - ("Speech", "Speech"), - ( - "Testimony", - "Testimony", - ), - ), - ), - ], - required=False, - ), - required=False, - ), - ), - ( - "tag_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "any", - "Include related posts that match ANY topic tags on this page", - ), - ( - "all", - "Include related posts that match ALL topic tags on this page", - ), - ( - "ignore", - "IGNORE topic tags when selecting related posts", - ), - ] - ), - ), - ( - "alternate_view_more_url", - wagtail.blocks.CharBlock( - help_text='By default, the "View more" link will go to the Activity Log, filtered based on the above parameters. Enter a URL in this field to override that link destination.', - label='Alternate "View more" URL', - required=False, - ), - ), - ] - ), - ), - ( - "job_listing_list", - wagtail.blocks.StructBlock( - [ - ( - "more_jobs_page", - wagtail.blocks.PageChooserBlock( - help_text="Link to full list of jobs" - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="cfgovcontentowner", - name="slug", - field=models.SlugField( - allow_unicode=True, - max_length=100, - unique=True, - verbose_name="slug", - ), - ), - ] diff --git a/cfgov/v1/migrations/0001_squashed_0254_delete_campaignpage.py b/cfgov/v1/migrations/0001_squashed_0254_delete_campaignpage.py index 153aaca4835..65f1e2c2000 100644 --- a/cfgov/v1/migrations/0001_squashed_0254_delete_campaignpage.py +++ b/cfgov/v1/migrations/0001_squashed_0254_delete_campaignpage.py @@ -27,9 +27,6 @@ class Migration(migrations.Migration): - - replaces = [('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), ('v1', '0236_case_docket_table'), ('v1', '0237_remove_content_image_bleed_option'), ('v1', '0238_collapse_oaa_table'), ('v1', '0239_field_cleanup'), ('v1', '0240_filterable_list_sort'), ('v1', '0241_remove_filterable_5050'), ('v1', '0242_filterable_list_topics'), ('v1', '0243_filterable_list_topics'), ('v1', '0244_deprecate_2ndary_links'), ('v1', '0245_alter_emailsignup_url'), ('v1', '0246_issue_spotlight_category'), ('v1', '0247_eap_no_tables'), ('v1', '0248_filterable_list_mixin'), ('v1', '0249_populate_filterable'), ('v1', '0250_rename_filterable'), ('v1', '0251_cleanup_filterable'), ('v1', '0252_filterable_empty_content'), ('v1', '0253_new_table_block'), ('v1', '0254_delete_campaignpage')] - initial = True dependencies = [ diff --git a/cfgov/v1/migrations/0236_case_docket_table.py b/cfgov/v1/migrations/0236_case_docket_table.py deleted file mode 100644 index 021748b2a81..00000000000 --- a/cfgov/v1/migrations/0236_case_docket_table.py +++ /dev/null @@ -1,1299 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-05 19:32 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0001_squashed_0235_add_use_json_field_to_streamfields"), - ] - - operations = [ - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ( - "bleed", - "Bleed into left/right margins", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "crc_table", - wagtail.blocks.StructBlock( - [ - ( - "website", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "phone", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "mailing_address", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ] - ), - ), - ( - "case_docket_table", - wagtail.blocks.StructBlock( - [ - ( - "events", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.CaseDocketEvent, - min_num=1, - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0237_remove_content_image_bleed_option.py b/cfgov/v1/migrations/0237_remove_content_image_bleed_option.py deleted file mode 100644 index e677872ed21..00000000000 --- a/cfgov/v1/migrations/0237_remove_content_image_bleed_option.py +++ /dev/null @@ -1,14188 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-09 22:12 - -from django.db import migrations - -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks -import wagtail.snippets.blocks - -import wagtailmedia.blocks - -import jobmanager.blocks -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0236_case_docket_table"), - ] - - operations = [ - migrations.AlterField( - model_name="blogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ( - "chart_block", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar | % y-axis values"), - ( - "line", - "Line | millions/billions y-axis values", - ), - ( - "line-index", - "Line-Index | integer y-axis values", - ), - ( - "tile_map", - "Tile Map | grid-like USA map", - ), - ] - ), - ), - ( - "color_scheme", - wagtail.blocks.ChoiceBlock( - choices=[ - ("blue", "Blue"), - ("gold", "Gold"), - ("green", "Green"), - ("navy", "Navy"), - ("neutral", "Neutral"), - ("purple", "Purple"), - ("teal", "Teal"), - ], - help_text='Chart\'s color scheme. See "https://github.com/cfpb/cfpb-chart-builder#createchart-options-".', - required=False, - ), - ), - ( - "data_source", - wagtail.blocks.CharBlock( - help_text='Location of the chart\'s data source relative to "https://files.consumerfinance.gov/data/". For example,"consumer-credit-trends/auto-loans/num_data_AUT.csv".', - required=True, - ), - ), - ( - "date_published", - wagtail.blocks.DateBlock( - help_text="Automatically generated when CCT cron job runs" - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Briefly summarize the chart for visually impaired users.", - required=True, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "metadata", - wagtail.blocks.CharBlock( - help_text='Optional metadata for the chart to use. For example, with CCT this would be the chart\'s "group".', - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text to display as a footnote. For example, "Data from the last six months are not final."', - required=False, - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - help_text="Custom y-axis label. NOTE: Line-Index chart y-axis is not overridable with this field!", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_chart_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_map_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_downloads_block", - wagtail.blocks.StructBlock( - [ - ( - "show_archives", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to allow the archival section to display. No section will appear if there are no archival downloads.", - required=False, - ), - ) - ] - ), - ), - ( - "data_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "market_key", - wagtail.blocks.CharBlock( - help_text="Market identifier, e.g. AUT", - max_length=20, - required=True, - ), - ), - ( - "num_originations", - wagtail.blocks.CharBlock( - help_text="Number of originations, e.g. 1.2 million", - max_length=20, - ), - ), - ( - "value_originations", - wagtail.blocks.CharBlock( - help_text="Total dollar value of originations, e.g. $3.4 billion", - max_length=20, - ), - ), - ( - "year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "num_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Auto loans originated", - max_length=100, - ), - ), - ( - "value_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Dollar volume of new loans", - max_length=100, - ), - ), - ( - "year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year originations", - max_length=100, - ), - ), - ( - "inquiry_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for inquiry data", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year inquiries", - max_length=100, - required=False, - ), - ), - ( - "tightness_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for credit tightness data", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year credit tightness", - max_length=100, - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", required=False - ), - ), - ] - ), - ), - ("job_listing_table", jobmanager.blocks.JobListingTable()), - ( - "yes_checklist", - wagtail.blocks.StructBlock( - [ - ( - "checklist", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "item", - wagtail.blocks.CharBlock( - help_text="Short description for a checkbox item" - ), - ), - ( - "details", - wagtail.blocks.RichTextBlock( - help_text="Deeper explanation of the item", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "raf_tool", - wagtail.blocks.StructBlock( - [ - ( - "county_threshold", - wagtail.blocks.IntegerBlock( - help_text="Optional: Add a number to determine how many results trigger display of county dropdown for a state.", - required=False, - ), - ) - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "crc_table", - wagtail.blocks.StructBlock( - [ - ( - "website", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "phone", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "mailing_address", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ] - ), - ), - ( - "case_docket_table", - wagtail.blocks.StructBlock( - [ - ( - "events", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.CaseDocketEvent, - min_num=1, - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="enforcementactionpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="eventpage", - name="persistent_body", - field=wagtail.fields.StreamField( - [ - ("content", wagtail.blocks.RichTextBlock(icon="edit")), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock(required=False), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="learnpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "contact_us_table", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "rows", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.ContactUsRow, - collapsed=True, - min_num=1, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="legacyblogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ( - "content", - wagtail.blocks.RawHTMLBlock( - help_text="Content from WordPress unescaped." - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="storypage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "order_by", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "-date_published", - "Date Published", - ), - ("_score", "Relevance"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "post_preview_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="How many posts do you want to show?", - label="Limit", - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - default="Published" - ), - ), - ] - ), - ), - ( - "contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0238_collapse_oaa_table.py b/cfgov/v1/migrations/0238_collapse_oaa_table.py deleted file mode 100644 index 6ead5436a1e..00000000000 --- a/cfgov/v1/migrations/0238_collapse_oaa_table.py +++ /dev/null @@ -1,1296 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-11 13:09 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0237_remove_content_image_bleed_option"), - ] - - operations = [ - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "crc_table", - wagtail.blocks.StructBlock( - [ - ( - "website", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "phone", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "mailing_address", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ] - ), - ), - ( - "case_docket_table", - wagtail.blocks.StructBlock( - [ - ( - "events", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.CaseDocketEvent, - collapsed=True, - min_num=1, - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0239_field_cleanup.py b/cfgov/v1/migrations/0239_field_cleanup.py deleted file mode 100644 index a476a9d2b79..00000000000 --- a/cfgov/v1/migrations/0239_field_cleanup.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-15 13:00 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('v1', '0238_collapse_oaa_table'), - ] - - operations = [ - migrations.RemoveField( - model_name='abstractfilterpage', - name='comments_close_by', - ), - migrations.RemoveField( - model_name='abstractfilterpage', - name='date_filed', - ), - ] diff --git a/cfgov/v1/migrations/0240_filterable_list_sort.py b/cfgov/v1/migrations/0240_filterable_list_sort.py deleted file mode 100644 index e22e90d1667..00000000000 --- a/cfgov/v1/migrations/0240_filterable_list_sort.py +++ /dev/null @@ -1,1151 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-15 17:45 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0239_field_cleanup"), - ] - - operations = [ - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "ordering", - wagtail.blocks.ChoiceBlock( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "ordering", - wagtail.blocks.ChoiceBlock( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "output_5050", - wagtail.blocks.BooleanBlock( - default=False, - label="Render preview items as 50-50s", - required=False, - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add links to post preview images and headings in filterable list results", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0241_remove_filterable_5050.py b/cfgov/v1/migrations/0241_remove_filterable_5050.py deleted file mode 100644 index 014f7b18e6a..00000000000 --- a/cfgov/v1/migrations/0241_remove_filterable_5050.py +++ /dev/null @@ -1,1119 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-17 21:10 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0240_filterable_list_sort"), - ] - - operations = [ - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "ordering", - wagtail.blocks.ChoiceBlock( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topic_filtering", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "no_filter", - "Don't filter topics", - ), - ( - "sort_alphabetically", - "Filter topics, sort topic list alphabetically", - ), - ( - "sort_by_frequency", - "Filter topics, sort topic list by number of results", - ), - ], - help_text='Whether to include a "Topics" filter in the filter controls', - ), - ), - ( - "ordering", - wagtail.blocks.ChoiceBlock( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0242_filterable_list_topics.py b/cfgov/v1/migrations/0242_filterable_list_topics.py deleted file mode 100644 index 3c9d74bde6d..00000000000 --- a/cfgov/v1/migrations/0242_filterable_list_topics.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-16 17:20 - -from django.db import migrations - -from v1.util.migrations import migrate_page_types_and_fields - - -def migrate(apps, schema_editor): - migrate_page_types_and_fields( - apps, - [ - ("v1", "BrowseFilterablePage", "content", "filter_controls"), - ("v1", "SublandingFilterablePage", "content", "filter_controls"), - ], - migrate_filterable_list, - ) - - -def migrate_filterable_list(page_or_revision, data): - data["topics"] = data.pop("topic_filtering", None) != "no_filter" - return data - - -class Migration(migrations.Migration): - dependencies = [ - ( - "wagtailcore", - "0075_populate_latest_revision_and_revision_object_str", - ), - ("v1", "0241_remove_filterable_5050"), - ] - - operations = [ - migrations.RunPython(migrate, elidable=True), - ] diff --git a/cfgov/v1/migrations/0243_filterable_list_topics.py b/cfgov/v1/migrations/0243_filterable_list_topics.py deleted file mode 100644 index d63d4265403..00000000000 --- a/cfgov/v1/migrations/0243_filterable_list_topics.py +++ /dev/null @@ -1,1095 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-18 15:03 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0242_filterable_list_topics"), - ] - - operations = [ - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - label="Filter by Topics", - required=False, - ), - ), - ( - "ordering", - wagtail.blocks.ChoiceBlock( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "no_posts_message", - wagtail.blocks.CharBlock( - help_text='Message for the notification that will be displayed instead of filter controls if there are no posts to filter.', - required=False, - ), - ), - ( - "no_posts_explanation", - wagtail.blocks.CharBlock( - help_text="Additional explanation for the notification that will be displayed if there are no posts to filter.", - required=False, - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - help_text="Strongly encouraged to help users understand the action that the date of the post is linked to, i.e. published, issued, released.", - label="Date stamp descriptor", - required=False, - ), - ), - ( - "title", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - label="Filter by keyword", - required=False, - ), - ), - ( - "categories", - wagtail.blocks.StructBlock( - [ - ( - "filter_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - label="Filter by Category", - required=False, - ), - ), - ( - "show_preview_categories", - wagtail.blocks.BooleanBlock( - default=True, - required=False, - ), - ), - ( - "page_type", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ] - ), - ), - ( - "topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - label="Filter by Topics", - required=False, - ), - ), - ( - "ordering", - wagtail.blocks.ChoiceBlock( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - help_text="How to order results", - ), - ), - ( - "statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Statuses", - required=False, - ), - ), - ( - "products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - label="Filter by Enforcement Products", - required=False, - ), - ), - ( - "language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - label="Filter by Language", - required=False, - ), - ), - ( - "date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - label="Filter by Date Range", - required=False, - ), - ), - ( - "filter_children", - wagtail.blocks.BooleanBlock( - default=True, - help_text="If checked this list will only filter its child pages.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0244_deprecate_2ndary_links.py b/cfgov/v1/migrations/0244_deprecate_2ndary_links.py deleted file mode 100644 index f61840d2b2a..00000000000 --- a/cfgov/v1/migrations/0244_deprecate_2ndary_links.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 3.2.18 on 2023-05-19 15:33 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('v1', '0243_filterable_list_topics'), - ] - - operations = [ - migrations.RemoveField( - model_name='abstractfilterpage', - name='secondary_link_text', - ), - migrations.RemoveField( - model_name='abstractfilterpage', - name='secondary_link_url', - ), - ] diff --git a/cfgov/v1/migrations/0245_alter_emailsignup_url.py b/cfgov/v1/migrations/0245_alter_emailsignup_url.py deleted file mode 100644 index 59425ec6356..00000000000 --- a/cfgov/v1/migrations/0245_alter_emailsignup_url.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.19 on 2023-05-31 14:23 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('v1', '0244_deprecate_2ndary_links'), - ] - - operations = [ - migrations.AlterField( - model_name='emailsignup', - name='url', - field=models.URLField(blank=True, help_text='URL for the GovDelivery signup page people will be linked to in order to signup. Provide either this or the GovDelivery code, but not both.', null=True, verbose_name='GovDelivery URL'), - ), - ] diff --git a/cfgov/v1/migrations/0246_issue_spotlight_category.py b/cfgov/v1/migrations/0246_issue_spotlight_category.py deleted file mode 100644 index bd333874574..00000000000 --- a/cfgov/v1/migrations/0246_issue_spotlight_category.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.2.19 on 2023-05-31 21:23 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('v1', '0245_alter_emailsignup_url'), - ] - - operations = [ - migrations.AlterField( - model_name='cfgovpagecategory', - name='name', - field=models.CharField(choices=[('Administrative adjudication docket', (('administrative-adjudication', 'Administrative adjudication'), ('stipulation-and-constent-order', 'Stipulation and consent order'))), ('Amicus Brief', (('us-supreme-court', 'U.S. Supreme Court'), ('fed-circuit-court', 'Federal Circuit Court'), ('fed-district-court', 'Federal District Court'), ('state-court', 'State Court'))), ('Blog', (('at-the-cfpb', 'At the CFPB'), ('directors-notebook', "Director's notebook"), ('policy-compliance', 'Policy and compliance'), ('data-research-reports', 'Data, research, and reports'), ('info-for-consumers', 'Info for consumers'))), ('Consumer Reporting Companies', (('nationwide', 'Nationwide'), ('employment-screening', 'Employment screening'), ('tenant-screening', 'Tenant screening'), ('check-bank-screening', 'Check and bank account screening'), ('personal-property-insurance', 'Personal property insurance'), ('medical', 'Medical'), ('low-income-and-subprime', 'Low-income and subprime'), ('supplementary-reports', 'Supplementary reports'), ('utilities', 'Utilities'), ('retail', 'Retail'), ('gaming', 'Gaming'))), ('Enforcement Action', (('administrative-proceeding', 'Administrative Proceeding'), ('civil-action', 'Civil Action'))), ('Final rule', (('interim-final-rule', 'Interim final rule'), ('final-rule', 'Final rule'))), ('FOIA Frequently Requested Record', (('report', 'Report'), ('log', 'Log'), ('record', 'Record'))), ('Newsroom', (('consumer-advisories', 'Consumer advisories'), ('directors-statement', "Director's statement"), ('op-ed', 'Op-ed'), ('press-release', 'Press release'), ('speech', 'Speech'), ('testimony', 'Testimony'))), ('Notice and Opportunity for Comment', (('notice-proposed-rule', 'Advance notice of proposed rulemaking'), ('proposed-rule', 'Proposed rule'), ('interim-final-rule-2', 'Interim final rule'), ('request-comment-info', 'Request for comment or information'), ('proposed-policy', 'Proposed policy'), ('intent-preempt-determ', 'Intent to make preemption determination'), ('info-collect-activity', 'Information collection activities'), ('notice-privacy-act', 'Notice related to Privacy Act'))), ('Research Hub', (('research-publication', 'Office of Research Publication'),)), ('Research Report', (('consumer-complaint', 'Consumer complaint'), ('super-highlight', 'Supervisory Highlights'), ('data-point', 'Data point'), ('industry-markets', 'Industry and markets'), ('consumer-edu-empower', 'Consumer education and empowerment'), ('to-congress', 'To Congress'), ('data-spotlight', 'Data spotlight'), ('issue-spotlight', 'Issue spotlight'))), ('Rule Under Development', (('notice-proposed-rule-2', 'Advance notice of proposed rulemaking'), ('proposed-rule-2', 'Proposed rule'))), ('Story', (('auto-loans', 'Auto loans'), ('bank-accts-services', 'Bank accounts and services'), ('credit-cards', 'Credit cards'), ('credit-reports-scores', 'Credit reports and scores'), ('debt-collection', 'Debt collection'), ('money-transfers', 'Money transfers'), ('mortgages', 'Mortgages'), ('payday-loans', 'Payday loans'), ('prepaid-cards', 'Prepaid cards'), ('student-loans', 'Student loans')))], max_length=255), - ), - ] diff --git a/cfgov/v1/migrations/0247_eap_no_tables.py b/cfgov/v1/migrations/0247_eap_no_tables.py deleted file mode 100644 index 153e79e4981..00000000000 --- a/cfgov/v1/migrations/0247_eap_no_tables.py +++ /dev/null @@ -1,1114 +0,0 @@ -# Generated by Django 3.2.19 on 2023-06-13 18:44 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0246_issue_spotlight_category"), - ] - - operations = [ - migrations.AlterField( - model_name="enforcementactionpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0248_filterable_list_mixin.py b/cfgov/v1/migrations/0248_filterable_list_mixin.py deleted file mode 100644 index 6595f8db4fb..00000000000 --- a/cfgov/v1/migrations/0248_filterable_list_mixin.py +++ /dev/null @@ -1,92 +0,0 @@ -# Generated by Django 3.2.19 on 2023-06-12 16:54 - -from django.db import migrations, models -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0247_eap_no_tables"), - ] - - operations = [ - migrations.AddField( - model_name="browsefilterablepage", - name="filter_children_only", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="browsefilterablepage", - name="filtered_date_label", - field=models.CharField(blank=True, max_length=30, null=True), - ), - migrations.AddField( - model_name="browsefilterablepage", - name="filtered_ordering", - field=models.CharField( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - default="-start_date", - max_length=30, - ), - ), - migrations.AddField( - model_name="browsefilterablepage", - name="show_filtered_categories", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="browsefilterablepage", - name="show_filtered_dates", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="browsefilterablepage", - name="show_filtered_tags", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="sublandingfilterablepage", - name="filter_children_only", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="sublandingfilterablepage", - name="filtered_date_label", - field=models.CharField(blank=True, max_length=30, null=True), - ), - migrations.AddField( - model_name="sublandingfilterablepage", - name="filtered_ordering", - field=models.CharField( - choices=[ - ("-start_date", "Date"), - ("title.raw", "Alphabetical"), - ], - default="-start_date", - max_length=30, - ), - ), - migrations.AddField( - model_name="sublandingfilterablepage", - name="show_filtered_categories", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="sublandingfilterablepage", - name="show_filtered_dates", - field=models.BooleanField(default=True), - ), - migrations.AddField( - model_name="sublandingfilterablepage", - name="show_filtered_tags", - field=models.BooleanField(default=True), - ), - ] diff --git a/cfgov/v1/migrations/0249_populate_filterable.py b/cfgov/v1/migrations/0249_populate_filterable.py deleted file mode 100644 index 6e5ce56d862..00000000000 --- a/cfgov/v1/migrations/0249_populate_filterable.py +++ /dev/null @@ -1,82 +0,0 @@ -# Generated by Django 3.2.19 on 2023-06-09 13:29 - -import json - -from django.db import migrations - - -def migrate_object(obj, filterable_list): - data = { - "filtered_ordering": filterable_list.get("ordering", "-start_date"), - "filter_children_only": filterable_list.get("filter_children", True), - "filtered_date_label": filterable_list.get("post_date_description"), - "show_filtered_categories": filterable_list["categories"].get( - "show_preview_categories", True - ), - } - - page_type_based_values = { - "show_filtered_dates": True, - "show_filtered_tags": True, - } - - page_type_overrides = { - "cfpb-researchers": {"show_filtered_dates": False}, - "consumer-reporting": {"show_filtered_dates": False}, - "foia-freq-req-record": {"show_filtered_tags": False}, - } - - page_type = filterable_list["categories"].get("page_type") - page_type_based_values.update(page_type_overrides.get(page_type, {})) - - data.update(page_type_based_values) - - if isinstance(obj, dict): - obj.update(data) - else: - for k, v in data.items(): - setattr(obj, k, v) - - -def get_filterable_list(content): - for block in content: - if block["type"] == "filter_controls": - return block["value"] - - -def migrate(apps, schema_editor): - ContentType = apps.get_model("contenttypes", "ContentType") - Revision = apps.get_model("wagtailcore.Revision") - - for classname in ("BrowseFilterablePage", "SublandingFilterablePage"): - page_class = apps.get_model("v1", classname) - page_contenttype_id = ContentType.objects.get_for_model(page_class).id - - for page in page_class.objects.all(): - filterable_list = get_filterable_list(page.content.raw_data) - - if filterable_list: - migrate_object(page, filterable_list) - page.save() - - for revision in Revision.objects.filter( - content_type_id=page_contenttype_id, object_id=page.pk - ): - revision_content = json.loads(revision.content["content"]) - filterable_list = get_filterable_list(revision_content) - - if not filterable_list: - continue - - migrate_object(revision.content, filterable_list) - revision.save() - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0248_filterable_list_mixin"), - ] - - operations = [ - migrations.RunPython(migrate, elidable=True), - ] diff --git a/cfgov/v1/migrations/0250_rename_filterable.py b/cfgov/v1/migrations/0250_rename_filterable.py deleted file mode 100644 index 53e71fef6f6..00000000000 --- a/cfgov/v1/migrations/0250_rename_filterable.py +++ /dev/null @@ -1,38 +0,0 @@ -# Generated by Django 3.2.19 on 2023-06-09 16:37 - -from django.db import migrations - -from v1.util.migrations import migrate_page_types_and_fields - - -def forwards(apps, schema_editor): - page_types_and_fields = [ - ("v1", "BrowseFilterablePage", "content", ["filter_controls"]), - ("v1", "SublandingFilterablePage", "content", ["filter_controls"]), - ] - migrate_page_types_and_fields(apps, page_types_and_fields, forward_mapper) - - -def forward_mapper(page_or_revision, data): - data["filter_by_keyword"] = data.pop("title") - data["filter_by_topics"] = data.pop("topics") - data["filter_by_enforcement_statuses"] = data.pop("statuses", None) - data["filter_by_enforcement_products"] = data.pop("products", None) - data["filter_by_language"] = data.pop("language", None) - data["filter_by_date_range"] = data.pop("date_range") - - categories = data.pop("categories") - data["filter_by_category"] = categories.pop("filter_category") - data["category_choices"] = categories.pop("page_type") - - return data - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0249_populate_filterable"), - ] - - operations = [ - migrations.RunPython(forwards, elidable=True), - ] diff --git a/cfgov/v1/migrations/0251_cleanup_filterable.py b/cfgov/v1/migrations/0251_cleanup_filterable.py deleted file mode 100644 index f7f22b524ed..00000000000 --- a/cfgov/v1/migrations/0251_cleanup_filterable.py +++ /dev/null @@ -1,973 +0,0 @@ -# Generated by Django 3.2.19 on 2023-06-09 17:59 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0250_rename_filterable"), - ] - - operations = [ - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "filter_by_keyword", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - required=False, - ), - ), - ( - "filter_by_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - required=False, - ), - ), - ( - "category_choices", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ( - "filter_by_topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - required=False, - ), - ), - ( - "filter_by_enforcement_statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_enforcement_products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - required=False, - ), - ), - ( - "filter_by_date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "filter_by_keyword", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - required=False, - ), - ), - ( - "filter_by_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - required=False, - ), - ), - ( - "category_choices", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ( - "filter_by_topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - required=False, - ), - ), - ( - "filter_by_enforcement_statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_enforcement_products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - required=False, - ), - ), - ( - "filter_by_date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0252_filterable_empty_content.py b/cfgov/v1/migrations/0252_filterable_empty_content.py deleted file mode 100644 index 49890877a1f..00000000000 --- a/cfgov/v1/migrations/0252_filterable_empty_content.py +++ /dev/null @@ -1,975 +0,0 @@ -# Generated by Django 3.2.19 on 2023-06-21 13:39 - -from django.db import migrations -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref -import wagtail.blocks -import wagtail.fields -import wagtail.images.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0251_cleanup_filterable"), - ] - - operations = [ - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "filter_by_keyword", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - required=False, - ), - ), - ( - "filter_by_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - required=False, - ), - ), - ( - "category_choices", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ( - "filter_by_topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - required=False, - ), - ), - ( - "filter_by_enforcement_statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_enforcement_products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - required=False, - ), - ), - ( - "filter_by_date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "filter_by_keyword", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - required=False, - ), - ), - ( - "filter_by_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - required=False, - ), - ), - ( - "category_choices", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ( - "filter_by_topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - required=False, - ), - ), - ( - "filter_by_enforcement_statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_enforcement_products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - required=False, - ), - ), - ( - "filter_by_date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0253_new_table_block.py b/cfgov/v1/migrations/0253_new_table_block.py deleted file mode 100644 index a5d32f363c8..00000000000 --- a/cfgov/v1/migrations/0253_new_table_block.py +++ /dev/null @@ -1,15961 +0,0 @@ -# Generated by Django 3.2.20 on 2023-07-07 18:35 - -from django.db import migrations -import jobmanager.blocks -import v1.atomic_elements.tables -import v1.blocks -import v1.util.ref -import wagtail.blocks -import wagtail.contrib.typed_table_block.blocks -import wagtail.fields -import wagtail.images.blocks -import wagtail.snippets.blocks -import wagtailmedia.blocks - - -class Migration(migrations.Migration): - dependencies = [ - ("v1", "0252_filterable_empty_content"), - ] - - operations = [ - migrations.AlterField( - model_name="blogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsefilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "filter_by_keyword", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - required=False, - ), - ), - ( - "filter_by_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - required=False, - ), - ), - ( - "category_choices", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ( - "filter_by_topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - required=False, - ), - ), - ( - "filter_by_enforcement_statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_enforcement_products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - required=False, - ), - ), - ( - "filter_by_date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="browsepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "raw_html_block", - wagtail.blocks.RawHTMLBlock(label="Raw HTML block"), - ), - ( - "chart_block", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar | % y-axis values"), - ( - "line", - "Line | millions/billions y-axis values", - ), - ( - "line-index", - "Line-Index | integer y-axis values", - ), - ( - "tile_map", - "Tile Map | grid-like USA map", - ), - ] - ), - ), - ( - "color_scheme", - wagtail.blocks.ChoiceBlock( - choices=[ - ("blue", "Blue"), - ("gold", "Gold"), - ("green", "Green"), - ("navy", "Navy"), - ("neutral", "Neutral"), - ("purple", "Purple"), - ("teal", "Teal"), - ], - help_text='Chart\'s color scheme. See "https://github.com/cfpb/cfpb-chart-builder#createchart-options-".', - required=False, - ), - ), - ( - "data_source", - wagtail.blocks.CharBlock( - help_text='Location of the chart\'s data source relative to "https://files.consumerfinance.gov/data/". For example,"consumer-credit-trends/auto-loans/num_data_AUT.csv".', - required=True, - ), - ), - ( - "date_published", - wagtail.blocks.DateBlock( - help_text="Automatically generated when CCT cron job runs" - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Briefly summarize the chart for visually impaired users.", - required=True, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "metadata", - wagtail.blocks.CharBlock( - help_text='Optional metadata for the chart to use. For example, with CCT this would be the chart\'s "group".', - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text to display as a footnote. For example, "Data from the last six months are not final."', - required=False, - ), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock( - help_text="Custom y-axis label. NOTE: Line-Index chart y-axis is not overridable with this field!", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_chart_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_map_block", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "title", - wagtail.blocks.CharBlock( - form_classname="title", required=True - ), - ), - ( - "description", - wagtail.blocks.CharBlock( - help_text="Chart summary for visually impaired users.", - required=False, - ), - ), - ( - "note", - wagtail.blocks.CharBlock( - help_text='Text for "Note" section of footnotes.', - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of chart block.", - required=False, - ), - ), - ] - ), - ), - ( - "mortgage_downloads_block", - wagtail.blocks.StructBlock( - [ - ( - "show_archives", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to allow the archival section to display. No section will appear if there are no archival downloads.", - required=False, - ), - ) - ] - ), - ), - ( - "data_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "market_key", - wagtail.blocks.CharBlock( - help_text="Market identifier, e.g. AUT", - max_length=20, - required=True, - ), - ), - ( - "num_originations", - wagtail.blocks.CharBlock( - help_text="Number of originations, e.g. 1.2 million", - max_length=20, - ), - ), - ( - "value_originations", - wagtail.blocks.CharBlock( - help_text="Total dollar value of originations, e.g. $3.4 billion", - max_length=20, - ), - ), - ( - "year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - ), - ), - ( - "last_updated_projected_data", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset" - ), - ), - ( - "num_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Auto loans originated", - max_length=100, - ), - ), - ( - "value_originations_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. Dollar volume of new loans", - max_length=100, - ), - ), - ( - "year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year originations", - max_length=100, - ), - ), - ( - "inquiry_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for inquiry data", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "inquiry_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year inquiries", - max_length=100, - required=False, - ), - ), - ( - "tightness_month", - wagtail.blocks.DateBlock( - help_text="Month of latest entry in dataset for credit tightness data", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change", - wagtail.blocks.CharBlock( - help_text="Percentage change, e.g. 5.6% increase", - max_length=20, - required=False, - ), - ), - ( - "tightness_year_over_year_change_text", - wagtail.blocks.CharBlock( - help_text="Descriptive sentence, e.g. In year-over-year credit tightness", - max_length=100, - required=False, - ), - ), - ( - "image", - wagtail.images.blocks.ImageChooserBlock( - icon="image", required=False - ), - ), - ] - ), - ), - ("job_listing_table", jobmanager.blocks.JobListingTable()), - ( - "yes_checklist", - wagtail.blocks.StructBlock( - [ - ( - "checklist", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "item", - wagtail.blocks.CharBlock( - help_text="Short description for a checkbox item" - ), - ), - ( - "details", - wagtail.blocks.RichTextBlock( - help_text="Deeper explanation of the item", - required=False, - ), - ), - ] - ) - ), - ) - ] - ), - ), - ( - "raf_tool", - wagtail.blocks.StructBlock( - [ - ( - "county_threshold", - wagtail.blocks.IntegerBlock( - help_text="Optional: Add a number to determine how many results trigger display of county dropdown for a state.", - required=False, - ), - ) - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="documentdetailpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "crc_table", - wagtail.blocks.StructBlock( - [ - ( - "website", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "phone", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ( - "mailing_address", - wagtail.blocks.RichTextBlock( - features=["bold", "italic", "link"] - ), - ), - ] - ), - ), - ( - "case_docket_table", - wagtail.blocks.StructBlock( - [ - ( - "events", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.CaseDocketEvent, - collapsed=True, - min_num=1, - ), - ) - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="enforcementactionpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="eventpage", - name="persistent_body", - field=wagtail.fields.StreamField( - [ - ("content", wagtail.blocks.RichTextBlock(icon="edit")), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock(required=False), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="learnpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "call_to_action", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", required=False - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ("regular", "Regular"), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "audio_player", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "audio_file", - wagtailmedia.blocks.AbstractMediaChooserBlock( - help_text='Spoken word audio files should be in MP3 format with a 44.1 kHz sample rate, 96 kbps (CBR) bitrate, in mono. See Libsyn’s guidance for details. Note that the thumbnail and tag fields will not be used for audio files.' - ), - ), - ( - "additional_details", - wagtail.blocks.RichTextBlock( - help_text="If you have anything you want to appear below the audio player, such as a download link, put it in this field.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "faq_group", - wagtail.blocks.StructBlock( - [ - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of FAQ group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between FAQ items.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "question_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "h2"), - ("h3", "h3"), - ("h4", "h4"), - ("p", "p"), - ], - help_text="HTML tag for questions.", - ), - ), - ( - "faq_items", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer", - wagtail.blocks.StreamBlock( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - icon="edit" - ), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "full", - "Full width", - ), - ( - 470, - "470px", - ), - ( - 270, - "270px", - ), - ( - 170, - "170px", - ), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "right", - "right", - ), - ( - "left", - "left", - ), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ] - ), - label="FAQ items", - ), - ), - ] - ), - ), - ( - "contact_us_table", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "rows", - wagtail.blocks.ListBlock( - v1.atomic_elements.tables.ContactUsRow, - collapsed=True, - min_num=1, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="legacyblogpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ("email_signup", v1.blocks.EmailSignUpChooserBlock()), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ( - "faq_schema", - wagtail.blocks.StructBlock( - [ - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "questions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag for this question. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'question-one-tag')", - max_length=500, - required=False, - ), - ), - ( - "question", - wagtail.blocks.CharBlock( - max_length=500 - ), - ), - ( - "answer_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="FAQ schema", - ), - ), - ( - "how_to_schema", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock( - label="Title of How To section", - max_length=500, - ), - ), - ( - "title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ], - help_text="Choose a tag for the title of the How To section.", - label="Tag for How To section title", - ), - ), - ( - "show_title", - wagtail.blocks.BooleanBlock( - default=True, - help_text="The How To schema requires a title to let search engines understand what it is about. If you do not want the title to be displayed in the page, uncheck this box and the title content will only be made available to crawlers and screen readers.", - label="Show How To section title", - required=False, - ), - ), - ( - "description", - wagtail.blocks.RichTextBlock( - blank=True, - features=[ - "ol", - "ul", - "bold", - "italic", - "link", - "document-link", - ], - required=False, - ), - ), - ( - "step_title_tag", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("b", "Bold"), - ("p", "Paragraph"), - ], - help_text="Choose a tag for the title of each HowTo step.", - label="Tag for step titles", - ), - ), - ( - "has_numbers", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this box to display numbers before step titles. ", - label="Show numbers for steps", - required=False, - ), - ), - ( - "steps", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "anchor_tag", - wagtail.blocks.CharBlock( - blank=True, - help_text="Add an optional anchor link tag to allow linking directly to this step. Tag should be unique and use dashes or underscores for separation instead of spaces (ie, 'step-one-tag').", - max_length=500, - required=False, - ), - ), - ( - "title", - wagtail.blocks.CharBlock( - help_text="Enter a title for this HowTo step. You do not need to include a number in the title -- numbers will be added automatically in the template if the show numbers checkbox is checked.", - max_length=500, - ), - ), - ( - "step_content", - wagtail.blocks.StreamBlock( - [ - ( - "text", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "h3", - "h4", - "link", - "ol", - "ul", - "document-link", - "image", - "embed", - ], - label="Text", - ), - ) - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "tip", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - features=[ - "link", - "document-link", - ], - label="Tip", - ), - ) - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ] - ) - ), - ), - ], - label="HowTo schema", - max_num=1, - ), - ), - ( - "content", - wagtail.blocks.RawHTMLBlock( - help_text="Content from WordPress unescaped." - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock("v1.ReusableText"), - ), - ], - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="storypage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", required=False - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "video_player", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ] - ), - ), - ( - "simple_chart", - wagtail.blocks.StructBlock( - [ - ( - "title", - wagtail.blocks.CharBlock(required=True), - ), - ( - "subtitle", - wagtail.blocks.TextBlock(required=False), - ), - ( - "description", - wagtail.blocks.TextBlock( - help_text="Accessible description of the chart content", - required=True, - ), - ), - ( - "figure_number", - wagtail.blocks.CharBlock(required=False), - ), - ( - "chart_type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("bar", "Bar"), - ("datetime", "Date/time"), - ("line", "Line"), - ("tilemap", "Tile grid map"), - ] - ), - ), - ( - "data_source", - wagtail.blocks.TextBlock( - help_text="URL of the chart's data source or an array of JSON data", - required=True, - rows=2, - ), - ), - ( - "data_series", - wagtail.blocks.TextBlock( - help_text='For charts pulling from a separate source file, include a list of the column headers (from a CSV file) or keys (from a JSON file) to include in the chart as ["HEADER/KEY1", "HEADER/KEY2"]. To change how the data is labeled in the chart, include the correct labels with the format [{"key": "HEADER/KEY1", "label": "NEWLABEL"}, {"key": "HEADER/KEY2", "label": "NEWLABEL2"}]', - required=False, - ), - ), - ( - "show_all_series_by_default", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Uncheck this option to initially only show the first data series in the chart. Leave checked to show all data series by default. Users can always turn data series on or off by interacting with the chart legend. ", - required=False, - ), - ), - ( - "x_axis_source", - wagtail.blocks.TextBlock( - help_text="The column header (CSV), key or data array (JSON) to include as the source of x-axis values.", - required=False, - ), - ), - ( - "transform", - wagtail.blocks.CharBlock( - help_text="Name the javascript function in chart-hooks.js to run on the provided data before handing it to the chart", - required=False, - ), - ), - ( - "x_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "y_axis_label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "filters", - wagtail.blocks.TextBlock( - help_text='If the chart needs the option for users to filter the data shown, for example by date or geographic region, provide the JSON objects to filter on, in the format {key: "KEY", "label": "LABEL"}', - required=False, - ), - ), - ( - "style_overrides", - wagtail.blocks.TextBlock( - help_text='A JSON object with style overrides for the underlying Highcharts chart. No object merging is done, nested objects should be referenced with dot notation: {"tooltip.shape": "circle"}', - required=False, - ), - ), - ( - "projected_months", - wagtail.blocks.IntegerBlock( - blank=True, - help_text="A number to determine how many months of the data are projected values", - max_value=12, - min_value=0, - null=True, - required=False, - ), - ), - ( - "source_credits", - wagtail.blocks.CharBlock( - help_text="Attribution for the data source", - required=False, - ), - ), - ( - "date_published", - wagtail.blocks.CharBlock( - help_text="When the underlying data was published", - required=False, - ), - ), - ( - "download_text", - wagtail.blocks.CharBlock( - help_text="Custom text for the chart download field. Required to display a download link.", - required=False, - ), - ), - ( - "download_file", - wagtail.blocks.CharBlock( - help_text="Location of a file to download, if different from the data source", - required=False, - ), - ), - ( - "notes", - wagtail.blocks.TextBlock( - help_text="General chart information", - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingfilterablepage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "filter_controls", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "filter_by_keyword", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Search by keyword" filter in the filter controls.', - required=False, - ), - ), - ( - "filter_by_category", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a "Category" filter in the filter controls.', - required=False, - ), - ), - ( - "category_choices", - wagtail.blocks.ChoiceBlock( - choices=v1.util.ref.filterable_list_page_types, - required=False, - ), - ), - ( - "filter_by_topics", - wagtail.blocks.BooleanBlock( - help_text='Whether to include a "Topics" filter in the filter controls', - required=False, - ), - ), - ( - "filter_by_enforcement_statuses", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Status" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_enforcement_products", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Product" filter in the filter controls. Only enable if using on an enforcement actions filterable list.', - required=False, - ), - ), - ( - "filter_by_language", - wagtail.blocks.BooleanBlock( - default=False, - help_text='Whether to include a "Language" filter in the filter controls.Only enable if there are non-english filterable results available.', - required=False, - ), - ), - ( - "filter_by_date_range", - wagtail.blocks.BooleanBlock( - default=True, - help_text='Whether to include a set of "Date range" filters in the filter controls.', - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - migrations.AlterField( - model_name="sublandingpage", - name="content", - field=wagtail.fields.StreamField( - [ - ( - "text_introduction", - wagtail.blocks.StructBlock( - [ - ( - "eyebrow", - wagtail.blocks.CharBlock( - help_text="Optional: Adds an H5 eyebrow above H1 heading text. Only use in conjunction with heading.", - label="Pre-heading", - required=False, - ), - ), - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ( - "has_rule", - wagtail.blocks.BooleanBlock( - help_text="Check this to add a horizontal rule line to bottom of text introduction.", - label="Has bottom rule", - required=False, - ), - ), - ] - ), - ), - ( - "notification", - wagtail.blocks.StructBlock( - [ - ( - "type", - wagtail.blocks.ChoiceBlock( - choices=[ - ("information", "Information"), - ("warning", "Warning"), - ] - ), - ), - ( - "message", - wagtail.blocks.CharBlock( - help_text="The main notification message to display.", - required=True, - ), - ), - ( - "explanation", - wagtail.blocks.TextBlock( - help_text="Explanation text appears below the message in smaller type.", - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - help_text="Links appear on their own lines below the explanation.", - required=False, - ), - ), - ] - ), - ), - ( - "featured_content", - wagtail.blocks.StructBlock( - [ - ("heading", wagtail.blocks.CharBlock()), - ( - "body", - wagtail.blocks.TextBlock( - help_text="Line breaks will be ignored." - ), - ), - ( - "post", - wagtail.blocks.PageChooserBlock( - required=False - ), - ), - ( - "show_post_link", - wagtail.blocks.BooleanBlock( - label="Render post link?", - required=False, - ), - ), - ( - "post_link_text", - wagtail.blocks.CharBlock(required=False), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - label="Additional Links", - ), - ), - ( - "video", - wagtail.blocks.StructBlock( - [ - ( - "video_id", - wagtail.blocks.RegexBlock( - error_messages={ - "invalid": "The YouTube video ID is in the wrong format." - }, - help_text='Enter the YouTube video ID, which is located at the end of the video URL, after "v=". For example, the video ID for https://www.youtube.com/watch?v=1V0Ax9OIc84 is 1V0Ax9OIc84.', - label="YouTube video ID", - regex="^[\\w-]{11}$", - required=False, - ), - ), - ( - "thumbnail_image", - wagtail.images.blocks.ImageChooserBlock( - help_text="Optional thumbnail image to show before and after the video plays. If the thumbnail image is not set here, the video player will default to showing the thumbnail that was set in (or automatically chosen by) YouTube.", - required=False, - ), - ), - ], - required=False, - ), - ), - ] - ), - ), - ( - "full_width_text", - wagtail.blocks.StreamBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock(icon="edit"), - ), - ( - "content_with_anchor", - wagtail.blocks.StructBlock( - [ - ( - "content_block", - wagtail.blocks.RichTextBlock(), - ), - ( - "anchor_link", - wagtail.blocks.StructBlock( - [ - ( - "link_id", - wagtail.blocks.CharBlock( - help_text="\n ID will be auto-generated on save.\n However, you may enter some human-friendly text that\n will be incorporated to make it easier to read.\n ", - label="ID for this content block", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "image_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("full", "Full width"), - (470, "470px"), - (270, "270px"), - (170, "170px"), - ] - ), - ), - ( - "image_position", - wagtail.blocks.ChoiceBlock( - choices=[ - ("right", "right"), - ("left", "left"), - ], - help_text="Does not apply if the image is full-width", - ), - ), - ( - "text", - wagtail.blocks.RichTextBlock( - label="Caption", - required=False, - ), - ), - ( - "is_bottom_rule", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check to add a horizontal rule line to bottom of inset.", - label="Has bottom rule line", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "quote", - wagtail.blocks.StructBlock( - [ - ( - "body", - wagtail.blocks.TextBlock(), - ), - ( - "citation", - wagtail.blocks.TextBlock( - required=False - ), - ), - ( - "is_large", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ] - ), - ), - ( - "cta", - wagtail.blocks.StructBlock( - [ - ( - "slug_text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph_text", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "button", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ( - "size", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "regular", - "Regular", - ), - ( - "large", - "Large Primary", - ), - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "related_links", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "reusable_text", - v1.blocks.ReusableTextChooserBlock( - "v1.ReusableText" - ), - ), - ( - "email_signup", - v1.blocks.EmailSignUpChooserBlock(), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ("50-50", "50/50"), - ("33-33-33", "33/33/33"), - ("25-75", "25/75"), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ("none", "None"), - ("rounded", "Rounded corners"), - ("circle", "Circle"), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", required=False - ), - ) - ] - ), - ), - ( - "snippet_list", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock(required=False), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line above this block.", - required=False, - ), - ), - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "actions_column_width", - wagtail.blocks.ChoiceBlock( - choices=[ - ("70", "70%"), - ("66", "66%"), - ("60", "60%"), - ("50", "50%"), - ("40", "40%"), - ("33", "33%"), - ("30", "30%"), - ], - help_text="Choose the width in % that you wish to set the Actions column in a resource list.", - label='Width of "Actions" column', - required=False, - ), - ), - ( - "show_thumbnails", - wagtail.blocks.BooleanBlock( - help_text="If selected, each resource in the list will include a 150px-wide image from the resource's thumbnail field.", - required=False, - ), - ), - ( - "actions", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "link_label", - wagtail.blocks.CharBlock( - help_text='E.g., "Download" or "Order free prints"' - ), - ), - ( - "snippet_field", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "related_file", - "Related file", - ), - ( - "alternate_file", - "Alternate file", - ), - ("link", "Link"), - ( - "alternate_link", - "Alternate link", - ), - ], - help_text="The field that the action link should point to", - ), - ), - ] - ) - ), - ), - ( - "tags", - wagtail.blocks.ListBlock( - wagtail.blocks.CharBlock(label="Tag"), - help_text="Enter tag names to filter the snippets. For a snippet to match and be output in the list, it must have been tagged with all of the tag names listed here. The tag names are case-insensitive.", - ), - ), - ] - ), - ), - ( - "post_preview_snapshot", - wagtail.blocks.StructBlock( - [ - ( - "limit", - wagtail.blocks.CharBlock( - default="3", - help_text="How many posts do you want to show?", - label="Limit", - ), - ), - ( - "post_date_description", - wagtail.blocks.CharBlock( - default="Published" - ), - ), - ] - ), - ), - ( - "contact", - wagtail.blocks.StructBlock( - [ - ( - "contact", - wagtail.snippets.blocks.SnippetChooserBlock( - "v1.Contact" - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Add a horizontal rule line to top of contact block.", - required=False, - ), - ), - ] - ), - ), - ( - "table", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ("h2", "H2"), - ("h3", "H3"), - ("h4", "H4"), - ("h5", "H5"), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "options", - wagtail.blocks.MultipleChoiceBlock( - choices=[ - ( - "is_full_width", - "Display the table at full width", - ), - ( - "stack_on_mobile", - "Stack the table columns on mobile", - ), - ], - required=False, - ), - ), - ( - "data", - wagtail.contrib.typed_table_block.blocks.TypedTableBlock( - [ - ( - "text", - wagtail.blocks.CharBlock(), - ), - ( - "numeric", - wagtail.blocks.FloatBlock(), - ), - ( - "rich_text", - wagtail.blocks.RichTextBlock( - features=[ - "bold", - "italic", - "ol", - "ul", - "link", - "document-link", - "superscript", - ] - ), - ), - ] - ), - ), - ] - ), - ), - ( - "expandable_group", - wagtail.blocks.StructBlock( - [ - ( - "heading", - wagtail.blocks.CharBlock( - help_text="Added as an <h3> at the top of this block. Also adds a wrapping <div> whose id attribute comes from a slugified version of this heading, creating an anchor that can be used when linking to this part of the page.", - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "is_accordion", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of expandable group.", - required=False, - ), - ), - ( - "is_faq", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add FAQ schema markup to expandables.", - label="Uses FAQ schema", - required=False, - ), - ), - ( - "expandables", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ) - ), - ), - ] - ), - ), - ( - "expandable", - wagtail.blocks.StructBlock( - [ - ( - "label", - wagtail.blocks.CharBlock(required=False), - ), - ( - "is_bordered", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_midtone", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "is_expanded", - wagtail.blocks.BooleanBlock( - required=False - ), - ), - ( - "content", - wagtail.blocks.StreamBlock( - [ - ( - "paragraph", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "well", - wagtail.blocks.StructBlock( - [ - ( - "content", - wagtail.blocks.RichTextBlock( - label="Well", - required=False, - ), - ) - ] - ), - ), - ( - "links", - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - ), - ( - "info_unit_group", - wagtail.blocks.StructBlock( - [ - ( - "format", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "50-50", - "50/50", - ), - ( - "33-33-33", - "33/33/33", - ), - ( - "25-75", - "25/75", - ), - ], - help_text="Choose the number and width of info unit columns.", - label="Format", - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - required=False, - ), - ), - ( - "intro", - wagtail.blocks.RichTextBlock( - required=False - ), - ), - ( - "link_image_and_heading", - wagtail.blocks.BooleanBlock( - default=True, - help_text="Check this to link all images and headings to the URL of the first link in their unit's list, if there is a link.", - required=False, - ), - ), - ( - "has_top_rule_line", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to add a horizontal rule line to top of info unit group.", - required=False, - ), - ), - ( - "lines_between_items", - wagtail.blocks.BooleanBlock( - default=False, - help_text="Check this to show horizontal rule lines between info units.", - label="Show rule lines between items", - required=False, - ), - ), - ( - "border_radius_image", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "none", - "None", - ), - ( - "rounded", - "Rounded corners", - ), - ( - "circle", - "Circle", - ), - ], - help_text="Adds a border-radius class to images in this group, allowing for a rounded or circular border.", - label="Border radius for images?", - required=False, - ), - ), - ( - "info_units", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "image", - wagtail.blocks.StructBlock( - [ - ( - "upload", - wagtail.images.blocks.ImageChooserBlock( - required=False - ), - ), - ( - "alt", - wagtail.blocks.CharBlock( - help_text="No character limit, but be as succinct as possible. If the image is decorative (i.e., a screenreader wouldn't have anything useful to say about it), leave this field blank.", - required=False, - ), - ), - ] - ), - ), - ( - "heading", - wagtail.blocks.StructBlock( - [ - ( - "text", - v1.blocks.HeadingTextBlock( - required=False - ), - ), - ( - "level", - wagtail.blocks.ChoiceBlock( - choices=[ - ( - "h2", - "H2", - ), - ( - "h3", - "H3", - ), - ( - "h4", - "H4", - ), - ( - "h5", - "H5", - ), - ] - ), - ), - ( - "icon", - v1.blocks.HeadingIconBlock( - help_text='Input the name of an icon to appear to the left of the heading. E.g., approved, help-round, etc. See full list of icons', - required=False, - ), - ), - ], - default={ - "level": "h3" - }, - required=False, - ), - ), - ( - "body", - wagtail.blocks.RichTextBlock( - blank=True, - required=False, - ), - ), - ( - "links", - wagtail.blocks.ListBlock( - wagtail.blocks.StructBlock( - [ - ( - "text", - wagtail.blocks.CharBlock( - required=False - ), - ), - ( - "aria_label", - wagtail.blocks.CharBlock( - help_text='Add an ARIA label if the link text does not describe the destination of the link (e.g. has ambiguous text like "Learn more" that is not descriptive on its own).', - required=False, - ), - ), - ( - "url", - wagtail.blocks.CharBlock( - default="/", - required=False, - ), - ), - ] - ), - required=False, - ), - ), - ] - ), - default=[], - ), - ), - ( - "sharing", - wagtail.blocks.StructBlock( - [ - ( - "shareable", - wagtail.blocks.BooleanBlock( - help_text="If checked, share links will be included below the items.", - label="Include sharing links?", - required=False, - ), - ), - ( - "share_blurb", - wagtail.blocks.CharBlock( - help_text="Sets the tweet text, email subject line, and LinkedIn post text.", - required=False, - ), - ), - ] - ), - ), - ] - ), - ), - ], - blank=True, - ), - ), - ] - ), - ), - ], - blank=True, - use_json_field=True, - ), - ), - ] diff --git a/cfgov/v1/migrations/0254_delete_campaignpage.py b/cfgov/v1/migrations/0254_delete_campaignpage.py deleted file mode 100644 index cedfd992b8d..00000000000 --- a/cfgov/v1/migrations/0254_delete_campaignpage.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 3.2.20 on 2023-07-19 14:14 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('wagtailinventory', '0003_pageblock_id_bigautofield'), - ('wagtailredirects', '0008_add_verbose_name_plural'), - ('wagtailforms', '0005_alter_formsubmission_form_data'), - ('wagtailcore', '0078_referenceindex'), - ('v1', '0253_new_table_block'), - ] - - operations = [ - migrations.DeleteModel( - name='CampaignPage', - ), - ] From 9f088bc75f12986a385f3484f815af757623e6a7 Mon Sep 17 00:00:00 2001 From: Andy Chosak Date: Thu, 3 Aug 2023 11:21:30 -0400 Subject: [PATCH 2/3] Fixup references to now-deleted migrations --- cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py | 2 +- .../0001_squashed_0003_delete_conferenceregistration.py | 2 +- .../migrations/0001_squashed_0014_new_table_block.py | 2 +- .../migrations/0001_squashed_0008_new_table_block.py | 2 +- cfgov/hmda/migrations/0001_initial.py | 2 +- cfgov/jobmanager/migrations/0001_squashed_0020_hourly_salary.py | 2 +- .../migrations/0001_squashed_0020_new_table_block.py | 2 +- .../migrations/0001_squashed_0038_new_table_block.py | 2 +- .../0001_squashed_0005_add_use_json_field_to_streamfields.py | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py b/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py index 0c3a7850d49..4b4e772b0cf 100644 --- a/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py +++ b/cfgov/ask_cfpb/migrations/0001_squashed_0004_new_table_block.py @@ -25,7 +25,7 @@ class Migration(migrations.Migration): migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('wagtailforms', '0005_alter_formsubmission_form_data'), ('wagtailinventory', '0003_pageblock_id_bigautofield'), - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ] operations = [ diff --git a/cfgov/data_research/migrations/0001_squashed_0003_delete_conferenceregistration.py b/cfgov/data_research/migrations/0001_squashed_0003_delete_conferenceregistration.py index 997bfed9b6c..cc579ba2978 100644 --- a/cfgov/data_research/migrations/0001_squashed_0003_delete_conferenceregistration.py +++ b/cfgov/data_research/migrations/0001_squashed_0003_delete_conferenceregistration.py @@ -8,7 +8,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ] operations = [ diff --git a/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py b/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py index 434b14a39a0..45865f73c9c 100644 --- a/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py +++ b/cfgov/filing_instruction_guide/migrations/0001_squashed_0014_new_table_block.py @@ -16,7 +16,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ] operations = [ diff --git a/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py b/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py index c9b408f8a2e..7bb8760d576 100644 --- a/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py +++ b/cfgov/form_explainer/migrations/0001_squashed_0008_new_table_block.py @@ -13,7 +13,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ] operations = [ diff --git a/cfgov/hmda/migrations/0001_initial.py b/cfgov/hmda/migrations/0001_initial.py index c1b96c50c90..8c687710de2 100644 --- a/cfgov/hmda/migrations/0001_initial.py +++ b/cfgov/hmda/migrations/0001_initial.py @@ -10,7 +10,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ] operations = [ diff --git a/cfgov/jobmanager/migrations/0001_squashed_0020_hourly_salary.py b/cfgov/jobmanager/migrations/0001_squashed_0020_hourly_salary.py index 796e81286e0..39799b7d7df 100644 --- a/cfgov/jobmanager/migrations/0001_squashed_0020_hourly_salary.py +++ b/cfgov/jobmanager/migrations/0001_squashed_0020_hourly_salary.py @@ -12,7 +12,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ] operations = [ diff --git a/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py b/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py index ccdf9c6414a..a1d97d93412 100644 --- a/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py +++ b/cfgov/paying_for_college/migrations/0001_squashed_0020_new_table_block.py @@ -13,7 +13,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ('wagtailredirects', '0006_redirect_increase_max_length'), ('wagtailforms', '0004_add_verbose_name_plural'), ('wagtailinventory', '0001_initial'), diff --git a/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py b/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py index 5d6c2b256df..c20f1e73fae 100644 --- a/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py +++ b/cfgov/regulations3k/migrations/0001_squashed_0038_new_table_block.py @@ -17,7 +17,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ] operations = [ diff --git a/cfgov/teachers_digital_platform/migrations/0001_squashed_0005_add_use_json_field_to_streamfields.py b/cfgov/teachers_digital_platform/migrations/0001_squashed_0005_add_use_json_field_to_streamfields.py index f1697bbf18d..c1fbbc768e9 100644 --- a/cfgov/teachers_digital_platform/migrations/0001_squashed_0005_add_use_json_field_to_streamfields.py +++ b/cfgov/teachers_digital_platform/migrations/0001_squashed_0005_add_use_json_field_to_streamfields.py @@ -19,7 +19,7 @@ class Migration(migrations.Migration): dependencies = [ ('wagtaildocs', '0010_document_file_hash'), - ('v1', '0001_squashed_0235_add_use_json_field_to_streamfields'), + ('v1', '0001_squashed_0254_delete_campaignpage'), ('wagtaildocs', '0007_merge'), ('wagtailimages', '0019_delete_filter'), ] From a09d7fdd151cb1569f8c8516b8a6209fcf7f3622 Mon Sep 17 00:00:00 2001 From: Andy Chosak Date: Thu, 3 Aug 2023 13:04:09 -0400 Subject: [PATCH 3/3] Bring test database up to date Apply removal of now-deprecated migrations due to migration squashing. --- test.sql.gz | Bin 509711 -> 509763 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test.sql.gz b/test.sql.gz index 180365f1ad94915469d1abef86be65977e516a27..21fa1bf1259ca07772377ceab941c6d4923d931b 100644 GIT binary patch delta 322559 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�Fs%OV{d&A@P4iv{re`^ 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

Y?vs}sY* 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⪻Sm4AQ;1CeZ&S;Y!BUVs9ay@D3Y7Yd6>!bZdfe&ozN-#N2tx+YyT zX6qPlVOglujx4*jo;vca71h;F`l5d;A-3w%WXhG(qzC|5AD9&z*W-8%H19WyPRnn2 z&gDa%^D?Tm(|O+buH{R4l>b~l7$ephBzC{^V)G^TTWP9XPk*cOpUOqi6cs!BDT)Le z`#CCr&5Or;Qh!C>nNR1iSSET-;h|~EWOd=|(RGqK`Tpm;EoY(Nqg_!bYG_=x}y?S7HRuLxElF!k;h~; zFC339uL@ar1%DWKmlA3FccnAt|7Y(@o7^_C1V4L!1w-4js){98#KBAUc%vj)-I}#* zk0rOK$KAmI!6b zTeiOZoTQZ87KIylZYkG8X+7AdD8Xu#DG=fW2_H~h%zyK^E}Lhb%V5H68>U-lw<%j_ z)DZUTCZw1;o0&$82_sl@7U%vB-7xc`x-s@^oKb$=lufo$s3XEEj|P6sD9r$a;3shJ z*EahNxs71!aNn8LWb^$UOQ}%*1-vgJ58xB@zKE5{$jyS3e~fNYXI_{61WM6-V=>c%TC86xQVY+c-M_! zNmSfXLsgTclr7Ytqs*DIC1dqNQ?QNKiriC4kQPA*wKJhA^5((wt zh?TW)bj>A&YO}Q5JdsRHOVyUvxe~6zD6JTvC!%q@RV%Mce;Vjg zo|7I}%rQ{{CJl9x)G>z|p5miq&EZ~I(;8h|&$uc!b^s6Sx*g9~Jd8foGBJA7$KhbT z#vF{7oy1B{>zrTlGy<&6NDZgfhG>Nh0?Q;L%o^M*6VFlMjx(_|?iJ!CXdNovDsGQb zD>YG5%#dF$`3$to&%!)LiY7j}h=1n`qD%#d5n^L8OHBPPMRHyaP4lw8;vE~34O<_w za)TSgLPF85uyVdf+Cho#NbmKfwVlkj@G+=Xi-;O zG*F3WDC2ml?V%ub)lRKSoNBPnq7bX~A{#x#OP@RC>!|Wjr^=&hs;nVrfqw|oFOK@f z2){Ur=8pE#Tx(c$t$trvenV|u&^IQiOD>o1bDmLhl-yR~QQ711 zl3=FnllWP}P)QFi`y5^?2)nQ%ie=d%3GH+Z$19y99pK4(upi=WdDt4*mlLr?WWzBP zJGy(J-x^C^&c(K^|KMb7uYYID#`df#vxXh#Ov`Tbf)zAE7K0SUG|;V=>IDGcBWYN9 z31;40^w~j;MXg9WI6FWemI59ruE?*BR3uwUck4=?*tG@B-L3)W)um{V5QJDCHq3;N zItTJ8{pM)DnSSKsAbfvO8f&y`eZYaSjVtb_sD*aWl3s+_Vg^#41b^~?ET;PRFHrZ{ z;$5{{@8T8t_GGygei47pgTE;7?E5c5c-i&8587MhNPye<9LwZysj6y%)i29&06(p< zE%YoVIajO9az-Ehv_KzDO`_Ou;V&vV2*g}cm!+Z#V*I@>dMUB1tqJmNQPIaPY;;y4*{f59qiY7Sw+9%3 zoXWD(0t5gbmP7Sy4r%kaEh-jP~%u!%~xb^&rm&w%Env0oU?k?vU;>lXdFa_I#@5Jgafx~7E=0vV0nqza2`)3o9PBlGW%_KS&uBf> zE6j?-x+h^c0kEI44zI7-{G}IJE`}+u-z-LZ)XX zH8>nvZ_CgML?Gz6UhiL&DGfgfQ(e&Mb-UUxaDRjN72PBKRs-pT`(wGjGkM5`VJi=2 zF9CeVwSs)(P~D??Qt!ly)%h~%F zrho8Y|4C7}HQlWv`NrxMzSKV>IpFP{sJXB*0PwYl)E@3K7CpK4;IK6!+J?h_tzvY~ zU=b-?{z;q%FxKnzG+d@n0+&4lmp#N~PvWw-2bY0AkMs3?Y+UxwiOVjjf9OoEz~y|v z$Hrw-O0uFezogH|d){CM@)LhSia+!f|oo;7cF5m){iE2 zW%pV?enyq(?G`S0+xoX;hkZh^V&uwFBDU|49MyX9k_$T}gM;g!|F-qcc^)s9WrKiU z`q|Lgd-7+{RxP@;>xtI`Wk^FFH0pLsQyOlZ7YXmy^a|iQ!$MjB0#`4-fA#trm4D)p z)2Om5r}i<|g*Cj4;Y{ObTXylhz|39L2j7I-U5bqk-l2tZmp;H0Z{AsxIbVwgt#I%O zz!TeIA3}QV868780$koDR7K~Juxe!fQZAXtr1*xTM?2%A<8}-RXbrk;=HWPqCO#8Y z>>hzMUcd$7HIBipG;`>O@>pdzb$`q}wB)7%CDt&(hC(l2gc1->k$l}wSCf3{laPFU zcs`eW;ZvKwB62{#?U8&r6sbiXC;r+1sBwYTT0xd?r$UIOAAbV^tOgLORSY(Q#NYU) z#hYP;_p8!^<~n!1h@lK2jdG21MHM{9S^jF|_D+BBgV7NZDjUZGTHyDL~&p zdF>vi)e6NG{w9?b{_OzjaumlgL$5P(^I`N+{;VFC4>*5v^EsV*8ldfHtnKK0bif`A z`KcyzoP#(p6|BkgpE6sb#I_2aIxQ~zb%l91Wn%HR!Meby+K*|XU5R3nWLupeaBv;J z+y}J}!>j?BHAzl*K6EydG=F)IUD;Rz9IHSwx9xg){x1BDTfl!cB%?8%L0=yRA1z2$ zjZA#WW4Yw>AyMOUrGF$O(g39zd9*>l0i>~pVb%Hf!u5J5TH`g~Nq1G~()EKpRnQLz zUEp5>UGVd0pbvwOjnG9nnJ&Y38pm+`kx&K;sVR9|@{%lCu<35eRDWsK6&85`Y3h#2 zuASHbRDc?H3RWZB8DH_S(a~=l5ccN9?TuDf_L-3$n22O*Yk^vll4}anVrhm$ODH3b zmr=YLA6HR0hK1q+53D&;V^j4{jVP-rH}hKw$x+B^M12Uzwcr1q>wl!+996*Oa)4Z{ z8hjS(o_}y)%;h$AG=E|elkZ|Z|E#v63pARk5_8}VKZ*U!p#{l@V(k3cKW zTf^o|p*zPB0MqJI!SZF@mW0}aJAcqylt|O0uDtSYphQ-qyrR-H;zN3`1Yz61y^DnV}J9`=`8#kvt)mLmz-7| ztg-m>iF%FVB0ma|CRM|cwEt1T9F^I-Nnp*qiqMoNzD;*&p^MD%9H()?Kno^NWr;(z zw!4PDA`SlY_nZL!rO@YOxPti9M<5#no%QOoX zPGQR_`ku>iF1Kqg^MsaZYs__`w8(i%VLw*3gKdw}9e=2n!##Z(PMv_lzQ(TX9gT4g zto+U+AY8XH^x+*XB@ffDt&`C0cm09a54zYjBs6y;DsX(8WN`O$29LB}pcMMhZoRm@ zwsl6)u`6G|p^D3&zxn?4OAbGOw9d?o+yWGSb`<7 zH6SKbg1xRbnj|DgP$g2M-mjB;qbed#4;N2MTobAt4Q?MnvGfhVhyHV#V1HKyZd*;+9b4}Tm5Js!!r>zvZG>4| z_Bf6m?B&>vOLN&a1Umn*mA7g4V?NzjOxMH?TEV}YlF*~Emk#W5u?H#vmHS3EY7gA7)DcL z*$;a?U@V4?_^~C0PpW|OB-({M)XLWz>lCV`Y~n-FWnwJK5WwG-$a~Na-nwVYB~O-B zrF&#ju=Qp6dahV!j)iD=x1Zex|6H^C)_*eQC}q^Tx}mBr>J6fl1R6i*6g$l?1q2AP zeqv3dY!Pp++tt-)M1Y(+9J9oC^<}}!>hB7#q-#fhoz3PX1osLD0AfZW_8@-Sa5GI3$_O9)PJ$y z<2QQ(qo$J?<0NNb&!?9ADzWDuYujL)k3G{_sw{<1nkk!0J-z#bt91hP?H!3tjn=PJ zXivk|S|09$f_bG;J+__$!N}`1C5bRcXH>)zkvBM?qsr0>OTXq2CRc9NN+ z{cP3%K8^wG?bjJJj&!kZr6D<|DaOfctW9xDs$UJ651K@yl&q+)VzjxF)B=K$TxH27 zstt2dQVNWrhP_i8+QXqEW2lkir_b7@3O43oBjZmS?9t%B9BkzO>5HJjBY$(Sk@#mU zgGPIWxs8NBeIY%u5_7nb<7X_TE63r5Vx6+zkdaq)-@p&+B61vFzD7##D4sgoc*WY( zYef8s8_cLm8{mVSTZr@cFIJyJLZ86b_oBTg5VBR6#z2(I8UrdGTKg#ONGenrwK8I( z-5Dxn;pmNvD|EODYw1{v?AM)MUa)L?pYTZvXMf}IR5x)zvK^5) zDBCd|c}U#UFNr4J9=(q;t4D5gvwvuFG-`7pq$ww8^ZZb1<_$83On6h??L2`T4tlfBnDtS2>Z$0P=PjD@ZXbIUAp5IiGAl#Qaeu z**N@BQ@}a8#hAOd$5>zuPpj{Tpc=3%Lu@Nw^**nKafBjWRe$&(w4cg{s|J5b!7%=p z@+tEQ%B}wR7N#T*a3k=8;txPn7YIaxu!+nOz3QR}ptcYTC7!8M80V*OwzdkR9;k1l zeqTv;?Yd41Doy{O<_2w}jY7XKUeUapf{k>YH44zg!nQDn_F;MNql-G!*>bgq{NGfcohJXt(yh`|*lx|zWMxB8AxjwF#;9CVzP?*$P`}Y!;xIAS;lJH|FgM zR@ZH+0JGVO7@J()gp1+!=%+eg@?&<$g4Li5gw z7rN&TcU!LT31rqMpC*kMh^nUNsh9c%u;{b|&Wp>|kv^xmd?F%4Ho?Ydx#w2*+{>-9 zMI%m?rGHtCbMkR!LxiIw6mM@&vY>IGZuRC)@hR?BV>O-N`KNmqgHsF3eKhaly7G|s zdmBHdtFeCFXK+1^H2u{cOnVgQo(EzN)Mz>A0%YlSMQbm+pmD5f^#xo!d?$Z(F%+a^ z%0>pWPKw|2l1@_M_Im%KakE0pE)`B?hY^iTdw?+;69n0aj&ZS z=N(XuRR}<5OOj2-?pV!rf%1Am<9Ik$dsfzdL(NK7oTu1c z@_#$0g<25J>uSW<8a`Za>8J<5L(Cm-*sn-qR239ywGiJEJN#kCQow{C&4FLKWax1H zFRc%q-^ig}lTUV=&fzzpXVfx)+vPA^1fO*@oI^>upx23)3$^b1y_YXnL6G?-eBhF| zSXp3eW@#efe$K|4+hDL0DRz>=L^KR-_kV;fMzyx&2APj@F@EUUW$3zpF?FH;`3!ZD67h(UuIlty=M?Yop0&UWJjR zSbw-`u1_{&@m5@A>Q=k&wi%MNN6cuGmmaa|z+{T5iT25uM|2ne5zE#d zD_;I3#0q&_BK&y~BgzVomH#Cbv48A+>H9*gyUpT@$&Oy9Bs;!agmJCVnDY$2vJ?;E zKuI!xB9|MzlHBMGD&!=6jns|7npU};e-ca5cP;VZ0wgf(KYPzEON zW4bS@{g?v8!1eBN>uewRQs-Qh!OqF;Q>~9AI1Vw_(VU1D6mAW*BQuGz^M77>VN_~pg-?m z7i;m@i$%D?TyH*5ol@YH-@=EevkLI6-on%Jmwbh}R#RM0z8@n%n}4YIC$7B^rLIz3 z)Ct3%$0;tv8TL_t);H@Eg+mG+`a$u|cWFFfkFEKfvQ~L)UVd!e3CC7sj~_<~%-=7! z=jYq=Pu^aMMtr=TT9+a>9psx1PTq8hetf)5TbJ@#&3{}qKNWhzXAS=_4WG{IQIz|d zR~6Oz@KKa{T2HReUw=eJF|`wA9|%sj5A0F7t?9kZ{EU?8|5&9mbb%JT^|+O{)&C>~nOF@HrO4(VMs&%S*~mx;I=_WuC{G+>||QhVA9yxhS~p zh0zz`YLZB$x*AMz!VADD9n+=Yv~fEJ657uTr^WlY%B~*;{C}(okBldfR z4OKc>`1UHJq<<>|PhB(R$p+D9O)vTl1XqA^Idk9^)?2QlX9{{cpOCTm5YO#rJJI9W ziS*p2%%C^>twwq@d}Axl;dM-o0iko-N3^5iDbQ`<{^W4JkMvs;RGNt+dzrxzgrRxH zfI+m+FNFk6rI4)tRE$*ihBC;(S?-65Al3J9LGeS+B7Z=Rc5)VhcTg6AXJ!#_mGL53 z1U+jO!EpgK-cbnQRfUS!AbenvN{-_pl)R|gbKhHt|503I#_nbH3G1X)SnyTYTBL0D zuTTG{QdORQjV(;343vRohKBOoB~fN3SFZ?^gW>g8H{sV7SavmfY7NvsW9Eo=(aezw zDB6=PVt<3Cep7l`n*-umb3m-QRfi{f6yQSNqy;|eb5u^c6$N2~LmE=c^bdgpYq;il3`uoF=90dn8YWibGqM3&lH6Yt&UB$$QeZeb1Pm|e!rag64tM#~f`3-EpT`DUXY(>zV9Tq5t)h#j8ElCS zo(Z^0fzJY9dffv6rhh>n;eLQQ%}G-SM3t@?3kdbk<^Z&SP*u02l2@e>2=VQm6@cpR zLIIU~2vA+n^S2+Uj`FJ1!BUkY#Rf`e^W9lMDX0Raq7S4IC~eNj=V~rM0g!hH05$IU zTYqo$@=mDMLU2&;ey{<8t#j}1QNGqr#sWlp%x>yh6mqc1|m49g#V+mDH=X zlG-54Kdk3ed1om%V^-#Q7^A3aWufH*qkn|fFuZRyPMy*G=|8^t(?7!e*>7A~s`e86 zKe+i*hp;0m;Z#ZX#}b;uohp4>ZIj^H8sRdp#A zO7q#=se|DKt?v7I+ll5*{}^*;|7@mo3vB&P&7C^HT+lwgA7CzE?(~l^cb?5+Zhrxx zKa9Ck1FFFVZRq=f>U`!-zp=SMz0n1DQNM!{q6o!{iwpWbzD5lc#?7rI4w{-g2e!ecVH-poRn?ZBqChg#N zElxj{MNRFMu~J z5mmH(Wv%%Ri#E_(SJ?7VHGgGYGSUAXrhg&~qvHh&r*uV6UL8A^){Q=1w{TrJdloI& zDwMX%^=`RDP);^uWDShA_T-m;JmGMGUyKD(xFa;{Frb%lwipZRt$2P33dcBQcX1Z$ z(*l6rkK^@t#nw9n!CAP(q5x0s0EO_bMR##{W3)?C#w(*N!!66UmVeo{X}AXRPf+rn z5up11fQ`Dnnd1lD$O+hV=#2dC&>0Q~elYEiLf@ylHgHlX;iPb=Q3}AXF9wvR?Rc}B z;I`Ow9B%VBve^u6!mu|u)-jx^w&huzRz8=pFpU=DDa)cX-smVC&F0A+!sQeXFdJuV ztEf2sv<>HT%WwHY;D5*f=fzS8*c`X(bg8ul)!bQ*Gayp{1LJsQ+!4(m?zTWQEN{3E z=ZI0`aJqsEi;@-G*;bK_MVO6u>wL373DqOx0~$Q&CNXCE_RbnG}}x%u;`mKyuV4=+}W~dag$A!&VMYPI|4j!R&akTy#bVC z4i;m%p+muUIs9E6g7yFY;_u&m;rjhA+%Eu<;r~xV)c@gk`(Mm(65r|e9JkkU-Dkn@ znb+-%f{{OPy1^H+X)$>?5JlhvyoM2uZx^`ZZnx{ge;)idg#Uc}Ojo(w&D90dg2?&6 zHuMC_$_y#z^68T zMPds5j)OT#lf!?;@-}hCE8It*Auwd z%6_|)B!6_yk*OS4n(XF_gxcP~1NUswLUMyM#IWVNc#0L##5`H&tDDW&l~>`x$~P(Mzc& zr|Gs5^Jzi?>dI@Geweyjd8jXOi=0K)Uw?%gf0)O`tMK!yFi0XU?4C-O$(~j4f`s>- z(n>&yT4)tlWVS<}$H?JZSMsmxPU{wsKf*Rg4$5?-q6(o>0t3H5UYt$Lq}6}hb5347 zTCI(9%5|ywvzo3p>$~Dv1uc-9w)|@IiR5LHq{Xi}%y&!0BUcQ#%7o3Z>^}ewT7S+a z96F{&2;P4p+MAC(m(jx8&gJfYCjB4ob`Fa~R#$&AY`gVm#gpl22o3POT7~I@$wtFF zU@Np8)z<+xjPDHrHM1>0hzdZ$zz#T&WyrN4Jnxuso+D*~T%;I9{UGf3`%V~6W==4e zO`H*9o)h`Oa5R|p2Cg@OVHC+?Jb&m-2VFNBMDSpL01x(DXV~op&cvPd2X22d=|w$! zu-!UQXsV#3)l!o8Xi}0U8rTT~7EbJ#u0pn+x2{B(5Ag6U#rgm_f4iH|$LDAXo1s-J;SDEtoFWr@B!5neJU?23 zgfY`7RhUjCIp*CUXbn1^lLTTC!wPVm_QLMO@4HSo9CSgsbpad)6VDm;2HjCF2nNG& zW(7xo((U%xVCJyCH*x|m3IH&to&)m@!cjNq^+tmlaD=lx93pQgiRf=waRHK5*1%}z zqOyE3{Fy5I_yZ*BJTO3_Aj$una^`vg1&pB3^4Q-BR~KUIv)h z8Qim!<`E|lauHyt_l%(TH~}`Zj3R(l;-2s)Ni*1KehrAjZ1Tt+@!7kZs@?yTDIGyP zEZRYmq{8@Zre=zU%amPQhKvs7+Z30SRL zxFoWo#Qz06Mcp%Zx(ik-PZVg``*m^;?0U{j!Gw!$#KvKp;zbe!;pTT~7(MVspm5Is z@`>Wx=BS__K```#!GC1r^t-db31+3>+7?}g`u;=&u2hEpkF6_l_ozy)xcjDM@JNu3HCO=r6(=hCda zIk}%HTgI?U)Zn?1e91a{l+fw?LpahWC!=VKXqAQu+(5$b9Tf5VjwBM@chroFE=|F9 zK29xhOT(7C)w)HkMzx~LLXXgN86}3$e6cXnwB<Vt}NMKSvK;u@#E3}K=b5QX=z1TP>O+iHB2@?{7(qSRL4%%VDe%a>#5T^-Ie+p$Mw|GXDI9`z0C`8=WKtW(0uzx(x;DO;K#@)BBr1?l>Z-|2y z7l7yVRs6NvZv8@Y|D)aVzq*OPZr#(o6G$q1EJ;d?G*Y0#6a z{sOykVD7)&x0TT@PCn>oT|8+Cc4|r;h$N^o*is@W$~4)b4vY7Jtb%psowm517s-0Y z0AmQK-*F?5K(7}Gp24>Xy4QbNZ9eQm5((bMyMJsM-iy#b8vQ-c^<=G}{}qQyt>ra8 zBC%=|G|}o*x5&2WT%O;fG(PP+y}|o_rmRfgCAq~X-KFbJ>svK2lV}QJF|}1-VcHVS8bM6N%?R ze^e5L8|3emLd0-8R0f$_q6kYSuU$&IoN#B%H2Y)-1~}3XaKcP8LRAQsKJzBsXf$*N zJ=8A;qnJ-SCj%!4doyR$_Xf_u3kKm}lJlIEgN7p=S0~a&4X7=(H_X(`)9TL7{#*>Y9BI4Mt^*k z{_`}v?{FVF5TaB-a0h7r4Z76HgD$=2I@zA2k{(Tw>{5cr_= z4yQ9`5)OQ)KlBE(*<{w8M13o98h`j+cQP7y&ZIw>IzboK81_Bpc%$AZ8V;BnMHLG@ zhB)QchiU>9JQ9H_EJ!dUfKIfPbHR!1BgDMY9X21vpBvC7@&#qPl&P*Z93Noa^bUL> zDI3)32zhfjeaJm#Z4%^lGYof9Cm>FeZH@=3!AYP)fLJ;iPSi(bRn8tj?tl1|eqJVX zkPdTAlKPlPEvVC?R#@s)+>V60aZ*Q^tGtG7DS_)`L%MUg@duZXyOFopa?7wrk}!_p zH9%5m1^HXH=stuAS12LH8oAkoS<&fKQVDb3gnLH6B@v^HEA3hclO$vadju8wq=u7H z7}+rOWUafjHffv?EW|*-#ec2^q);?Lgk7?cDb!Q)5nB(HN#hk-9NNZO?$C#Xw+Rb9 zz{wwsCQPX zyRhxpwr$%J+qP|6cWg|OiEZ1qolI=o$;8Q*=h=I|_5JLsRsFAPRd-*J0owgmIzeDJnsV+BZvKn8faGkX>S# z)Z9|wN?QC85P@{b*Z1hn3(|)EhkuDu`UNUubjsRa)laD#x%AT2wf-{hatzrsA9~K5 zNxX)zpp{9XOt2$u0fI{z5HUz&`?Q%NF{tyvT~&$2(LNeW{{;4)+X(6@6o_GvL+%aR za%#)LUBLATir?KMguj6h0j;}`1$6&557S%tgH!WIFeSLP%jdJ}Gziw#nD|M8G)R(a zBSJE9jQUi>GSM=$=Pt@^5{V?OE#iS56hJ9H-d>Dp!F_({gN`d0 zHW{xRRYp66i=^lkECzHf)pZ%>gGl!{dM2#Pt_#^FDL|i*cCyaSUf(q zS63fgL{cy;2D5RTd;zxdB)sV3Q4=#d+a5<-l@@?NbZ&my{pT=Gxq);qC%1;^U|&1b zGZVHL5Acf?sbQ&4(!BP?rqY<**(f&3W}hDI7r-A{M7RfZIx9~o&|dzfvVFr(96VKQ zkjU9$W(xnG&^Y4z3{}<>UhS;-H5p#)8>&yyG8K-T&!W|CT^*wI*WcJIqeHnY%ehRr zPo`5=#xkXQ-1e58a~4RYa~u;>MPx9Qbs@G$iY@(Bmw|wOgbyLYuZ(v2Qw53O8Ud3= zXaHx=eM~+4Ju7`s?yowjjLk`3G_HS4xRk8)$&|XY9(+!R&^pokQu8GG`*dl6X}}9J ziJ~%S>&27xvX*W6Y)QBv+=q>6P%a|t4W!Lx5|)#kUe1GZJ({E@A(TX`JsEtbXB<*F z0I@aHPN^ILF)PkK)MMxj98>X0K5UhRA7|h{kzJ+SBgeXK~p70?R2 zL=MC1%5QJgP}w%fbEUq5J&)^<{oQp;vMKEjyKHfC@6m(N4zj14AOucp4>ZvC4SzCQNY7VjQ2(3OrTSEd1JY>^w@p#8%AhjSPS5Xs`oiWX?0Bc&k}~=)WS;P; z&UI5_EjdMv-1}bsl-O||u4>+k~}#4r90BJEd^uDeW}-7ms$nzDXlqm9+$a1pc2`wPn$IX`u9eDC9KUOM2#K{ZP`ux!2L@X=uQDq?60i?%F`Sl4lM0&ryj3p zcg-gVe=dv-X?vh8lp#KYLm?~#Jw`^gS}S6lWy=f&J2rj7{yw{ zU=mfagx)k~eEIREHJUok3@`&U%9OIG(E#ZR2h7pD4W28_-ujpq*amgQFzCYGrs<5K3)vKOt~>_)fl2R+C}U z@o~>@lBq#Z8XS`GK>)dn2EO(38h1Y)2fBl?Qa~TV*$9$bVSjxefiBK!>=Q@0$H5)X zZwbR^+dg}nA~&YGUS1?sG?P@Jh2<{rsp-C#b!=~g-=lw+Py3$p$KQW*-fto!S&v0! zgXrtwtO##x382t)Be8G=l?4jwa(NsgdbJ*!%$ImTHz7~%6amK3qKBTTn#(jxk*^lr;Tr}w z!cp2v%|0Eu_yIhxAwMl%3H&g;O^FDxiITv!ECa!S*~sREOFgi%1P8;Mf1>qtD`A2( z(^*n!N~WyH;B3Su^BGKu=Z}o8sUJ#J>U0DnKKTKtQKP@j?UYE$r}3HbEJDpK1*;xk zL$TEY^5?8&h6@o4`V_12ze2!$B_u`{0SWqtrbxrG3xLP#12{EybW>qxq?HX)?t}KZy!4Hb3)xVqi~7pEvK&2y`w21zOfI_iHFJ$O0okC#DYllsz^kqd)swaCGZ%+Ceb z2ez?*sugV&m#IxVed9|!x4s>iDq*yNq>?&?No>p$^#=lIgeUgSoqj5?zE^}ev~5-8 z4qE${J^(F83BCRmr&rrTa>B=-dNn+987z@2IoN&T%%JiQEEwGQ=)>QAQ+x36{y2y7-#g&$Pnq{dHgG>lXFuj`9^`l{VL ztN>4Xi!fGtpN=tSom#VcB`&(fXk{KED=X1np-yt-oKjXCQL?FVD8`(7o38b0M+WUE zvn6kR?wPkgc^_8%ATGz!>E$gKR+C6MD(z!hp;0odnXnNkv6Z%|yGJP9VijgE@bOps zqVQ#y=41Wo?_;7Iwg`Vm2UN35KIpA|sQ~!`HhvyHDoWpNFuDjKn15+TU*akj#yTeW z&OzWQlf@%2F^I6U$4budgJRqhls1pu61*BfQaLZrlR2;+s4trHDb_KNTeOHTC5T1D zSp}#d_jqA^4+}1{suOTQ?CGes9H<@CN_;VF^-tmTM#u7y#!9R_drKZ>G^m890|ER| z#^^K$T)BMlGc&N)G`$22waPPuO*QHqavvF8vAR5M(g-R8wPL#d{x~!wN+UxP;5J{q zF!mLxV+{Hz69udXVxm4YJIlw&C9cF7PWuhkbusOJ6)8fcHRxZ*z#y+43)JK*o<`NL zo%n8Wb*T9V(6gun9;t&AbQ?D=&j4)-F{s}7cr9@TFD-(Xkz@kyuaN25auqgQW>P1` zL&BEkf}ixO77{ZxN6N@_`BY6=cU(TQC^|6i*8R`4etiotBGo#278W;F`?4a;tL3Ji z+K8zkh`hfm&+Ocv7yH(ry@3J*(>8DcTRiNX)h-~QUIXg%Baf(CIy-86Ofeadl}=QNyG8zIbdidPCVy zuYCPt+;M)4ImWYc>D)+NeOO3+7 zU$ksBl(qn)al6g)jm?FFjO3`Ml7SX78at=FdhFCGFL{JIZ6$J*bXJH~gNT~{Q-fW! z5>mCn(IM)|94ZzdyhI~W$GFk2BTNRUE*i1TlXfVkFSq~}kF$wXci7E5kbT((vRJud z>3dKLJTo#v!vaWm_YMW-CY$QDj(;&tP9m&-?mqCGcEY@%KDOlq5}&B(h(}er%RWY# zP}U-6x7(fsfcKt*a~3v#y%@r(Ga5OdF2*q_JKFNiwJbL8dmo5j9A$RYsfqVGn3Zr; zEvUR;pjrW5Cp_`5(nPuMlA~Zckv}3U)U02u7m^!*ahp=ORZ7h1PAsE3?zHE9E4UX5 z5(&p`M-UB;3?6Doozb>Ob53wJ()I{?d@ z>g3d^9AS9U6OIduz5=R@baiu0;h(szB3m!Rx_&_UFc#BMi(OL_Ks$n zl2jd{>NC%hyj1gqQX`&HsMh*)766jPkT|2{rnpK0Up;h(GC}Q}R*4He0iwjsVapDb zSw-as)eRA$w~B1-CHp1AY%$^#VsUrx2v&jTt=xDX8!Bz0k;mvle`aI$xPtD&XsXXp zcsA8L@af+QglVt99`lWfWB#DSJ%@i@`A_i4H74xP`IG%f7@^%K^rLghe?k?14jMG} zn}eEQZAvvE84?v0R&F)RLvc1&S$fz{8B2XTw@jS+u5uX9Hd=y%8+*EQ=&v>!tru_- zvsk}7r)5m%ptM4i|J(?E8&ss?Ax)PyD=&6Mo;L>LlxaJ;Il8y;)2;9+%O)D&TgkU< z-YqBd)nBOO<68+wG+PbIasirL6mu6G;{Iixx$+~-#MgwW5at@%9!B}FSsM|kmSGyT zqy?T*3T1m&;qLSb4qHZZF57oUYaGJ-G1Gr>``|_-DGfkDHs2Yjzy^xQ&v>8QPW@zr z93zH!w3svAC^PA&@xL^=T4ltdcG7i+sgfj_mNjrHp3m-*X3E ziD_L6#a62rIdSI@K%#e{+0fX$#sI2(#`?6QCn7cQqT9GJYy|6K`yU?Yy$vxVbT6$; z0W?a^anAF;Pg80Z=@A&FS%8LFixf0e{3Mr^ABq#u@HCr7gRHzqq-21S%A~53N<1#C zB89Sqc?K3Lex{vs8QklCq+d-z2~qq1NI$~^F01=ffU=fbN$`s66gJLQtE}3{Drz-? z3^$dG4&DeC1|#-?%*Z`?ERC!xB#P&j%Y;B#jFlA@iT@jeEcxJaJS_NdEro#$C&rTW z3G$lF5nfTCu0ms~3w3X7$6WTFS{Rp^U-FaIA{@dB<05=X*Se!V*|;u=+Vb&K@Dzw=?$lT?b>0PIG}^AtIa0ng-#zDyf zMSZS1?9pkt=z{BpK5AS!@MOFhsUrL^QoT!pyz>F|x;yE3X9IteB?eOidJeSvdz`Rb@K=2n1k}JE zUIQe+Jrn9nIp>zCn4QH9VLf9$_+@F zJOPEil;;r=do1haJ*24rek=Y-{A6Aj0%*zdEQe4pH$F2@0S|m-7C75>=t$hhF46jy z1H=>iHWZXx%*;@BZIIiAHXG@@L$XohzqN-SbNYpqfdZ1akPNF=&a7T!bHVt1AozVE zW^;xt91!_IYY9#+-dA5Pb5V2kl)>kBbOUE!1L9+6ONLCvto)^Nk>5z5^eoQH07AC1 zt8dL>RBj;7E2Na&CUiSavR-mIm(l;~acm@$oLhXVi3JLy9^GM6yX-!78V0|LHFKTK z%4Ih^BulKjJ;y_H5`hQY=6W~0Px#_fCmRC$7(Z=KZ-2eATGnE0tv?N21o9LS$FsY2 z7E{AR&PIoLBzS|@WgC?<00mZJ0(N@6{bHq^$IevO##P?aE(UP)M;uF>n&^1}`i3w} z=iv?mR}90;us3t|?J|UhQJgnbTKTnN2bx?jV7rla^#UZ_|6&*l@qig_=qd`HBz4)9 z0n`@LCdz(;;6>SYlxl+yL>(`(ea&f|^3{dA z0$K{|TM8fML40-(OEVyy5kUG?4Jj4!Cv3SfHfTK0o7#w0(am@ML=JC2Tnv<2$CX5S zkyl75+q>EK_a}q6eE%g+^u3EY^`)@7CwL#JhwxMnw6x!Nx@R+d0pPXH|G+)7w1`bx8*bgi44a8vr}Tk5F{x|sB0);Y ztZ1-;=$B9UR^kt3(j_zse{b|ykBkUdzWuEFSaHBBeSmtr?=o|mLECr1LuR5ELa#DN zDTw^dYkz~SbAb}*InTy8JkWbmm42S6KQj9QI`b(QDS`{J(&;yb`wKR5SMjiZ1WZkY zSFpkJfJ=13fiY3Zk$st&>n3YvsFzu0d(~sy>ZcPMEu34XLCtVqjC7{Vjwc1^BwE^2 zO7G7ETb_zWmGhd|bWO#0Th$GCU>ky4RdQ#SXTyTAbNDO&64zU?tLx(PoO{zDL}e|PoR%g(pd zWSv@4+bZ}nCqupdOG+-?;nf`A8C5nVO@8D@yFoqXYTTE2#G;UKh-_bQo>vSMX=cpT zC6!pxXS-N>+8udUsWnBO^)qr-cZBxq?@>hB2779N@MIHv7@tz*A>UFfA+5qdi^Lg| z>f~OJAbcgmOq(MC9oMW0`H#($+{dSUitQMC@fvK2GbdQ{r})R3f4k@X_B4);yjt(BHN#H zQA@FfOfYjMAt66D50Qs)yig$XEZS9zIHI9>wCquQSK z(brOUnq27Rug~L2aQTK5#xhl|5{z~R%iP*;q~tWm)jZ0*6F!`c7dxx!sy*5?B6qFqkh8fcNQk-=&oy^bJvfvio41 z)}#`5-wfo&>fstQv<&`w(1yd6h*_;s-g_pOHgu?j5v4_f)Hf1?tqAKLmOiI5R)sNz z*qzT9#%|#nq_U+WGiDTs0bfOyXek1d1~e#W{ZOj40_(RdLrV{x!7Td4RDBb?18395Zmx~{j`j#%b)q{L9eHeT!2l(ksFpoI%zK_>>a^qj8CfJ z$f(0JSc;ql>xk4$Uzq|usk-rBfn|-9_mSKZa0B@Rg#D;MX0cQU{icQujhA;W+eCK7&=?Z zLh`|_a6Qbr!x&gq24FYb4VfE(F`Bg43r!>2uFKfY+KuFE2;N*36ya8AhJMKB1Jh=M zxLslQ!e`zAZEOudBWpr5Z3Yj5j$9pz?!ke6o|a>qOru83K1N_a6}b}kRjJkS%2nZ! zFygY1RP?2U63!lwvv$*R40jI)x53-wg&DF1ocBRiEn&6Cea9`E;MBpJelyQ~BOiU+vlLS$?Bjm*M%iI1K2ctSxzx9_QD zR>0HEAUtg1_r}gk>1^%eT(B>*b)@zht8Lf4t4`jIfhx(-PP%7hlu7;s~8op#&seF1kp=2{}npLiRmP?Y5#mybw zVHgkW6XCD5e6qs!&;{6}s^Y9q47IenExiCyl>ht5$<5d2)AzB#(GUsf>4sSq(QMVB zt#8JWZ^I|jgG6%7!L5Xx(#fg3#r1sk%sDSp8NwZ4LUCharF*v02(LiW51k+8s`UP@ zqTfLIH0Hb5ccLrA`9!EElv)a6Q}QE^3;g#Acu*pd6Un=1?KM?UEj^hCwDmdK$Sd{F zx4XeI$n(vz9Ss)!&Ki$k>34y$Y~c;d&AFRs4Yr#dLsCPFSUfi7`V!>9SsWnLx-Z><;Zq;vzvS~6iBYqI2SNOt@Of}uJw@GHN#GYKo{FRHs>^V* zImRoUwnrGA67N6?+>X=|-I4~tVr4T-sicv+pq=pf&y|&Sge*oLd^0`c#XP&~>x$&Ij_*iU}c{W<_$#6l@ z<<--d*nv%`yAjRp`6GruHzB7jfVmjdww(f6fz>>JC(Z`R@#ZBZMdI15T7#{3jbYg- zB$TAGrA=YOchG-0S}l~WXo0GSlIL+SuDEXizy|4mmY8$)W}r>T(;HX*f4&WfqylC( zmh^OR)B?X+E$Py+HgakINVuY;BCWc2XpJHSlstiO8(wkx5PA}zrbyk(xd)2rJ2U~J z^E@EO;y!x*`gs__t`S)OO4b55&_x_0@Gpd>${X9+@8y8Dvo!1#XTtt9<0Z`(shMU| zPI#MRRt={vnx-y5`724;NAItX+Yfo89c{oJ+b`!}Qi`yg+}TjCepysYKwniqYa4E8 z_=!qc9hVSY_mKdacu=81)+0^ zCB5rXdAz=;hjq?c%3S{H=E1v11iBjZd4W@Sp}5F9p_LtD*iZ@5vl;~TkDK4=iHiDJ;pWv za>2I;uJG9vkJVrBzUW1<*)6xl9>1{V=HOo-g^raHbvi~@mKVESFS^kbMR{*meK+qfno8p5gk#e!lOt;qU&Gp zY~VWx=tO}E1gbtz5Q;7k`+h>7dMJ%F`WeUy6_~DjofjlGb>N&O9Z&7A#9Ahe*654z zXA>}IRP^tmCF_E}YB5fL zssBUg78i|5D0yln>UoyBDl8pf2#422FUH~JFqM>KuSBtHf)?R5;!R*HR0nN-&h;#v zplV+K^w`sTnJtnB;D=u@^@KQ;Ib}F#yLp;*{`LvcE5oYW9->p#S9V|M-fN&~6k@QK z?%BkIS8lfkZ^b}yM!nir0>HIPYFl;8?C93m9 zWf*+-Q{;vol<6})XgGs6ToCvf#s7@%GyMerG}>)aX50YHv1$PlM8X)7hT75%>VL+u z$Yuwc+l2yxX8_4t&U`&})WU>&OZoI>wP;f3r6a(a`xrvusMW%)LW;F+s&UD}I8;CL z+}o&(DXxK&bDMso!d1;>M?d34f(C;*nF`d=bZFnsp*}tH6^1wz8Gz#lY{U`Fx)=TQ z+abEw9HbUZj&XI|5o!aS;h?fN%nR`06*BB$Q>nrqBv54jv4oIDh&*(G1Uu#$;6P_c zlWKjIV?p1-n|KF!*>Nc!}GDO^x1u<{9F_|4pzd)w+i{rl9c0( zYEZo@HN*C{GKCa!O~wGWCUG#9r7G+8E9;si*DeimzZ6(QuFh6gdCevSRW!{l)fk6n zQ?#a+XhH7t0G~^8FHe+6h^KmN1dfD;YiBj^EpKw=R##%4%VYdD{>yuNK5B{}nYM6L zlv`0j4gFGz?z#ax^+P2juG0{(!2(d({iOAR^2JNSTkp5XV$PQ@lYha*pB>MV%75IPt7FY?$vD;Mz`4HsaTh_0l7Q%{LV58)%s zpipnhP$U+)?g|@OgHvs3o}P zYT1AfGe;`8Q?ebU(VS4ZHEc0b3*V?tEjMzV<4P$0 zBKepNn^%D^>=z1~?_-O3>!lvFbVPH6l!Gq>)#0DKJ9J68TzEj0d#?fr+F0JcEdM+{ zHb47Eo!^xhSZ;NGYC{--j2S{}*bhnz`vO3tr0q08H^mk3bwIOm4S?}j;zjAZF=Mbi ztbx5n2JCCe=JhjE%=NFyUShnw*@ATQ&FS`m;jnQABFvaewFb;vpq`EbRXwB&1|L(* zHER8(-+f#I^N#wt+4TP`>+JPFe)q6>t}0})Xz_uNyUH0HsXuwbME=;j%mH|oEwW|V zjl$q{)nNAVrbIBU&onIih7XgRcGKEQmg9^vq@SuHGJ2B4l>S$nN&Q!w(Pj5fPVaU& z{`-kCsZm{Jf`GS-o5#oo{e-?h?&B%(SZ<^11z|lx#0eo(S!XazjP}rH8HM1nOD`E_ zxcc6<2*T&yow^8WR{`GPOkA+3n&G?S_`68@EtUZYj4|$36P`cm`Zlw*7QQtO_?12g zDCuoh5Y-*RI;B=lmybMLZs1IW?1UYBp2597#F9^?(|1)l$QkJ3Y_vEwY2cTq<^Ymr zdbO|;Co!Rj`V|Kh9XnX6y05VIZn7OOX3l=*wMVJ)VBRYtrgtQjrdFs-cX-0JVD zjVsSWg6Wk1pG7+*_^(B~MT_V8uSMhkKZ|z1>l(-(0gj@{W505yEP_-4(}ZUsxB#R* zayQW?mm#oe7uct{?MOI-{64bh3hseRPTRI!O~M?_gnP66iVU=*JDU#h+8+UrCv8i$ zyP8M*_yX`VGcn;R>{+Hrap5y2NhXXByLXP~Y;8^*Tp4qoi8f9bf$FqN4Zdgona-w< z#^78tJ)7EZC+&MT2S@5#z!lUwHbhRx<)QIS9o$(W)_uMC5nNlCH9Ow}pCC-YU*Bw^ z--JL*22(v_tsBl;zMX*X{6+X4B-;v!f2} znGpQVceE((ryh7yQU!QltSLv4toq}n*2CWtGh`nE2c9&!0FNUDW4T8^E2Y=?Q1Je5 zzvg^BUewJJP_{FJZ~1SZ1qH$ZpS$N3O?sQzdgW)&KBhwhqWB;@^m@4AIB*^NGHeVG z3;Ob2$cWNHpyTW-!4vE5sFgjO`mQID3|leq;uBuM7QKt};Yz|B1K655P=2S;Nou7h z>=)Mb`=IR|fW!tE?v8P~#U=>d8F@4o`{2`XDt;AY3bWlF6{h?`+O(keZipQTZO*Xf zco<_S%y2$fyNuNG319X^MDe(Nk7QXWBA??d1wENCmk69rPjso~xZG5dTTjQDubvnB z7hQzLx*8U&UMONUw9OR@#|Axg8@8n8IH*ZM#XtPt0ErPj5G#-ZjZDP-pjB4yJNwrs zjmftCt8T|6xucC8`@yv;w_Zsy1ACLu4)`o!^bUKo&T*RU1zCeFx`PZWi7Elr#U9X% z7WtI%4`B1v-(b0Wng6Eu>`QsMN29?w&_LVrav)$ZZ!NxF;O!ldRq?O47-SCd4CEGY zLEM2C0T-6-gXbF|xpjMo1jMr2IC$G60p&jEDzjmPDLGl%l7g9Rkw~}5+Be4Th$@d2 z4*rJ>7U?`bz^*xT$)b9nhoTK3X}-V#UZ5eMsy{QZ4(MeM^ov9t3vlhaHlVigrgOC3 zNiVKj5CIW|p=73Optl9+jND-|lE5D(nu7?@fKy5oQA5+L1>DnN)tV_^Uiw_#)mKxt z$&jN3z69qCds^mP3bMSKu9UOz^3LS&HfEz?i6w!3gI-7Xk`UYKCA{ekQ9!;H&b za7IZ_MEYvms+O}xRnBxXV#59v^i>XAXe6swH&#U`V`{^9~pzbt*VdC!vU4Dt8hA4 zK)ZSP_5=AQ+9A82lm*?dt1j5|U01r-*A@*VeOog|31jEy3SoAwUsawgzu@zMb2KWM z{Fv4(Jt1vFTME5Zcf;WD}o0sX$Z@f4dST=N}Go?CucPKF`}A?PXgBq2I+@IZZg!Mn0zZHguD@*0U#F*S}K zvPw9SkonDIj#CV?SWY(D)d*fKH0qKlC~K?<9Ji>yn*HLp0v#UAP&UdCaA3I4J-D66 zdk)@jh&5BSd#cc}MSwenxBM(F57-q020H%hV%Q_Zbq>+JZK((v=hzZ1a(G3C+>Jxa zAlNX0gLS2=nsO6|w&Yb@e~7}E!dcDrsfPzrmj8l7N|Zw5lXB5J24uFAuG~PXzafKl8zGuP zS^gLTLeS1Cmd2Lgy$~F)BQ> z#XQo@Namz`W;L6{a*xE}<7{NqvWQ3F$p%14yd9bf+96jjFa_dDzH|qZ`0pf$7QDyd zM9&vfug;8?liORZ0-Rg5Tg&V!)akTOkuw+yhmbNDF~l=k@TBm&@0ao!2JmS_85(@0 z@6zVqqUC8eJm?0$x@zN&a0}|ruca*tp(MpQox<&tL6V~lr?WBSh6KuBR=I%j6EEj0 zBR~;@8P**Teo@W;gWD#butbHHoq)95jPeY1pZ7ta`6|W41)LO7M@aG+2^%Z&&>cPt z9jXaBT$}^^R>?OQH$DjW*@({-@-L+^XU9-Rqp5I*lQwXupr$}mMzQ&rx`x``my_8D zBW01D=Jr8uvwEU>-8ZTYEUy7gI$s)`cPrIC86G53pv}tDFLNBRZQCB2w(PphUfQ)@ znQT3l=mfv*0HQXqPB`>VILe`DpQ{7ubPhAK^2Yw_7|E-{bjlNvCpM2{mpX>GUn0ji zFoB6H7I(F_=Z^8V{y?I}rled(jsvhHmhX%y6nzt|dt`;~h)or;k?)y$9a1d9#cD4( zuv$2ehZVhj_IPPN0nc`3P0>k+Z(5iN+CkYF%8(?`fC{*lKTuIDa_(h=`+h`~hS^@F z^ff194LQtxSRm&fn^0tP7h*vcKfxRMw_Np1#LnNML9KTTI$_TwdB4R0h_1i1Xiovd z`N}ps)A5p3IN)+kJWKQq^c{64&s4Dr@A3|}J-O7hiyl(;chKAv;fP)ePVz|et&pB= z=Fcw)fNNfuMK*+!vTg^DvyR0#b@(Z=j37=^o=LzinI|{H_4N1w6WQ%rJ`<))o&y3|k`0KrU ze&4Y+#Rusw)ZpJF8DO@w5j;}oia#BrNcKq3R>CN}FdKXwps92-~`(_)MwdQkCf zmlP)se6|qc(`0|yNlb~+si!^H6@ricoLjhhzwV~M&XTqYSOwK9d~Q(=Omz}pxJop*q5ohu_R((Q=TM7&%*^m{GW;V`-DuPE6N zfL{pu_q&I?^WaIv|+A?LJTDhMPO>W)t_Z43)jYrAT5e+bM`Es`3|> znF%Gvyd&G4u*acm_~#rn7N{}uKa$Z00OhtNSL~+caw|%7;Efw)Vc?1ETW~q5>t1@@ z4f81OllZ)2-zL?0ZoKBB)3YI6YE{k6nuAa11VFEjl5C&hFu{e18|yQ-g~jd?sX z>*heSuKO(q{@^%u+WWD;W)xG?se1Iw^>F;oJJnNl=1DE(TCFNwHx!nUy9Q1Mqd06G z^xtw6kEHz>lTW-p#X;VFfj2$&lYZhp$;Me$3trLJndAXnP%AxPC>-(2u9Og~2&7^Q z)Z?Q{pe4-VPJS8mRU0bp`KX(l^G$)&!|7ZbffVssA33A`Th~mJ=O%|LX4kXxL^dAv z?9*v7N?cS%N(N(|sR28dn1MD%`DmPI8&1nq3EgIjUQD(k7xN;t7rDd$ zjXcTn|Dyn)5&=#nOVTBs`(=H8Z^*nrRSE84nd3v>R{+CYu$%jfJnLJ{0Q6iRg}#A` z8;a4qbKcrmQw9ivB`U~+>n|n{@LUcl@MS0)`DIJVU*qCG^>|%JTNfu{n7W3ju;sJZ z$iIYN#Y7WD<%I}^lSFAB)ikPf!XEpE#IhU`BGh^S^M0O-G6OXOxLnNAgY?~8lS-63 zm8(E3y8eHZO?8R41Nz2r*+Co?_Sp@{m^pGjh;mXAecO!LOS^W}so_xjp7*Rh^jBhq zVIa*^w#rsgdgaA#rKqs9?ig6CL=Rr%z~I=nWUpjdphRbxjy6@_JYx_7_l?MWtI$UJ z%0V#!L7`4?U|?(t)t46ZGg|4+k}t>H6bZlFvpY?l^FbLR-Vk60iY8f%Pkg6@wYNO6 zc%i8`55pzx2s@-WcnKHi`kUljGMfX8kj4P5~qkm0U2a+B0luM5oWA@4iYB6(vEdJU6QeGDl`{ANMM(ozOd zu)TC;a=wukZq^JN0{67sPH^G%%D5D2jEd4~#HW7y)`Ly-{O z<8z3?{0~7mSBD+B+G@X&|j2rSeJc-k9)Q07a@QzSGLnP zR*plJhmt%%bt`DV#tP#6~BUAI3QFX@PCn7TIig!6DWz^aB7)4xZ)4G$)1{S}NB&<0P7oI@!4)wd~Cb9{|)XPaaxq zj!(0ispNeA(o-~wk+tB0`U?}h(`Gc8NH2rrTtKL6+@jhwgvbwLN8x>=5o!JH5G26c3wz6?lqT%$JnHHC3neuSjp z99a*3Ej8^S+L<##JT|$(HBqyaAQgg{T5}e=+{u!=xb++X@V3k|_em@ZKc3gr42*f0 z*6ALspoDfj^+~bDiFmsh;t6ZTd68%CUD!olujaX5=@Q?oha2QgG3r8-Dbw?#R}f5Z z`3+5>vw5(?Py)b9;ReMU)RZ?ECzxXfy2T)IgBxcG^N4Z1cew54bkOfXBdL#dU8{7@ zk?o)gkTR5w#(fXni#k&rnPw-pE<*+#53XP=4@`UON&(J)Lp6QRMMmSM8sJbNOD*@O2ud zL5g7B##04eZx^4@#^rV(@85xX0H`CAl;3qLVBFy3`ZB=+AS{UCB7=1574%~?1`>xjl zww4Vq3=IJuL}gSX48bYYUSMgofp;~mk3B^3)FyL*HzG;T#14n;ctn4Hqw|7yb+FZh zwsZo>RK1B!9l?}91KS+0#|ZDYCq@h8Zcr>qQvkhENz_@6$OcuFZBez)2TD!&51?2! zDmNB{cB1%P#9aGAo$R(I$T}!h5`+2h^R`c_l}OdGib;?`T1fGMT|zM7paa~xBM4U# z7;#C6i;&n|CpySJ46050ArJyIu}c#F4#x;Si0o;9-jk>Ft&^ndqz-udAS|%uR}*tC zCIKgJx0{G>v-iK==pM%e`B?-hpgZP4pg}Ap^Frlsn79JN;E(Ev?=@@S164D)lb8x6 zO-NuYg-2M}jL4SG3{Dwd3pFz}`C^`hfhp1AiKo{KPL(owjk#uErso1Q&mLe|D;9i;_p_(IMRxjII_8zdDJ=8!#b#3LYK**$nO4PIX(3aOpe{UNkSO zBC~pAV#4!EEZww%R3e4m7E!}3I*$yuFLhy-&wL_?69dh7I2PTOBrfPV4MOVIGXw1I ztb4}?lWSs3i(;zxsk8>#Z0sSo2AkLG_+Dn0uvRTaTao87Cj2-v^KrR>>m55O?hcYEsvq6dimPGD-JR+RE7MWaj^V z&e%#NcB9Oji@p>A#3*WZv9U%MvslG+Bzeao-ksChi5bc_WT}gN(!Hk1kxuW4^^lxG%=lHJRd?~%(h8w_|WwkaX zma^eZFB36fl&=400a!|g^bLNUKJu2Ydya_2NM78NImzH)$v)I&{^t+y@m$9+O9KESDrfeh=(dV-?G}V5~d|rIh$}-9nkox zD2Ln)l4(+C6n=5(a7-j&0jX$F`G>osP{fw$=G!+qSKaZ6_Vuw%y6j z-h(x3ubHFy0d-O*wd$?AuBXxPUex}CR{|og>@5TNKp_=|LGIRtbpP`+DH% z;-)XE@%rfCne6nL=lZ9?a&P&-_F%40%_$AdmtpVjeqISRoRvzQQS<&w%|WH>#`QKq z2`d|yiEK^fwV5-PxfuR$6nd&!AYk%RD!GUB>w%&{Gs z{(vy)`g(Rdg&_xVaaV+Bk_woWla$=CpD}+BJ%s<(>hAfsJ!cT7CtmM@C~jnC}S6=Q~lV0ih#5o(K0C;kbl5LlV9^p@KBp%2*vDLb(q|09 zv&Z1QZMY(P$5kdhm=p=-0__-OV3SAayl$<0H0wv^rDtMLCTS;djY^f@Q8rHEMU(|)J(W# z9<$QMTMhDc$gjE-hSV8wkwPA?UT_)9;q+xRa=S;IU}X|7M%M!k_M_$=OKcjF(TGqr zJ=t$eB(&ghRD}G!dzx|GMq40sLf@yWnzOF2HDzpZ8Fva$Eg^IBA|Wjn((4uf8Z8oj=?cXH{x;b6lF; z*Z@rbPO3gnWaa>hnx4dw+JhYk>lU0}3F@%q65Lnm@Q-1%F3SOnIs-=1q z)pv;I|iM0;@_2VrGjv&ZQTs45g@nSm_-2a3rTLY7!iT> zxX;I$3c$&Z-l{U)eX>M}x$QM_+5J-#e)*SI%I=OVxDv1^yRtsmL>`4ffREgC=~CUg z)mrWKTEb|P{P$WXy&SRf0i%0JOuL&^f0>s`S;42cpx^FO$lLz&usNOr=1cdD?uK2U za!w~eoS+jZLj*LCZrJ!PjmKK>0(w)gYqc;@ z>c6X_K*{%GPEzOJVMf}$7+7R&Zp}+J@Hs57^`yW<#sU!}ty)vmei9lco%X)QMY;ZP zxel00+I!4Rbu|f3T9kVVe@&bVxrrsDNXO3n9%TtsG%;du`r{o-vDhYNOiLU&kWHsR z3Y#4OH>u$GEUJpT(Rs$ty8|=JwpDx%LHc56ZGc%@RQJL!zqjG&zty_0xBBYRZXpW9 z2^&CVg6UB~`fly`H7X8{!j(y`DLvZjVh^MzHU4u*&7mc?H~?X#E#I${zoptn5^Mrd z6z7~Nru03OB}v*eu41P=qKRuwMP4_)Nu&o-1<{-M^|~!ofbhdo$yzSVuEf|lLdH#6 z>R4I${R4e};~7uxO!QD%Lxg40$m^MdYf+$(x#x1y#0pmxyI2#FdPf!ik7OfKqS`}E zo~?8@r9Gj5==vlo)dbBbu^QOqep*jLHsDG-tyvj~_LE)gQb)TaSsUVC*P-{>!lUqp z(10g3zNX3IiXE>V?=&o&p;N}x*VWB`x2=t$1(0TPJ!yBTx>dvao$elJg*|otAyh!Y zW88x07$%_|`gU!sRcphQR7QaBsHx;B?O{no&bT{SEv)-^3ziVPE-miJp-y-U+Ps2I zwlNX6fuR85KwAzLtw*8vZM7lrb&N|-|00#5$hlK;yPfdj<81xvEa&&SwyZX3f=Tz6 zT|EZwf+$7)!71O(CzHAg(v8)e%o&Zj`oe=(X+Vj#_9Zc4t-H7Nl`QF4Obq>x&2`89 zU&0r!`71H}eFGa!sa3qtbii^mud8}B{W^eFD zGY~Q_rwi;&>@MuzNhrVH<~afu?5)cp{C^ku{R@gmd+)mH1rv*Xa}DL-o{i5*?Aco^ zXa$P?nM-x$f)GpsIREYu6%_8Yi876HC;~#=sT2q{6^S+VQP4!X_|x`fV5gxKPUM4$ zBQQzA*$lW95^y`PWf~=XCONfBqelS<4Ftt#C%rzQ3z zqmT6Kr&;Ogd|Q%vVTFTa8f~e9W$E10R7c;z{PrSv#cJgYSuck-X6Mma@4 zx^sWTqiN%P=U9ve@j5*J)K32I+aPy>!56;84;bQmdqB`1NQf~ZpisrEHdQT{$nr9& zI5yz2C=P4-7k~D?Y^V{*hBJJd3`xrxiTjaoX=_>0J;-b2GO2@TzOKfv*G(@}x~E@9 zOM~eIn>^*xuc5T|F0PZ?(ku}PFAK)s0Z0PFi0dj{JWTM(%x1#cKB#pa1pb+`DmZF8 zRD7tQ=k~R3#+N-9hX2`2(3)-?f2?=JUc6s!m;jz-8e?)$C^@vql~7i5uWRHU)kR}M z&kWvTySfQXo#yx$%yzfySU;ui>807za7lU4L2O1x#tDBUJSEHSXm7B1L7Qt~U|8cq zGO79Lt+S!1w(GOBQw8&FkYAKTR%0qeC7=#|PncwzOV>CbjL417f?XtH4N=1`Q^GIx zxa0)hJPuHHv-BDhk|=i{dk+4#-?ca0jCXV(R!&Oj#@E^tk>Xt9jw>*?=JEj#dSv!I zTJdPS8;bh=_o~`gBBgg+QMuma6wT0j*FJD%inSKiO^)}|I(fDu1QaupW?e$?$;C;FVN;oqxK@LnWYN3b*&$8B)L;ktieQ9xpMaXqEIg z=}97rOLpb=WAV0c$sQ_x0d!DLF^hdfYO-F@Oa5sE`=1HNRvgu-O^er0UkUWnpKzgB zcwe}-b-px5rMgzE^S~#$x$-ED+VnXUCt*#ht!q5usnlI#Wj7S=;#_A=AB_)$rOM&v zW*b2PhtL(1`V#e0cGIhXW3|BwsV>kB1!gtuyxzk~;;qi#F%k_UFRHHzrOlauK0N(U zkoj4~iBzH58(8MG(CbbYbd%HI*prrx!Dr^dj@UJge0$GbO;`{gh!>0^P2%`e3nAzL zFwx|e3n6HDbl?a8$BPS2qYzNHMuMc!1$jj3;RVkg6gmZ;HxTqm6$73U2iPqZNl1Z~ zHL-^@_NzNk5e_@!{%5#ysvtjd`BH)}2X!=iiZI!icioz}HS0_;UIOkQYWo8!?u~_{ zryYyAXzs5U+ps)jVtncyo6Draa#K5T_0^yCjw_e7C#<@6cd~&~jNfB*1|W|xJ5_#0 zc*BU2sYxo(P7q)d4OOWKs?a9D`BMWqriM$r6xU7H+H50l3vjFsvyrYHr||+bXepB$ z&?DF|=_2P1r_%ZQ9U$k2J;;~yjXm$~kXcAiBV@)In7lR#D7)r7^+_MOTX^E3DZcGa z@k+0|54ez>Fw2gQ^b`=_6G^V3T@?jnF$)+GGts^nC^anD5et8Y=&1%OpHRyS^MhK6 zs|25dnAzg&fqjoGi+u9y8geb9p=nOCM-5OJnxQko(ibF@I_s5~so(#%48dC|? zSISW910n%1^h*+a3%@zKXS!tqsL=_;9)w{Vsgc-dgd!ydbr<8|(9FMn&W#6I z@94Xs5qho1MxXh@u*E>IpoKrs^R2h0Vpj#e zhb%DGcVsxKI^syk#HxYWXmzqe{o^Y<{)O;`IxFlmCF>Hqb(I?HuMx@sa^s0Mm_~FdYLSzrA zo#6Gno`<=aIi;C5>0#Qy>sSllNp_MU?fhXOFSOZXdOvLHB_?sYO2WA!YkRbVFdN;w zTv<^Yfl^(k3$2-w{hXFYDbpOiehL5Z$ILnrRPatKE5$Y0E|^ac59)|TYIVdTE!>dF ztHvUM@jG(s!*z3G5>dCb0f@nVj3<>DA%ZK^RqvQ~_E+kl&u)og#!#u;#`3 zbI7w9=7y93DlBnQh166a?DoPA!ZNn|wzSH?Y}<6azwuPmvQZo`*bM_rmQK=x}pdt#Qk`jno<;K)L;w)X=ZuhGyoG{H*G<9R^!0G)cYj&7ASP3 zyT3$U*-1!U59{T8vo*^>&a5}c*wD{n`{97u!9#@(4TYoiV!A7Y-)R^Jj8Qt1iN~{M7`kPUY)XJ+CL#q=ViSSeq<*uG%tr@;a79!fO7BN`xxYKA zNeE#g8I*l!80&qv1Mc*t3zge5o98d!u8nz}6o%_#9PHdeIu_}?8VufzXWPTxdneAL zok-QJn`t)D2J`ees3jE*xELgv5eOlO=`M>RT0cI*H)J*o%bIL_@~m6Ce4d`e1%=op zM3^~1QYXLd2tDxGwBB;T!d{rxrz`0_cdhBW9U9Xm=yIWblsE4>RnKwxSiJ@G*m&$% zsRt00v8y@ESuu^0T*i33+d(gDM=`w5{c0SJmTC1@+Jp;Kvs-Gh9=G+W4GRerM}j;3g_6qd?I@9?wC zC2*y8d*Oy7Rqe>tBE`;g!gs*QIxxZ?dbMnBUMZ)DZ-n!R^ui;bE1b}qzUC{go1eXz zR)7EEy7O-432_AG2(as|L(9%*u24lSKZg*utP?(2&!QT3@JVb%k?Yqs?|}rBRrURS zl6HNaR&vVbijZO)Gj^Q&HMbo?l!sSQOFCXpqwet&fSZnOHrpbzE? zXX7@{pCXqhIU?&GpZf^{ZZaO29Gbd+4AG6y%f6r8 z@*CIME=4so(9R=X;B4AZErJ@EnU&X*6cMrJgkGC7e^PGr5 zj?hPzqm}!FblrDa|J}}BxR%tMDs-5jNPP}A>ERcpbBNU@rT~GhcJ8x~g#8!K!&oi^ z?MH??E>phS>D=n({BBf%CbzL%=_NWNqzben7)ZBVoiNkqhWo-i46Jm2*$&gS^!VLs z5!GKqdjvJqp1sxxo_+NWj)Olp9E>2#y25Ac;3PERJU|nujHql>&HLXHPlsoUT$Hx5 zR%R$PgX(0Pc2iP9%#I7bXY2Zp0|r;FgEXdXT!$HHpbqSfy1X*`m6Y%UzI-g&b@;9U{a2 z8sn@(@M_F~nBW>TI$TXQB*&E!{oxp?F#*YVJdm*th4}r=eUui28w6B(fhKj*UjUNk z&E5?XgXtfP^X)INL9jwr5a-hVQY9oW_`H7Lnh}yhgn!s1Iur$H@t&v~(V#xh6JF}q z`LcXcw?#crYRvlD`U37(dmH$c}hhBNt=vdst7(zTXkF zpTisN$C?!o_badds}jI%pcia_@6LXuSqDY?BfGAI!Rporzb@d=5EsUx3s6k9S^x-B zZ8$po&CQO0glHssmyxukn&k1lMwLX|;=utY7%}VAzY6#7aUJW#_l=|83Ce$AxpddQ zZ_rek=9}Xf3NudI*bRafTY0J_i4jgJ-Qvzq;A#R^h*i9w%Xh}0krfv|htp`mJ(-pW zmD<^)iTBy8k2|1C^iT^ehqW#yT`_+CcMfrkamk{he5?E3Gh}^qem^}E&g+Qm(g%qCd zv{(kTC|EAHi)X0#kwAM)ou#;*xBRsrTaS|8G>T!hPNUM2sA_EXKSBu)ZNlz)mObc{!2FN zxXHlxILzE)rAKjb^LP7seuV1?qz@le(0~j`zN?=z)Zh7fb9SktjqKd&9m#hsXe2{( zPK(ozIsPm|X&i@C^z$f$yPphYgppluxHXaF`bioEu@0cncZ)UztCp|H>o0KiGT^^@ zUGRIA*llWe@Lq2Hjw)MZ*^O^WxKdN01KfKhJ&%g#Dzj!eJ7XYclk2^C{rT-@2k{Hg zHRSY4yO`{-;*ZR+@~ecY9?71ucdI16q$8}L2C@$60_6t8X#vkLK7Fb|u8khe6ez(_bjxc9^(ms=lBEFiV z{>1Qhx5bi#h@w8i*?`&t1{;ZEh*OXO!%hNTm)iTw$o3>$`^0>mG6PAPjm?lH@XpeM zzdJ+Q8N7^akr}p45)iXp*WdGQ!%q&(w+z6w`T0&fR&hh>c@lWK(J3z2;btL3f_YcM zIxpzNa-OHRm{t6hf2S_|mr?(6Qg|K-JJ^VxY@IjG73EsMtslJH4A%y(W{Dqw;1kbu zSnbHpMivMy|FQyGiY$(MmfUH)%qDUg>TgtSk7qUU*Qn(*y2!;$jV+Ht4Q>t~XEA zDPg`zdg%%w%Bs9(5dgxW>SQc1sM%3P68+Gv_sSJW*!%eZYYiz^|? z5y2KTMU-yTO#1c>1xmLd1cUa%?2>XwwlqOHZH#JzZA%A@O(yMc4FnXdL`bWoWVW?`1Agfgi+BmHsZ4og%TopL8uLI-NiJ z=YxW;9LBDZM*P`z?9_)f_G<&bcZn-BeD`ae#gsaylD-4oZJf0#Dj5?pS@9V#bQmbp zQuL2zvjAL;EUpLX%pwypACn((2Qw;Z=jm1IWi@zR&2Mh%(i#=bTrkOeO!|j}rL?*w z2*#Oyfulbt`7k)JMR@yx1)Yi_S{@B`NJXsl&JnTGkY$IM#Lvi~8)_5W{y#dOod%p| z^+!Nw8Q$bh6O!1HhXk0e@CNtVeWU>>`d-&0{NtfLqw zz9-4|cgTfJH^zAjx7R;NpC}#S96k)hbS4bsNi+ply*0_Kl^rY)p=)Th@}}Us$Ovz% zBX&j=+gOnhMUzu7CN@qaq3gu2)og(w4e*a-w~v$25d3TFG9TR;Q-tq_Q!Gd=pJiH< zc$sVu0?7zotfUM~mEy|FYuIb`+t_y)!jcY%7U16R3O?Ln2*jhFNykPQKy&!kioYib zyCq3q`ovtxng?sqi7xgWMb!Bt#kenVexrkfPw>X`p@V^q%}1uQW4g<7or|hPR3_rFdn~(%$>_(L+IoTLYilU z_N?f8lfyIHk|frGs*Le{+T|iv&gbAZyva((+Al`xck9Hhs=FvgKmokcLEO?q6jw45?sQx zfY#v1Nw>=_)y0DHJL?`>Rnoe;AyV{6c6%n?ux&|Z{8@z?t$~pG3IY;d)xF=~zGL$U zs9FaG+<9AC$kGlZ!g9)?RiXd=75{FV-wejvYXeG#FvT^as zoWqlz`ZAW75}{+p@b6QU51l5`M?W!l|FT*iT&kK6%W)RaSc7B;i4Tm1xwHVv)GQ9;b!dx6p`rmFIh%L-P<@NA%+Z2EEVddwMJ5Y|)- zLU%-HKva@{sUUExZ?6)}XO{-JODo@P6TGn=v_tMk_O8fgQ+3m-a5+|Y{&wWS{3y2! zhQw0W{?nN|dqrjY`q3L*!1+Q8efttZWgb^C^o6R;Bu39LF=zYU*8T#4(B27S>23>L z=aw--2v-OS-3{7!EQ4CdhLu^Z-_;N&0yjp&iq^v0S&Ns{ zqQx*e5J%=1;N_W%voT@)adSm^y6xDsLrZb*oz!!DhFUBUhu-&N2s^(VZ{pY*ddY#wLxEDA0Rq3#h{eCL>`YKT{-DyCt5NmPM6T^Xiih3J6%%R>b!IN; zF1)elSk!v)=UXZ$Z=VTVK(qDH%)vuHaarHO<4tF$biC^BjP?G%Sgv8@2b)tK;fC!~ zoNYYfIht zBBByaFZi^NignlQSYTT{{qk=v0wf0PhtR%xrzc{hIMMOk(rYn~ zicwEw*(t1Wb!NkP1ac5%fLt`CSAY}#*xJs^^+H+U;_vB5xQmEvNixv`PV2ay?o>m5 zZJ9v5kjp&aCM)kzoLMK!*JqaJ<4J_XqXoc8KqpcYG`0oRu|(GGN0>dXM*2h&k23yd z-QJ59NKLhw584H%ndo+}}XBd(yfzM#6UoVg^~SO=dPntveS_B;uj;ENduQsKhFK z2E7+NlTLz3!FO7v8_HjwOEm8+e*g?`e<$nkwlbZmZsF-ZZePylC+n#G>86)`o*n;h zKcMk(JrTRhtH z5NgB`Oc>2^$&1LIgu6k*X-h4E>70d(_(F}bsOG8}(ofz)~GA-hKOtKvtaFXD38433x*lUl$Hls+%cX_Nn-*j)} zT!@L;SghGAp8G(%cx@nqCeg>tFNl@6gq&^_;(FOsrn#)Mt!(2syhMZG(AQN_ifvO# zHiEssb&{r|Ty1Qs*R@k(`=L&3xMkGhWi<~&ERfgU4VNG}cMdzUa338ITS{oXYe#f- zDo%P%doKeMnYz}4cw*OD7Yq|%Z7c2Tj?U4}tZgf4B)V9ALf?XVbraphIv228gux5_ z{Lsd2dlX)7Q?67W=SMJU=&x?+)sK)IT_!k0RDoAe7YB42nGjrFJ&l7KhNkHl_?dIQ z$!zV-H*P0EhC6?=0^c-$V{QuN+M2t;z2s_v=^T`?^2DqvK)*u;#R5%)Zq%E!c$U*A zRxt$0uH~S2ULTGU`6E)Q-#>tfA(hy86u3mxC6-9j5`5Iu zb`1qTFaFWab3Gg-&*7-pEa?1{uVOH^nHQyKr3eX<=uX8BB0gn6Pyv|t!4;Fv4rj3n z(+`$M(33#sVsC}ih+-&(nI^7unDmLS!o8mV+==A}rpt*YBIXFJOwg{5dJE|47w2qq zF{bj$e((S{Iax1vSl6atfYZ5FX0vgzs)KAa^@fL^wW1jnkEIczLG35(T&TA>i ze^Cj;_OiIEap`l61QI7m%IMVom`WM${*tM>9aO)6#;2VqH5Ywn%PGB}kqF7Gvnd^^ zSw_njPXXeCoBRJ%$PzoWsg^Doo`8$1b!*Fr3gi=EDa;_Dil{Si?5zG(IY;wGCrt?|RGL{KI7AXb-4DuF?gSD|u#sS(O$fNm z<91>P+l+LaZSk8&XakC6v4Xb`6A@_n22*SCGA;&VA#%7qqEzm}XRDl4O3%)6?eK#q zi%U(E2b;E5d2;Y~lXR4;7!yKV&T4Z4^xx8n9dS;jCpVVAvm2Yq#NJE>%Y_acuab)p z3Okw&4}AfAy1(ivvzMz?4>&NpDRY26$)wTKZArw(J0O*mlr7kn5IYa>f7Kp3#(-R} z*KO;`T}{iM(xR0zndQ#@mnbIU`_V5RZ?wDkrM$xydJ4XDPDu6*ZE%DKVBowUljQMuxJ@QRWe2^7Ai#=y%$jN3bemYrfHjn8jv7 znu!yYYUaXpB8dc7d|B2M9gxPT8rHU<9CAYN*OTJv)U8%1&YcG;e~1 z$+JY&Mu2oM+{@|Tb9tcn^#QqQsB8<|`2Ji!cbi7uiZjvl(O^Ct&VcLa-aFfC$Lx$2 zt^OhF6Qb-BdUfC;Bi)QNKr?J4(oG}Ay@W97CDzb{eu9u!^FZn#Ly4v;VVUJVw7Swb z1g-#Z{bbQq=}nQaj-sd0i7a51L+wp%VeseYgv%#f4Rm+tYpQ`#*46hbz~&}#EFT?( zw&6G6O#>Vovbq@Z4*kLM29IxHvFDsa>UI5c2R>a;35f543i*Bd>nK#tEve?0UByYc z&yTwdhf*Kw+s5AF1V`QOWDh!)%fTg@5~vjEsFT#|FDNz&CLYCY|7T!*h7*Wj!fvt} zu@-oUSmOB}n;W~HKD6MB=TOf=GA}eCFsXY+_9fUYQ~vkb6& zbW=akP5Gznw<7PU6AAXmU>Rvc^^38)IJXo>9O%*upPhVC)tUwJGg`~y3;^DX-H5Y2Fmsu(?Z zK!%$7G9RSKQT?$A5v$P)_TRjzcQ&eNFEA>H3pAIiYu%n)+yp%ycFabQ)D0BUuav*) zF`-I<4JmFZr?3tHfx5m8EgPS!c+qB<6p!B;C^ZV*HEvyA8$Plky!$GOR7WXQ zIp<*wL@ckdZGUgA;W04M!`@t^D8nfUKjo;W%HG+!b!+-0_AH?;%T$JE9H$8Vt!&tN zsb00CkH=?1SasSls}av}*D6V6x>sc$165!hVY&NTxOavxt-9=4Q^z;FmBfOT=D*$y zytwL-J;w9ho91iTymU!2*ul7^v{a5taL{Wo{3mYf6u{a6F%v}3dPzXR%Q!HrC z7m50b0#D*!n$cWE(!A@{TXDI6#r6R9pKNP}(%zGbZ40I)m+3_+xV8Fh#ia*+b#k5C z9D*54149KDBn~n{$2KoDFSu12(YCg$K3+RW^&`ge)e4rQ8;~=VVVGFI!CQgZh82v$ z{u3HPou2Om(WbGt<#&{dwpY5wmq*g?LDUo1#&0EVpDe3N7+ z>p0BLL#nu1CsBH3|Cyqzma{@lZU@*e!;dm2kE=oKTF;tJwz?5?-I$f=0XI55Vp^qX zVDg?y@$`PlvrQRDW3Uw97KLHO${m9tP0*2H#s4!M3n5qg0kaw4Id^P!@n0?>P9%xQ8G@=4g#P_<`LTf+_jiCG38t8k5X*5Z}VTAOE9$l zou%IgUuK8DenG2Fw!)0eUVfUEWLIbvSj{Lna~MMZAx}mBu?}?yFpaT=a`UzTOq~?I zXt`k%P6}zQrkM#4E4i`%a&zI=&qL1gsk#=9=_3KdT^Y+!qHO2FvcwepgIEIN*1FDx z^s?s~t#+t_C8@H|iMC9^(DG*6H=PdF_+GBUeND*40DC?RiFi^KFk6)Z1enkG z?b>fZeO992{jq%ZwqkoJBWrzDPz!z-2eM~<2hK)nc2#QxTW8q@l9uU?7B zw6iSCxv3s6H{#g191kOVSoKM zE2tCmB`3nqN;7$i(w0{E0y;O5W#{aT{sUG?@((hh9Wk%xJIdP1zve@r+0=;%Id0YL zyYgY}Jh#Fz!pB{!rDF`nUL!I3sCNLZSdWzWexZxpb%0^96@*WLbV@|*E++MnaAz@^t8bM_?5+^ z*QZS4t!^`J2DZ5>>_Uo|ez@fBCi!Zle{% zR^{!E7!sh~PNey6m2Xhll>73{YuwwTkv0>ouvD-A?h@#M9X6VIRIuEJ)Jd;hjJFwv zRNf9$tW|>51s%F);!l%V&sYz`(E?T*Yk}6~=v6Pp?6$Dz9{18p+d&LBJe|MWw2xkP zVSE2>j$Kb9rz~y{qhh%j<}7o!BC2PKHW%VHGi$-CSjNv7cjR8UDUx=$>a=q{P5&pw zUB4^g)B0V&&%sG=QQ)sA2+lq04raGQ49S6SN$UL2^2 zYcdsCty7sSB6$-jt&=lI1L4|fbz{r$w=fe!$VSN2R~OO&mS+1 zP01^ZhZX$w&{?1oo?}pg+x^|B+`p3kQGj5Z4+FD35{#w=TjGBWv zy{LqG+l7`!(hrI0UUZc_6Bh}Vx1kMd!@o^!^+%4n59 zdQZ7zGb}3wyYIyy{0jC<<9VYR%d6@dY-k-*zx`gx0JeId&cWr$4c}_}+>DL(J@vvL460 z18!5<0_+z$SDF$McOEngr^fZI!K5uP^g=M8_S&OM+0a~;3CW)$l>vrbED25hqMbELv`J@TmV%R^yneQf)**InHPQI(6#HL3M^+;cm^RJ$-6Xv5+ZF0;l)-+4#R zaC2>rysNhe8?UW1*}&nZ7XJ?9bo9N7|0g$PT{abT#Hj$Q#vf(v`ATn^-~=q=O07CV znm;O9Fg}w~v79w#k}sd;wjka+y?`?t;(|HD9bF`-$nAvJKrJcH%Xr37!C(kXe(|Gt z+iYPH`aHb+GBW^7l7U{VQ;3MNdeR~%!~P~)j)ek}tuU)n03KBHqE zg}a?owl+QAa;uC7Cj-8XUsEULj_)K#8z`Mb-HSeq6N|Rpk*xOzv4bB`bf+eOt(+4m zhc|M6zKKm;jRw|o(Ep^hLW3(rfRm&_8;ktM%idn9x+$72Ucde?BpG>zgdwxrk zv1~ufQdcN}bVO5Mf-(S{frC5LK5Rk~*kmQ$Og>`!kQUV*uMf&!6tG@NEMW_XIUOG9 z;|-FmfotW@t8*ZSJQ;W`ySoCEL#xLCX}0_GHEvk6;Muk3+t}4i9+1vIpc=@^n$Xum z&9)lp1XL}Y+r&Y1)dm#)28l&z?h4!B&U0&@O?~9P;B!4qI}iZr3p)BSNdnQk0JH{P zxU%*E1ZLnH!-X<=E|s|S^&TT$NSttR;H17k)k%zAJH@pCOEj^=W9*9DI7h|4C3DAY z@hROwVM7FuXZN|Z`Sk`yA#-3jVQ9e{%(NpDxmvfvEm^x%fD+;#X0A8V3sQcga=)9i z7HIOs*LT=wkad8RZ&CXV{$YrOGncw97pkwh06sSBRHnYV)Ewh$JycsRNf$@&&LSYVW%B5jD!VmTd{a12xls?K5s1ZP;%_(AMrv4!Cb%Zspw)wj2U2 zjy~3pq*?s4KQh~K*nc@W6_#m<4_#|DQ0IHEZvr(AwDW^;)Qm9rya@oG97X13k%z5{{D;q*a&M|*w9bWTOtC2B&qtQ;n(q^pkP(zsrp`bdY8Q1B)7Gn1)p1(Mw@tyUsJ2uxi;Di=N~)WTGgBqluj;1UX?eREZ(oK(86w@UPn9IZRtKp#Gb zl>H=AK%<-9$+BV&$WfdJigc)o7E=1pYWr4A-eB%V2aukAF+sM$gL=&02X?_!?fpvc zSiAyuB*&tx7ML}iv}2T8jc7hs_)jOHx9eYb+D!*WXXU6?Hu-k=tLS>cQ{`K`)}R+f zxZ(HA!&n&=S68gkZ>~8eNG)ee18%2?A%NC@=eSSN%nue~;WzPV&ZBdQSp=@S-DYwH zCc8)El5>wq$I*Nf4?FWH(l@bV1}>vBDZUTNl}%b?C8kE&u$Q#ia7pWvhhV}8<+G|J z&1P391Bb6P@Yq)#za?}BTYCGDKRI=R2f=0ZjsWlp{|I;Bu@E%~M`Q-4`rMV74pjq7 zSfPy|-nC;)b@reIk=_N)B{?>aPr7!=W%$O;`r0EM7^(<#)|5Ecl)g?ubL0OV01Ber z!@r%lP$7S{dxyuU23EPfjf8+>|M+aaWSQ_)uD0_#792wU?7!Nhfgy?R{Dcr? zGVK|i;#)nU<4Oaiz^0tK0af=p4kl1p5xy2!DEhr`3pR<*F14fvHYyI{kD?#YWVoq6 z)kWEjWsXRhq}#y{Z%t-&NLD2%Y=0};+&{U&So33Dkuff_^@W_PGF(MNYXJ?|e{<}M z#UUMHOVImbhFQ4yEpcBLUwq(%?(b|+y^>mE8aA@ktwQ@%Qxg#n^TkgwH6NRhDAGs!Epsx$1eg>jFx+KAn&1c<$0<{fy3i z9aih5dk?M>_z)fPd!(|hZ$YFR$#I9vvdIE+c7ZDJdhZlD zqh(bIu{9rZ$HN*4IRbXE1_BG5AQ5H7AMK%*j%AQP#2$;?TM1&xE z^rpbHD~Yh(5iEQwU^6v35w)Wv*tGxfAi+C*i&;kh6XO1JH&f`M`Fo*MDp!O81t&`d zUBM`swL>6&W!@JkhIF9UkI?-RGkwhWYg>ep$G34av1oXb>*?Ym2OL0*!P`6|28!s- zzPYDSfG{&tlwyMkZ-60ba`=YdY3}m0QVG4KhL6#b^S*(EdVjvIwD25Own zP|EMXBm*V73iU9pX3Hu>RZg#pQSs_82{FUZW<-HxDUVttOZx6it}m*tn*~2h3pej9 zXUD2VOaCLq9y;OTO-UnkS|3s7)f|9CBKsgD+W(@&J|Oc8;X?f-g$@~XHH3eUnzjNN z4I*uE%*kVs7~-6f&1}V)bNN#3T3@OTyPV^CNbTdL2(3U59hcdP9DBfDB9dE&NGEWH zIy*T-oxC&DfBvkTq0U~&?KE|U_H;?Hj=?&q49fADr+(N!phMI-zeCj7!y(#hoUf|( zAe=7_(Nj4@_hmS{J4AcB1U|o4Uh`QyMeCT$*`1=!9!}9-;|vQ`2czLQU!0&(WQD+aQ=+S)Z8Z`Rie-wQP#5$f+)M@M#?H|p@u0f|S zPSHc0qRwGXQKz|6w6Cj4_IuT~f47d&I)-y($EefPG1_nZkfr`0oG*^iLmi{;PL5GG z?-+GHE61q27jnBz9ix5SdzSs#=QP^H$7h=QQU8G6Q1|@aPY+XcY(TlxIp`jL(!`aM#E;lxIiBXDjvlJ>h9wL z?H|p>uEDP_F3{5>%?VtfZgUrC|7f0c4H|uMfj$Ic9nS^oHg|y@&7-bCr!OwhLtLQl zVJ=X&xeIjA`Ms;yzgxd&9hW(>-_vdC_Z&2ie?6~12=@=?_e7vhVsDy`Bs$m~+l4t6 zNHEII5@WW(WDzv)5(`qw!m*2hSE`2zo^t2uXdZYII;5v>_8m*4&S2?ga9uch;?IMn zC;Xe71kz|dLLm{*=AQoJzn(J8z%NFeEUY0qeFET`VKN_a4=?Y(05fD12e)Cu5Z3AR ze;9_|jl$Jv8LT#lgHvyTc?h1~0uA9|^8)BFp}&dafF)#EcxjNN<-yX}TY(rLEcp}= zqB>4L7*T?xZ*L9EY;$0Gv?Ui2Kl2JC7i7vE#Y`m$ztYSGTN*%e-HrI zT+METqc{VO|jEeN{(BgqKd}eBizyCbf1915X?G0Vu5)b-+Lkrw_W%g)1(#D6g?uB8!3UTp zASRK{am$@f$AbUa@V`F(OQ*Zo%<#A1mQDsC7p$o{QZVsF95v^ZmQ6Fp^N;`jb+y~=0x)Z%bBODlZFTQ3oiXUmze`1euG`Sbw zeYGaAnPWKbPbM&c|M-Re?`g;VSLE@(zy2$rRBE6i0sZ{iLdQ zup+UE%$*DBAgLTme{H;G?4i0b9L{Vb&RN%hfEJ_Ns9GGRAe%+;ePIakHGn1xeZF4C zP)cMsolFLUUf1k-Dp6Uk{w_as=x}VfwByg9ZeM#i0_IR z?}}ec(-FZpXul;O6{b<7C|H|#F%o?IiiGZ!HwN4=H^~)4f7GjNb|xRiWJLP9ug3S; zS4j|MdMW7?3_f9IM9iWQ>2B&s1%);f4O-Q)pd}8w8g)>tr$QgpsCJ%j_s3Q+G~G#O zYPtg(IKS2Hn-e^)!0*8c^+~lOlz@E`f|fDuMYeBNN7$^jz|Of7~-uRL{<<5wOK+B)|HDD*4s# zn@E1yuTr4P7S&Q&HhHuXS@ZLw5XhRD8_Hw(dzCmY(t}1kTUKv69$Q1x3Vh)Igwd z=l928fA@O*-UJjfzh@3QR^ROQ-Dzhy_P{Fces&UHFVWhDP-g?XOG zJhT{hCce|}f!q#!r)RpL#+hSp&@=7f7|@~D>-XHj7cu^a72|Fu#udDMVs{-W!270U zqX6%^bnRvhyS8!{(%s1f?-xb)coEHZHM?K(whtz*f61;uiUK)Abatf0;K8EnqJTwnv<#1 zbsVoh98RoL$?KapH(<&)m+v8kL`7bW{s>qG<(Kv84B>KA+dfta9 z_zB6Mpe~@X*;yyc>MAz-A3^3H&qS}6_g^gZFOvQ^lKwPS`NNCkU2JZ_F7~&!e|5sU zxwZX}())|GeNJmz2vIbj6)E~l`^l3hrV0Pwcuh6EqS*M}TL#w#R|kApGU(H3@WS{A zsCR9Aym|TEH^%Fmk2f!j4}_`L1_nyLFn&PUcx~WdPoBK`;r-v}`*v|4<1(DIj5!Dg zj6H7|=mu;VKnXzI-e!?fqm~f^f2ETPV1&)_JBn3*ZoK*Nhj&Jj0-t~J#JV5>i-TRD z%l#s~a4vS-RO%(4jeiSf>!OEw()8RE-GQ#Yr%fkF?UY*FFwEsMBTi&PZV4R%y}W^O|EVL zIwVd5Jzngb+d5gE#x027^v-~_nT?;y1&8y+UwO!T7n(01g&e!#Yp&`)9LnH zv;@(5?A!M6!n1myx=wm_Z|c~C?!fO(CU$qw8G8MJ)#-UbXWFrYe}VmE;5glj4?y7< z_Pe|{5_-dy7?%{D|6Exu0&q0m0Q6AwQ-Jx1xJHcfH2^d5(!aSN;4sUxT~ z-^PD`{THz?fTd$ve_f+9ymp4yw%rEvYtZeYGabR{4tm3jiQ5MwVA6BoKVD}%41(Uk z9ecr`>-RfjZ`|v2UE6X8JL0jxsiWd^aZrZW452kh+>m_)%W*IPD;WPdbh+wSY?WZ) zvW;OEA;Bne?WYYc@WO#K*6MyZ`P;; zqecd_2?XrHdO;mc!$m_t;0rlGCH(JZybKf61P%p=ZcKiB@Exk}9xzt?35_cP0Fw|6 z*G~F+!qoOd*Q}1EVWEXHP&w)pby@a6Y4ltE<9+@kA4L6145($x3Ln;S=rUX06=HbH zO>aGq1T{IHe@dhUkg2-{JC<6ZX@-xlz>ruTf&l`0$Hau(n8#&4;R>UW(TRh2Pon4G zMVE(UYoOgV~1p782)Eo7yJrAG0sN3&BL|KCyRd2tx7=*sMR}x#MGM=;&PV z^|evG68+eNWctv41-AD~{0myUTU)<}ZM>RC5rAEEf9hV`T5Ztjm!Urj7UZ2v+RF&2 zWwQv9HtHf5mh+^yb?lcBbn;egTy|&iLF0nrXuoAALv8YW&0@?rWri3^(S3D4RmoY&{iT2wFIMkAvgaqTwmDM z6T91R9oR>I&Xw!HE<+s(;b%Y}V7M{fL|oXwsI=6@8q#^a^peo0mevkfiS6wAc5heH z=%-bfQd>vYHi~E7DomDH+i&A&v!)JieTScef5n2@5eacX{h3{}aNxj?z4DK5{b-dn z=$9LO7u*Jmti_<*LOC;NFl~$_R$l;0^}a=f+8?$ zu9s!ixC&jmJM#-{-P;8Xdr#c$oGyO=&}BQbQw{*yZ$IM#ID1dJo!vJJt+g~)BICi6 zf9@8d!!^8Bp0ZP)?Sd>1A?UJQQ&AuU?HhAD=%eR$dW3`K{fjg}D=G5PCF40qWEU1qK6( zz-%}Tc4~wIgFf_ViUQQB5ef`?f6${T3Q(s;C@=tmZtR|+PR&pNeQ=FY06R590U&6* zF$!R(W+(szUE#2)nFc#GLjfRYyDf9#6p6^pCl z?VH%HtVd&?EcI$&zp@SuEi%?=ix0kJ@B<5jURvjra)5O8hlz&if{FEM=%`|ynz*W1 zkL}i<>Mf)`-NxEK_0l6k#Q|Z5hSnc->h0tj1C9?(n>xo>uWhWQc$U~_J982S0gEd9ke%7We9_q*E^MJA&kAY$(90yu}fpof}NU)7VOc~f3ZltDqKqy5XKHW za(vL&hRr!X_G+X|vM!AoK6Yxx@Ucf@ry}*zAAbdevBOT+Az(s4)20_9*vsx{8GSW` zu}jm44(ik>rh|Gkj_ROZ`s1&FFm}+AehI=(2bylV=qy8+dNuPTQaoqOZsI9 zJJ3{1@3j!dURp+94PorkFrbAx?ch36A&fnm-X5}E`s1&Fe=v5?l75QTT+)8!CBbWG z8l;pp7kaqRLreDh9ye*~`SWGgSIhNFeLvzCyhld-TVRHb`*n?9dugCH9uyl_KndGs zXD(l8h+ePx7lm+5=;d}USe=NGTIz;9BH^9igtHHUz{ehRv3BaR87H}3cHO>z0Zm}_}e=P8pnGp*g)b`z7_JD!W@2Sp4)^%&#^fH))-iZEtXuPyClqTArz1Ns* zVhV09g|f@{8HLwx`567f$pC*M1cHkdR5eh z!h3dYe;dz&)wAmX{PSBH#4B&{?7C|_qxvP!uKWBi6WjE#>=&;6*|lRl!`FV#t}Q<9 z%WS}xe8iVxNEq-X8wUn_nH%w?GUQ7+=F1B?Sj){u>B&KK3u$#*u!+07yY@7|C%p^A zmiRWnx<9Z$Kq4FdU*EZSM!{ONbJ3N53E$nwe=lz?Glx zHy2L^7kFFPX}j6+SvEhvz63X%6{VzLCkaPpS?W;^cOzHp37()k}3QdG7AZ3k>k@S{H8H#pDJ!<&5CR zfByi)@D}U2Hx5z(gBh(BU%t_1*$W~91`2Q57Ej1Po5r`hg#MHS1_03NVsIWYrp44qK}YixJ~F ztzpXoEQJ5>wp=UQh1Ig*)UYlM{OyV@f7$TYDk1=|3V!fakDaI8Z#j6ha1Iv!yMf;v zSRs}vf^BysFakg#2R>%ijNtPCKPQ_7uE~ZEvic2-HW0A0k#5+MT>1-kW%UrCFhWlP z)^_-xI2LS46zf5n9<&e{v6>Qe>EmA@GvH4c8O!g$cmOo4%!8PRk+pa`-DwZ{f87g= zR>|OPWiWI(0K{G$wb@Ih-Amr^rEK|9ZQ7N`Iib<;42R;-@UXK(vj*x($>SMh$Aa6$ z$>4AiL~K694CNH?TqV?zz!{h`NcJ;8b}^gVDc$&|v&q*msQ913mDT8U2dmPQrv< zR-^4)%FRIk&$@vBOE3QWe^jV4V0yDSVAl6Y{t1g5CBd%(o*%yX%TM2Y|LPm~<6|vE zKYa7uH?KY#>ltP^@<2wnf0H1+^%j?;2eoUade$=Rp4)9vHl*h-s@Dkn+z=E`yujQ% zu(}>rch@hDKW-a&tK{x7kePD6)mP2E6YiV~Q})5@f7v2R5-+|7&1!k- z^=anXX^kte=fG55pL%_Td1}|TN#~;(zIQ#fOH$Xe1xWOtGvQg?gtdVCEdYhi_c6yX zsL9Lq$@IsniFRDwe-w3m5H8W|^b0J_wc{Gkvbfx;oC+lLqs=P4UxZ-$BqR3WL@TSF zsSaqGUi9I7i&UrEd8Hy1;>p*jPE@x#ykQv$hs|jZx@M}TD_nwxI|F5remmc4HPi0C z@@0_5krxN&S#WW-2J2KdiB+*u?_@54ohPo*$n;~t_Pw(qe@DfnyDvKN&W_OfId{hr zRxrR@oPFUn6E|3Ww0a1jS5CY8%1@#bc$ESG&`)U z5Cd?+#c5_j=GCcWU##0QoUyo=QyC^z^Pr76tn$cK#T-$#Q3`Lu$_yu3aihsm{jRj( zYe!3R(VKx(bP= zQ>^TCp5<1~yWiU5V0J>yVApwfT>H}dXB7M4$y^^bQ|-7y3~GckIS>0UPqyPKHwo-+ zoSdEi*UnqFb{G`Y^0k*FSUPSVVzGz&5NwGPt$Evgs1jDWWY^w3DrVCNs|qd_0oKf; zs%)oOf9jU$5USmw(`~TY|5x6d^-7MTS%UBVD=zw_qJVhNz7#MIF_lq0iOPxUj?BVL zVlWU$in1$rGn1txbB_!3k8hD$ObaP4BF(PP)Z%eXBKe(jK8pJS!Fz45F(@>+mk$_` z#~~;LY)w2$86~J=d5y;eo+~uND#6X`qOntGe*v=9rx6-d%p2DdeI={go(Fejk@RuA zNM7Fgnz1K>-da@@`c_w6o77fmEHp^_XO5dXJf*9qJ=OF&z}4;!TZlyl$znB!H>Pl_ zyT*MNZnn~Gcw~F=pSMBN;9VOfUEQhHHzdQ+R?NGxZpcmT6?~GbcCr zk_*9rtvQ*E0os}2X!Hnt!nwt+AG~OeRM+bAaVGbVyo?tg3u%GrQyi|Lq`NL(M~;DFXRVkxL9%=X(dz(l*YCpl%b0P1 z9P-(CI>5_FtpFVQ#^?;dYd@_GghPbB+%GqJ4>qd6xqPXgxKIvdKRW6?{;;`Nf8YR= zLv>i6DjC{;X-&q2ahzCRkz`{{lD+P`+l6!J8|+hF-mv^ymMkpCeL2)FbU=yJFV$;V z^57gN+D~J@wwmAoIZlog(-|$Nv%a8yEkz!j<3t= zG`qt!QYpWKYhK;k&q0#|<`~Pq2zzyD%0fZb%W7xR&c3y+w`$f86&^#;JC(ez>jv_W zbo97mkitaA0{7*`KL^O6Ecn_oe|?UEeog(-&iS%C&Li>7%^8{g)px7z>r$aFY nClsFI)r}z;!AN+^E3J1-(G4pC{kIoy2k=)24vh-TJLxh2{oi)O delta 322736 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 moCC7R##29h;>=P+O&UZ~@r*3w++8H0$4Wmx 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®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

_Dvs3GmN9Rsrxpm9Nf8xAJ43N*7A!T$bf�T#{KU$G#M7|Sw||M+<@s0+%T?gi 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

    |5Jq4hM8_K-jM2{0A6Lun%Hin+^z(_vcmD5cJ$7 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≷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Ξ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