Commit 33eb25a2 by Matt Tuchfarber Committed by Matt Tuchfarber

Rename instructors field in program model

The previous program field named instructors caused confusion as it
wasn't obvious that it was only to be used to help determine which
order to list instructors. Renaming it to instructor_ordering helps
minimize confusion and better explains it's purpose.

[WL-1343]
parent 5def1caf
......@@ -891,7 +891,7 @@ class ProgramSerializer(MinimalProgramSerializer):
)
subjects = SubjectSerializer(many=True)
staff = PersonSerializer(many=True)
instructors = PersonSerializer(many=True)
instructor_ordering = PersonSerializer(many=True)
applicable_seat_types = serializers.SerializerMethodField()
@classmethod
......@@ -908,7 +908,7 @@ class ProgramSerializer(MinimalProgramSerializer):
'expected_learning_items',
'faq',
'job_outlook_items',
'instructors',
'instructor_ordering',
# `type` is serialized by a third-party serializer. Providing this field name allows us to
# prefetch `applicable_seat_types`, a m2m on `ProgramType`, through `type`, a foreign key to
# `ProgramType` on `Program`.
......@@ -932,7 +932,7 @@ class ProgramSerializer(MinimalProgramSerializer):
'min_hours_effort_per_week', 'max_hours_effort_per_week', 'video', 'expected_learning_items',
'faq', 'credit_backing_organizations', 'corporate_endorsements', 'job_outlook_items',
'individual_endorsements', 'languages', 'transcript_languages', 'subjects', 'price_ranges',
'staff', 'credit_redemption_overview', 'applicable_seat_types', 'instructors'
'staff', 'credit_redemption_overview', 'applicable_seat_types', 'instructor_ordering'
)
......
......@@ -680,7 +680,11 @@ class ProgramSerializerTests(MinimalProgramSerializerTests):
program.individual_endorsements, many=True, context={'request': request}
).data,
'staff': PersonSerializer(program.staff, many=True, context={'request': request}).data,
'instructors': PersonSerializer(program.instructors, many=True, context={'request': request}).data,
'instructor_ordering': PersonSerializer(
program.instructor_ordering,
many=True,
context={'request': request}
).data,
'job_outlook_items': [item.value for item in program.job_outlook_items.all()],
'languages': [serialize_language_to_code(l) for l in program.languages],
'weeks_to_complete': program.weeks_to_complete,
......
......@@ -59,7 +59,7 @@ class TestProgramViewSet(SerializationMixin):
individual_endorsements=EndorsementFactory.create_batch(1),
expected_learning_items=ExpectedLearningItemFactory.create_batch(1),
job_outlook_items=JobOutlookItemFactory.create_batch(1),
instructors=PersonFactory.create_batch(1),
instructor_ordering=PersonFactory.create_batch(1),
banner_image=make_image_file('test_banner.jpg'),
video=VideoFactory(),
partner=self.partner
......
......@@ -119,7 +119,7 @@ class ProgramAdmin(admin.ModelAdmin):
raw_id_fields = ('video',)
search_fields = ('uuid', 'title', 'marketing_slug')
filter_horizontal = ('job_outlook_items', 'expected_learning_items', 'instructors')
filter_horizontal = ('job_outlook_items', 'expected_learning_items', 'instructor_ordering')
# ordering the field display on admin page.
fields = (
......
......@@ -48,5 +48,5 @@ class Command(BaseCommand):
expected_learning_items=[ExpectedLearningItemFactory()],
faq=[FAQFactory()],
job_outlook_items=[JobOutlookItemFactory()],
instructors=[PersonFactory()],
instructor_ordering=[PersonFactory()],
)
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-12-11 19:22
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('course_metadata', '0074_auto_20171212_2016'),
]
operations = [
migrations.RenameField(
model_name='program',
old_name='instructors',
new_name='instructor_ordering',
),
]
......@@ -959,10 +959,12 @@ class Program(TimeStampedModel):
video = models.ForeignKey(Video, default=None, null=True, blank=True)
expected_learning_items = SortedManyToManyField(ExpectedLearningItem, blank=True)
faq = SortedManyToManyField(FAQ, blank=True)
instructors = SortedManyToManyField(
instructor_ordering = SortedManyToManyField(
Person,
blank=True,
help_text='Used to organize the instructors on the program about page.'
help_text=_('This field can be used by API clients to determine the order in which instructors will be '
'displayed on program pages. Instructors in this list should appear before all others associated '
'with this programs courses runs.')
)
credit_backing_organizations = SortedManyToManyField(
......
......@@ -39,7 +39,7 @@
{{ subject.name }}
{% endfor %}
{% for instructor in object.instructors.all %}
{% for instructor in object.staff %}
{{ instructor.full_name }}
{% endfor %}
......
......@@ -324,9 +324,9 @@ class ProgramFactory(factory.django.DjangoModelFactory):
add_m2m_data(self.job_outlook_items, extracted)
@factory.post_generation
def instructors(self, create, extracted, **kwargs):
def instructor_ordering(self, create, extracted, **kwargs):
if create: # pragma: no cover
add_m2m_data(self.instructors, extracted)
add_m2m_data(self.instructor_ordering, extracted)
class AbstractSocialNetworkModelFactory(factory.DjangoModelFactory):
......
......@@ -294,7 +294,7 @@ class ProgramAdminFunctionalTests(SiteMixin, LiveServerTestCase):
'field-excluded_course_runs', 'field-authoring_organizations', 'field-credit_backing_organizations',
'field-one_click_purchase_enabled', 'field-hidden', 'field-corporate_endorsements', 'field-faq',
'field-individual_endorsements', 'field-job_outlook_items', 'field-expected_learning_items',
'field-instructors',
'field-instructor_ordering',
]
self.assertEqual(actual, expected)
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-12 16:02+0000\n"
"POT-Creation-Date: 2017-12-13 16:39+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"
......@@ -470,6 +470,13 @@ msgid "Image used for discovery cards"
msgstr ""
#: apps/course_metadata/models.py
msgid ""
"This field can be used by API clients to determine the order in which "
"instructors will be displayed on program pages. Instructors in this list "
"should appear before all others associated with this programs courses runs."
msgstr ""
#: apps/course_metadata/models.py
msgid "The description of credit redemption for courses in program"
msgstr ""
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-12 16:02+0000\n"
"POT-Creation-Date: 2017-12-13 16:39+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-12-12 16:02+0000\n"
"POT-Creation-Date: 2017-12-13 16:37+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"
......@@ -597,6 +597,21 @@ msgid "Image used for discovery cards"
msgstr "Ìmägé üséd för dïsçövérý çärds Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢т#"
#: apps/course_metadata/models.py
msgid ""
"This field can be used by API clients to determine the order in which "
"instructors will be displayed on program pages. Instructors in this list "
"should appear before all others associated with this programs courses runs."
msgstr ""
"Thïs fïéld çän ßé üséd ßý ÀPÌ çlïénts tö détérmïné thé ördér ïn whïçh "
"ïnstrüçtörs wïll ßé dïspläýéd ön prögräm pägés. Ìnstrüçtörs ïn thïs lïst "
"shöüld äppéär ßéföré äll öthérs ässöçïätéd wïth thïs prögräms çöürsés rüns. "
"Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, ¢σηѕє¢тєтυя α∂ιριѕι¢ιηg єłιт, ѕє∂ ∂σ єιυѕмσ∂ "
"тємρσя ιη¢ι∂ι∂υηт υт łαвσяє єт ∂σłσяє мαgηα αłιqυα. υт єηιм α∂ мιηιм νєηιαм,"
" qυιѕ ησѕтяυ∂ єχєя¢ιтαтιση υłłαм¢σ łαвσяιѕ ηιѕι υт αłιqυιρ єχ єα ¢σммσ∂σ "
"¢σηѕєqυαт. ∂υιѕ αυтє ιяυяє ∂σłσя ιη яєρяєнєη∂єяιт ιη νσłυρтαтє νєłιт єѕѕє "
"¢ιłłυм ∂σłσяє єυ ƒυgιαт ηυłłα ραяι#"
#: apps/course_metadata/models.py
msgid "The description of credit redemption for courses in program"
msgstr ""
"Thé désçrïptïön öf çrédït rédémptïön för çöürsés ïn prögräm Ⱡ'σяєм ιρѕυм "
......
......@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-12 16:02+0000\n"
"POT-Creation-Date: 2017-12-13 16:37+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