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