Commit 71d2de53 by Waheed Ahmed

Display card_image_url on detail pages if course image not available.

LEARNER-1263
parent 8dc7e656
......@@ -189,6 +189,21 @@ class Course(TimeStampedModel, ChangedByMixin):
except CourseUserRole.DoesNotExist:
return None
@property
def course_image_url(self):
"""
Return course image url.
"""
if self.image:
return self.image.url
course_run = self.course_runs.filter(course_run_state__name=CourseRunStateChoices.Published).first()
if course_run and course_run.card_image_url:
return course_run.card_image_url
return None
class CourseRun(TimeStampedModel, ChangedByMixin):
""" Publisher CourseRun model. It contains fields related to the course run intake form."""
......
......@@ -312,6 +312,26 @@ class CourseTests(TestCase):
self.assertEqual(self.user1, self.course2.publisher)
def test_course_image_url(self):
""" Verify that the property returns the course image url. """
self.assertIsNone(self.course.course_image_url)
# Create a published course-run with card_image_url.
course_run = factories.CourseRunFactory(course=self.course)
factories.CourseRunStateFactory(course_run=course_run, name=CourseRunStateChoices.Published)
course_run.card_image_url = 'http://example.com/test.jpg'
course_run.save()
# Verify that property returns card_image_url of course-run.
self.assertEqual(self.course.course_image_url, course_run.card_image_url)
# Create a course image.
self.course.image = make_image_file('test_banner1.jpg')
self.course.save()
# Verify that property returns course image field url.
self.assertEqual(self.course.course_image_url, self.course.image.url)
class SeatTests(TestCase):
""" Tests for the publisher `Seat` model. """
......
......@@ -174,14 +174,14 @@ class CourseRunWrapperTests(TestCase):
""" Verify that the wrapper return the course team admin. """
self.assertEqual(self.wrapped_course_run.course_team_admin, self.course.course_team_admin)
def test_course_image(self):
""" Verify that the wrapper return the course image. """
self.assertIsNone(self.wrapped_course_run.course_image)
def test_course_image_url(self):
""" Verify that the wrapper return the course image url. """
self.assertIsNone(self.wrapped_course_run.course_image_url)
self.course.image = make_image_file('test_banner1.jpg')
self.course.save()
self.assertEqual(self.wrapped_course_run.course_image, self.course.image)
self.assertEqual(self.wrapped_course_run.course_image_url, self.course.image.url)
def test_course_staff(self):
"""Verify that the wrapper return staff list."""
......
......@@ -189,11 +189,8 @@ class CourseRunWrapper(BaseWrapper):
return self.wrapped_obj.course.course_team_admin
@property
def course_image(self):
if self.wrapped_obj.course.image:
return self.wrapped_obj.course.image
return None
def course_image_url(self):
return self.wrapped_obj.course.course_image_url
@property
def course_staff(self):
......
......@@ -144,8 +144,8 @@
<div class="heading course-image-heading">
{% trans "Course Image" %}
</div>
{% if object.image %}
<img class="course-image" src="{{ object.image.url }}" alt="{% trans 'Course Image' %}">
{% if object.course_image_url %}
<img class="course-image" src="{{ object.course_image_url }}" alt="{% trans 'Course Image' %}">
{% else %}
{% trans "(Required) Not yet added" %}
{% endif %}
......
......@@ -181,12 +181,12 @@
{% trans "Course Image" %}
</div>
<div>
{% if not object.course_image %}
{% if not object.course_image_url %}
{% trans "(Required) Not yet added" %}
{% else %}
<img class="course-image" src="{{ object.course_image.url }}" alt="{% trans 'Course Image' %}">
<img class="course-image" src="{{ object.course_image_url }}" alt="{% trans 'Course Image' %}">
<div class="download-image">
<a download href="{{ object.course_image.url }}">
<a download href="{{ object.course_image_url }}">
{% trans "Download" %}
</a>
</div>
......
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