Skip to content

Commit a104424

Browse files
OpenStaxClaudeclaudemwvolo
authored
Add header_image field to PartnersPage model (#1661)
This change adds a header_image field to the PartnersPage model that can be managed through the Wagtail admin interface. The field is exposed via the API as header_image_url, following the same pattern as the TeamPage model. Changes: - Add header_image ForeignKey field to PartnersPage model - Add get_header_image() method and header_image_url property - Add header_image to content_panels for admin editing - Add header_image_url to api_fields for API exposure - Generate database migration Jira: https://openstax.atlassian.net/browse/CORE-1194 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: Michael Volo <volo@rice.edu>
1 parent cff8ac1 commit a104424

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 5.1.15 on 2026-01-13 22:51
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("pages", "0163_rootpage_school"),
11+
("wagtailimages", "0027_image_description"),
12+
]
13+
14+
operations = [
15+
migrations.AddField(
16+
model_name="partnerspage",
17+
name="header_image",
18+
field=models.ForeignKey(
19+
blank=True,
20+
null=True,
21+
on_delete=django.db.models.deletion.SET_NULL,
22+
related_name="+",
23+
to="wagtailimages.image",
24+
),
25+
),
26+
]

pages/models.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,6 +2394,19 @@ class CreatorFestPage(Page):
23942394
class PartnersPage(Page):
23952395
heading = models.CharField(max_length=255)
23962396
description = RichTextField()
2397+
header_image = models.ForeignKey(
2398+
'wagtailimages.Image',
2399+
null=True,
2400+
blank=True,
2401+
on_delete=models.SET_NULL,
2402+
related_name='+'
2403+
)
2404+
2405+
def get_header_image(self):
2406+
return build_image_url(self.header_image)
2407+
2408+
header_image_url = property(get_header_image)
2409+
23972410
partner_landing_page_link = models.CharField(max_length=255, null=True, blank=True,
23982411
help_text="Link text to partner landing page.")
23992412
partner_request_info_link = models.CharField(max_length=255, null=True, blank=True,
@@ -2442,6 +2455,7 @@ def partner_type_choices():
24422455
TitleFieldPanel('title', classname='full title', help_text="Internal name for page."),
24432456
FieldPanel('heading'),
24442457
FieldPanel('description'),
2458+
FieldPanel('header_image'),
24452459
FieldPanel('partner_landing_page_link'),
24462460
FieldPanel('partner_request_info_link'),
24472461
FieldPanel('partner_full_partner_heading'),
@@ -2454,6 +2468,7 @@ def partner_type_choices():
24542468
APIField('title'),
24552469
APIField('heading'),
24562470
APIField('description'),
2471+
APIField('header_image_url'),
24572472
APIField('partner_landing_page_link'),
24582473
APIField('partner_request_info_link'),
24592474
APIField('partner_full_partner_heading'),

0 commit comments

Comments
 (0)