Commit f55d20b0 by Simon Chen

We need to fix the course image resolution so the aspect ratio on course image is maintained

parent 44c4418d
...@@ -586,6 +586,7 @@ class CourseSerializer(MinimalCourseSerializer): ...@@ -586,6 +586,7 @@ class CourseSerializer(MinimalCourseSerializer):
sponsors = OrganizationSerializer(many=True, source='sponsoring_organizations') sponsors = OrganizationSerializer(many=True, source='sponsoring_organizations')
course_runs = CourseRunSerializer(many=True) course_runs = CourseRunSerializer(many=True)
marketing_url = serializers.SerializerMethodField() marketing_url = serializers.SerializerMethodField()
original_image = ImageField(read_only=True, source='original_image_url')
@classmethod @classmethod
def prefetch_queryset(cls, partner, queryset=None, course_runs=None): def prefetch_queryset(cls, partner, queryset=None, course_runs=None):
...@@ -607,6 +608,7 @@ class CourseSerializer(MinimalCourseSerializer): ...@@ -607,6 +608,7 @@ class CourseSerializer(MinimalCourseSerializer):
fields = MinimalCourseSerializer.Meta.fields + ( fields = MinimalCourseSerializer.Meta.fields + (
'short_description', 'full_description', 'level_type', 'subjects', 'prerequisites', 'prerequisites_raw', 'short_description', 'full_description', 'level_type', 'subjects', 'prerequisites', 'prerequisites_raw',
'expected_learning_items', 'video', 'sponsors', 'modified', 'marketing_url', 'syllabus_raw', 'outcome', 'expected_learning_items', 'video', 'sponsors', 'modified', 'marketing_url', 'syllabus_raw', 'outcome',
'original_image',
) )
def get_marketing_url(self, obj): def get_marketing_url(self, obj):
......
...@@ -165,6 +165,7 @@ class CourseSerializerTests(MinimalCourseSerializerTests): ...@@ -165,6 +165,7 @@ class CourseSerializerTests(MinimalCourseSerializerTests):
'prerequisites_raw': course.prerequisites_raw, 'prerequisites_raw': course.prerequisites_raw,
'syllabus_raw': course.syllabus_raw, 'syllabus_raw': course.syllabus_raw,
'outcome': course.outcome, 'outcome': course.outcome,
'original_image': ImageField().to_representation(course.original_image_url),
}) })
return expected return expected
......
...@@ -305,7 +305,7 @@ class Course(TimeStampedModel): ...@@ -305,7 +305,7 @@ class Course(TimeStampedModel):
null=True, null=True,
variations={ variations={
'original': (2120, 1192), 'original': (2120, 1192),
'small': (318, 210) 'small': (318, 178)
}, },
help_text=_('Please provide a course preview image') help_text=_('Please provide a course preview image')
) )
...@@ -333,11 +333,17 @@ class Course(TimeStampedModel): ...@@ -333,11 +333,17 @@ class Course(TimeStampedModel):
@property @property
def image_url(self): def image_url(self):
if self.image: if self.image:
return self.image.url return self.image.small.url
return self.card_image_url return self.card_image_url
@property @property
def original_image_url(self):
if self.image:
return self.image.url
return None
@property
def marketing_url(self): def marketing_url(self):
url = None url = None
if self.partner.marketing_site_url_root: if self.partner.marketing_site_url_root:
......
...@@ -45,11 +45,18 @@ class TestCourse: ...@@ -45,11 +45,18 @@ class TestCourse:
def test_image_url(self): def test_image_url(self):
course = factories.CourseFactory() course = factories.CourseFactory()
assert course.image_url == course.image.url assert course.image_url == course.image.small.url
course.image = None course.image = None
assert course.image_url == course.card_image_url assert course.image_url == course.card_image_url
def test_original_image_url(self):
course = factories.CourseFactory()
assert course.original_image_url == course.image.url
course.image = None
assert course.original_image_url is None
@ddt.ddt @ddt.ddt
class CourseRunTests(TestCase): class CourseRunTests(TestCase):
......
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