Commit 6e9fc9ce by mikedikan Committed by GitHub

Merge pull request #274 from edx/mdikan/add-program-about-page-fields

Adding data to program endpoint for program about page
parents c220b94c c5597e09
...@@ -13,7 +13,7 @@ from course_discovery.apps.api.fields import StdImageSerializerField, ImageField ...@@ -13,7 +13,7 @@ from course_discovery.apps.api.fields import StdImageSerializerField, ImageField
from course_discovery.apps.catalogs.models import Catalog from course_discovery.apps.catalogs.models import Catalog
from course_discovery.apps.course_metadata.models import ( from course_discovery.apps.course_metadata.models import (
Course, CourseRun, Image, Organization, Person, Prerequisite, Seat, Subject, Video, Program, ProgramType, FAQ, Course, CourseRun, Image, Organization, Person, Prerequisite, Seat, Subject, Video, Program, ProgramType, FAQ,
CorporateEndorsement, Endorsement CorporateEndorsement, Endorsement, Position
) )
from course_discovery.apps.course_metadata.search_indexes import CourseIndex, CourseRunIndex, ProgramIndex from course_discovery.apps.course_metadata.search_indexes import CourseIndex, CourseRunIndex, ProgramIndex
...@@ -104,11 +104,12 @@ class FAQSerializer(serializers.ModelSerializer): ...@@ -104,11 +104,12 @@ class FAQSerializer(serializers.ModelSerializer):
fields = ('question', 'answer',) fields = ('question', 'answer',)
class SubjectSerializer(NamedModelSerializer): class SubjectSerializer(serializers.ModelSerializer):
"""Serializer for the ``Subject`` model.""" """Serializer for the ``Subject`` model."""
class Meta(NamedModelSerializer.Meta): class Meta(object):
model = Subject model = Subject
fields = ('name', 'subtitle', 'description', 'banner_image_url', 'card_image_url', 'slug',)
class PrerequisiteSerializer(NamedModelSerializer): class PrerequisiteSerializer(NamedModelSerializer):
...@@ -143,12 +144,21 @@ class VideoSerializer(MediaSerializer): ...@@ -143,12 +144,21 @@ class VideoSerializer(MediaSerializer):
fields = ('src', 'description', 'image',) fields = ('src', 'description', 'image',)
class PositionSerializer(serializers.ModelSerializer):
"""Serializer for the ``Position`` model."""
class Meta(object):
model = Position
fields = ('title', 'organization_name',)
class PersonSerializer(serializers.ModelSerializer): class PersonSerializer(serializers.ModelSerializer):
"""Serializer for the ``Person`` model.""" """Serializer for the ``Person`` model."""
position = PositionSerializer()
class Meta(object): class Meta(object):
model = Person model = Person
fields = ('uuid', 'given_name', 'family_name', 'bio', 'profile_image_url', 'slug',) fields = ('uuid', 'given_name', 'family_name', 'bio', 'profile_image_url', 'slug', 'position')
class EndorsementSerializer(serializers.ModelSerializer): class EndorsementSerializer(serializers.ModelSerializer):
...@@ -195,7 +205,7 @@ class OrganizationSerializer(TaggitSerializer, serializers.ModelSerializer): ...@@ -195,7 +205,7 @@ class OrganizationSerializer(TaggitSerializer, serializers.ModelSerializer):
class Meta(object): class Meta(object):
model = Organization model = Organization
fields = ('key', 'name', 'description', 'homepage_url', 'tags',) fields = ('key', 'name', 'description', 'homepage_url', 'tags', 'logo_image_url')
class CatalogSerializer(serializers.ModelSerializer): class CatalogSerializer(serializers.ModelSerializer):
......
...@@ -14,7 +14,7 @@ from course_discovery.apps.api.serializers import ( ...@@ -14,7 +14,7 @@ from course_discovery.apps.api.serializers import (
PersonSerializer, AffiliateWindowSerializer, ContainedCourseRunsSerializer, CourseRunSearchSerializer, PersonSerializer, AffiliateWindowSerializer, ContainedCourseRunsSerializer, CourseRunSearchSerializer,
ProgramSerializer, ProgramSearchSerializer, ProgramCourseSerializer, NestedProgramSerializer, ProgramSerializer, ProgramSearchSerializer, ProgramCourseSerializer, NestedProgramSerializer,
CourseRunWithProgramsSerializer, CourseWithProgramsSerializer, CorporateEndorsementSerializer, CourseRunWithProgramsSerializer, CourseWithProgramsSerializer, CorporateEndorsementSerializer,
FAQSerializer, EndorsementSerializer FAQSerializer, EndorsementSerializer, PositionSerializer
) )
from course_discovery.apps.catalogs.tests.factories import CatalogFactory from course_discovery.apps.catalogs.tests.factories import CatalogFactory
from course_discovery.apps.core.models import User from course_discovery.apps.core.models import User
...@@ -24,7 +24,7 @@ from course_discovery.apps.course_metadata.models import CourseRun, Program ...@@ -24,7 +24,7 @@ from course_discovery.apps.course_metadata.models import CourseRun, Program
from course_discovery.apps.course_metadata.tests.factories import ( from course_discovery.apps.course_metadata.tests.factories import (
CourseFactory, CourseRunFactory, SubjectFactory, PrerequisiteFactory, ImageFactory, VideoFactory, CourseFactory, CourseRunFactory, SubjectFactory, PrerequisiteFactory, ImageFactory, VideoFactory,
OrganizationFactory, PersonFactory, SeatFactory, ProgramFactory, CorporateEndorsementFactory, EndorsementFactory, OrganizationFactory, PersonFactory, SeatFactory, ProgramFactory, CorporateEndorsementFactory, EndorsementFactory,
JobOutlookItemFactory, ExpectedLearningItemFactory JobOutlookItemFactory, ExpectedLearningItemFactory, PositionFactory
) )
...@@ -386,7 +386,6 @@ class ContainedCoursesSerializerTests(TestCase): ...@@ -386,7 +386,6 @@ class ContainedCoursesSerializerTests(TestCase):
@ddt.ddt @ddt.ddt
class NamedModelSerializerTests(TestCase): class NamedModelSerializerTests(TestCase):
@ddt.data( @ddt.data(
(SubjectFactory, SubjectSerializer),
(PrerequisiteFactory, PrerequisiteSerializer), (PrerequisiteFactory, PrerequisiteSerializer),
) )
@ddt.unpack @ddt.unpack
...@@ -401,6 +400,23 @@ class NamedModelSerializerTests(TestCase): ...@@ -401,6 +400,23 @@ class NamedModelSerializerTests(TestCase):
self.assertDictEqual(serializer.data, expected) self.assertDictEqual(serializer.data, expected)
class SubjectSerializerTests(TestCase):
def test_data(self):
subject = SubjectFactory()
serializer = SubjectSerializer(subject)
expected = {
'name': subject.name,
'description': subject.description,
'banner_image_url': subject.banner_image_url,
'card_image_url': subject.card_image_url,
'subtitle': subject.subtitle,
'slug': subject.slug,
}
self.assertDictEqual(serializer.data, expected)
class ImageSerializerTests(TestCase): class ImageSerializerTests(TestCase):
def test_data(self): def test_data(self):
image = ImageFactory() image = ImageFactory()
...@@ -477,6 +493,7 @@ class OrganizationSerializerTests(TestCase): ...@@ -477,6 +493,7 @@ class OrganizationSerializerTests(TestCase):
'name': organization.name, 'name': organization.name,
'description': organization.description, 'description': organization.description,
'homepage_url': organization.homepage_url, 'homepage_url': organization.homepage_url,
'logo_image_url': organization.logo_image_url,
'tags': [TAG], 'tags': [TAG],
} }
...@@ -503,7 +520,8 @@ class SeatSerializerTests(TestCase): ...@@ -503,7 +520,8 @@ class SeatSerializerTests(TestCase):
class PersonSerializerTests(TestCase): class PersonSerializerTests(TestCase):
def test_data(self): def test_data(self):
person = PersonFactory() position = PositionFactory()
person = position.person
serializer = PersonSerializer(person) serializer = PersonSerializer(person)
expected = { expected = {
...@@ -512,12 +530,26 @@ class PersonSerializerTests(TestCase): ...@@ -512,12 +530,26 @@ class PersonSerializerTests(TestCase):
'family_name': person.family_name, 'family_name': person.family_name,
'bio': person.bio, 'bio': person.bio,
'profile_image_url': person.profile_image_url, 'profile_image_url': person.profile_image_url,
'position': PositionSerializer(position).data,
'slug': person.slug, 'slug': person.slug,
} }
self.assertDictEqual(serializer.data, expected) self.assertDictEqual(serializer.data, expected)
class PositionSerializerTests(TestCase):
def test_data(self):
position = PositionFactory()
serializer = PositionSerializer(position)
expected = {
'title': str(position.title),
'organization_name': position.organization_name,
}
self.assertDictEqual(serializer.data, expected)
class AffiliateWindowSerializerTests(TestCase): class AffiliateWindowSerializerTests(TestCase):
def test_data(self): def test_data(self):
user = UserFactory() user = UserFactory()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment