From bf31b4cef082deb985c2055d1b8ff18b0c4491f6 Mon Sep 17 00:00:00 2001 From: Jacob Coffee Date: Wed, 15 Apr 2026 18:42:43 -0500 Subject: [PATCH] expose sponsor contact for pycon --- apps/sponsors/api.py | 12 ++++++++++++ apps/sponsors/serializers.py | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/apps/sponsors/api.py b/apps/sponsors/api.py index 16d917145..d2bb6d0f5 100644 --- a/apps/sponsors/api.py +++ b/apps/sponsors/api.py @@ -45,6 +45,17 @@ def get(self, request, *args, **kwargs): sponsorships = sponsorships.filter(year=logo_filters.by_year) for sponsorship in sponsorships.select_related("sponsor").iterator(): sponsor = sponsorship.sponsor + contacts = [ + { + "name": c.name, + "email": c.email, + "primary": c.primary, + "administrative": c.administrative, + "accounting": c.accounting, + "manager": c.manager, + } + for c in sponsor.contacts.all() + ] base_data = { "sponsor_id": sponsor.id, "sponsor": sponsor.name, @@ -55,6 +66,7 @@ def get(self, request, *args, **kwargs): "logo": sponsor.web_logo.url, "white_logo": sponsor.white_logo.url if sponsor.white_logo else None, "sponsor_url": sponsor.landing_page_url, + "contacts": contacts, "start_date": sponsorship.start_date, "end_date": sponsorship.end_date, } diff --git a/apps/sponsors/serializers.py b/apps/sponsors/serializers.py index 2fcb91e49..ba400c236 100644 --- a/apps/sponsors/serializers.py +++ b/apps/sponsors/serializers.py @@ -6,6 +6,17 @@ from apps.sponsors.models.enums import LogoPlacementChoices, PublisherChoices +class SponsorContactSerializer(serializers.Serializer): + """Serializer for sponsor contact information.""" + + name = serializers.CharField() + email = serializers.EmailField() + primary = serializers.BooleanField() + administrative = serializers.BooleanField() + accounting = serializers.BooleanField() + manager = serializers.BooleanField() + + class LogoPlacementSerializer(serializers.Serializer): """Serializer for sponsor logo placement data.""" @@ -22,6 +33,7 @@ class LogoPlacementSerializer(serializers.Serializer): sponsor_url = serializers.URLField() level_name = serializers.CharField() level_order = serializers.IntegerField() + contacts = SponsorContactSerializer(many=True, required=False) class AssetSerializer(serializers.ModelSerializer):