Commit 5664fe37 by Simon Chen

Add outcome_override field

Outcome override field is needed to create outcome description on course run level
EDUCATOR-1694
parent c78db34d
......@@ -503,7 +503,7 @@ class CourseRunSerializer(MinimalCourseRunSerializer):
class Meta(MinimalCourseRunSerializer.Meta):
fields = MinimalCourseRunSerializer.Meta.fields + (
'course', 'full_description', 'announcement', 'video', 'seats', 'content_language', 'license',
'course', 'full_description', 'announcement', 'video', 'seats', 'content_language', 'license', 'outcome',
'transcript_languages', 'instructors', 'staff', 'min_effort', 'max_effort', 'weeks_to_complete', 'modified',
'level_type', 'availability', 'mobile_available', 'hidden', 'reporting_type', 'eligible_for_financial_aid',
)
......
......@@ -289,6 +289,7 @@ class CourseRunSerializerTests(MinimalCourseRunSerializerTests):
'reporting_type': course_run.reporting_type,
'status': course_run.status,
'license': course_run.license,
'outcome': course_run.outcome,
})
return expected
......
......@@ -467,6 +467,7 @@ class CourseMarketingSiteDataLoader(AbstractMarketingSiteDataLoader):
'short_description_override': self.clean_html(data['field_course_sub_title_short']) or None,
'min_effort': min_effort,
'max_effort': max_effort,
'outcome': (data.get('field_course_what_u_will_learn', {}) or {}).get('value')
}
if weeks_to_complete:
......
......@@ -536,6 +536,7 @@ class CourseMarketingSiteDataLoaderTests(AbstractMarketingSiteDataLoaderTestMixi
'hidden': self.loader.get_hidden(data),
'mobile_available': data['field_course_enrollment_mobile'] or False,
'short_description_override': self.loader.clean_html(data['field_course_sub_title_short']) or None,
'outcome': (data.get('field_course_what_u_will_learn', {}) or {}).get('value'),
}
if weeks_to_complete:
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-11-07 17:07
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('course_metadata', '0065_program_total_hours_of_effort'),
]
operations = [
migrations.AddField(
model_name='courserun',
name='outcome_override',
field=models.TextField(blank=True, default=None, help_text="'What You Will Learn' description for this particular course run. Leave this value blank to default to the parent course's Outcome attribute.", null=True),
),
]
......@@ -457,6 +457,11 @@ class CourseRun(TimeStampedModel):
reporting_type = models.CharField(max_length=255, choices=ReportingType.choices, default=ReportingType.mooc)
eligible_for_financial_aid = models.BooleanField(default=True)
license = models.CharField(max_length=255, blank=True, db_index=True)
outcome_override = models.TextField(
default=None, blank=True, null=True,
help_text=_(
"'What You Will Learn' description for this particular course run. Leave this value blank to default "
"to the parent course's Outcome attribute."))
tags = TaggableManager(
blank=True,
......@@ -598,6 +603,16 @@ class CourseRun(TimeStampedModel):
self.full_description_override = value
@property
def outcome(self):
return self.outcome_override or self.course.outcome
@outcome.setter
def outcome(self, value):
# Treat empty strings as NULL
value = value or None
self.outcome_override = value
@property
def subjects(self):
return self.course.subjects
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-02 12:00+0000\n"
"POT-Creation-Date: 2017-11-07 17:13+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -362,6 +362,12 @@ msgid "Indicates whether the course relation has been manually overridden."
msgstr ""
#: apps/course_metadata/models.py
msgid ""
"What You Will Learn description for this particular course run. Leave this "
"value blank to default to the parent course's Outcome attribute."
msgstr ""
#: apps/course_metadata/models.py
msgid "Archived"
msgstr ""
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-02 12:00+0000\n"
"POT-Creation-Date: 2017-11-07 17:13+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-02 12:00+0000\n"
"POT-Creation-Date: 2017-11-07 17:13+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......@@ -453,6 +453,20 @@ msgstr ""
"ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя #"
#: apps/course_metadata/models.py
msgid ""
"What You Will Learn description for this particular course run. Leave this "
"value blank to default to the parent course's Outcome attribute."
msgstr ""
"Whät Ýöü Wïll Léärn désçrïptïön för thïs pärtïçülär çöürsé rün. Léävé thïs "
"välüé ßlänk tö défäült tö thé pärént çöürsé's Öütçömé ättrïßüté. Ⱡ'σяєм "
"ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ тємρσя "
"ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм, qυιѕ "
"ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ "
"¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє "
"¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяιαтυя. єχ¢єρтєυя ѕιηт σ¢¢αє¢αт ¢υρι∂αтαт "
"ηση ρяσι∂єηт, ѕυηт ιη ¢υłρα qυι σƒƒι¢ια ∂єѕєяυηт мσłłιт αηιм ι∂ єѕт łα#"
#: apps/course_metadata/models.py
msgid "Archived"
msgstr "Àrçhïvéd Ⱡ'σяєм ιρѕυм ∂#"
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-02 12:00+0000\n"
"POT-Creation-Date: 2017-11-07 17:13+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
......
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