From d4c85c792c288c8cd54f39f492a009a45e770d80 Mon Sep 17 00:00:00 2001 From: OpenStaxClaude Date: Wed, 15 Oct 2025 14:18:31 +0000 Subject: [PATCH] Add cta_section_footer RichTextField to Assignable model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added a new rich text field to display footer content below the three CTA buttons on the Assignable landing page. This field allows content editors to add formatted text (with links, bold, etc.) as a disclaimer or additional information below the CTA section. Changes: - Added cta_section_footer RichTextField to Assignable model - Added field to content_panels for Wagtail admin UI - Added field to api_fields for API exposure - Created Django migration 0162 Related to CORE-1277 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../0162_assignable_cta_section_footer.py | 19 +++++++++++++++++++ pages/models.py | 3 +++ 2 files changed, 22 insertions(+) create mode 100644 pages/migrations/0162_assignable_cta_section_footer.py diff --git a/pages/migrations/0162_assignable_cta_section_footer.py b/pages/migrations/0162_assignable_cta_section_footer.py new file mode 100644 index 000000000..148a81f16 --- /dev/null +++ b/pages/migrations/0162_assignable_cta_section_footer.py @@ -0,0 +1,19 @@ +# Generated by Django 5.1.12 on 2025-10-15 14:18 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("pages", "0161_assignable_instructor_help_cta_button_text_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="assignable", + name="cta_section_footer", + field=wagtail.fields.RichTextField(blank=True, null=True), + ), + ] diff --git a/pages/models.py b/pages/models.py index efe378b2a..f07a90c7a 100644 --- a/pages/models.py +++ b/pages/models.py @@ -3411,6 +3411,7 @@ def get_heading_title_image_url(self): instructor_help_cta_description = models.TextField(blank=True, null=True) instructor_help_cta_link = models.URLField(blank=True, null=True) instructor_help_cta_button_text = models.CharField(max_length=255, blank=True, null=True) + cta_section_footer = RichTextField(blank=True, null=True) available_courses_header = models.CharField(max_length=255, blank=True, null=True) available_books = StreamField([ ('course', AssignableBookBlock()), @@ -3465,6 +3466,7 @@ def get_heading_title_image_url(self): FieldPanel('instructor_help_cta_description'), FieldPanel('instructor_help_cta_link'), FieldPanel('instructor_help_cta_button_text'), + FieldPanel('cta_section_footer'), FieldPanel('available_courses_header'), FieldPanel('available_books'), FieldPanel('courses_coming_soon_header'), @@ -3502,6 +3504,7 @@ def get_heading_title_image_url(self): APIField('instructor_help_cta_description'), APIField('instructor_help_cta_link'), APIField('instructor_help_cta_button_text'), + APIField('cta_section_footer'), APIField('available_courses_header'), APIField('available_books'), APIField('courses_coming_soon_header'),