Commit 85267e6a by chrisndodge

Merge pull request #535 from edx/feature/cdodge/add-display-org-and-coursenum

add display_coursenumber and display_organization fields on the CourseModule
parents 2f808a92 18458bd9
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<h2 class="info-course"> <h2 class="info-course">
<span class="sr">${_("Current Course:")}</span> <span class="sr">${_("Current Course:")}</span>
<a class="course-link" href="${reverse('course_index', kwargs=dict(org=ctx_loc.org, course=ctx_loc.course, name=ctx_loc.name))}"> <a class="course-link" href="${reverse('course_index', kwargs=dict(org=ctx_loc.org, course=ctx_loc.course, name=ctx_loc.name))}">
<span class="course-org">${ctx_loc.org}</span><span class="course-number">${ctx_loc.course}</span> <span class="course-org">${context_course.display_org_with_default | h}</span><span class="course-number">${context_course.display_number_with_default | h}</span>
<span class="course-title" title="${context_course.display_name_with_default}">${context_course.display_name_with_default}</span> <span class="course-title" title="${context_course.display_name_with_default}">${context_course.display_name_with_default}</span>
</a> </a>
</h2> </h2>
......
...@@ -362,6 +362,11 @@ class CourseFields(object): ...@@ -362,6 +362,11 @@ class CourseFields(object):
# Explicit comparison to True because we always want to return a bool. # Explicit comparison to True because we always want to return a bool.
hide_progress_tab = Boolean(help="DO NOT USE THIS", scope=Scope.settings) hide_progress_tab = Boolean(help="DO NOT USE THIS", scope=Scope.settings)
display_organization = String(help="An optional display string for the course organization that will get rendered in the LMS",
scope=Scope.settings)
display_coursenumber = String(help="An optional display string for the course number that will get rendered in the LMS",
scope=Scope.settings)
class CourseDescriptor(CourseFields, SequenceDescriptor): class CourseDescriptor(CourseFields, SequenceDescriptor):
module_class = SequenceModule module_class = SequenceModule
...@@ -934,5 +939,25 @@ class CourseDescriptor(CourseFields, SequenceDescriptor): ...@@ -934,5 +939,25 @@ class CourseDescriptor(CourseFields, SequenceDescriptor):
return self.location.course return self.location.course
@property @property
def display_number_with_default(self):
"""
Return a display course number if it has been specified, otherwise return the 'course' that is in the location
"""
if self.display_coursenumber:
return self.display_coursenumber
return self.number
@property
def org(self): def org(self):
return self.location.org return self.location.org
@property
def display_org_with_default(self):
"""
Return a display organization if it has been specified, otherwise return the 'org' that is in the location
"""
if self.display_organization:
return self.display_organization
return self.org
...@@ -53,7 +53,7 @@ def get_dummy_course(start, announcement=None, is_new=None, advertised_start=Non ...@@ -53,7 +53,7 @@ def get_dummy_course(start, announcement=None, is_new=None, advertised_start=Non
end = to_attrb('end', end) end = to_attrb('end', end)
start_xml = ''' start_xml = '''
<course org="{org}" course="{course}" <course org="{org}" course="{course}" display_organization="{org}_display" display_coursenumber="{course}_display"
graceperiod="1 day" url_name="test" graceperiod="1 day" url_name="test"
start="{start}" start="{start}"
{announcement} {announcement}
...@@ -141,6 +141,16 @@ class IsNewCourseTestCase(unittest.TestCase): ...@@ -141,6 +141,16 @@ class IsNewCourseTestCase(unittest.TestCase):
print "Checking start=%s advertised=%s" % (s[0], s[1]) print "Checking start=%s advertised=%s" % (s[0], s[1])
self.assertEqual(d.start_date_text, s[2]) self.assertEqual(d.start_date_text, s[2])
def test_display_organization(self):
descriptor = get_dummy_course(start='2012-12-02T12:00', is_new=True)
self.assertNotEqual(descriptor.location.org, descriptor.display_org_with_default)
self.assertEqual(descriptor.display_org_with_default, "{0}_display".format(ORG))
def test_display_coursenumber(self):
descriptor = get_dummy_course(start='2012-12-02T12:00', is_new=True)
self.assertNotEqual(descriptor.location.course, descriptor.display_number_with_default)
self.assertEqual(descriptor.display_number_with_default, "{0}_display".format(COURSE))
def test_is_newish(self): def test_is_newish(self):
descriptor = get_dummy_course(start='2012-12-02T12:00', is_new=True) descriptor = get_dummy_course(start='2012-12-02T12:00', is_new=True)
assert(descriptor.is_newish is True) assert(descriptor.is_newish is True)
......
<course org="edX" course="toy" url_name="2012_Fall"/> <course org="edX" course="toy" url_name="2012_Fall" display_organization="edX_display" display_coursenum="2012_Fall_Display" />
\ No newline at end of file \ No newline at end of file
import logging import logging
import re import re
import cgi
from django.conf import settings from django.conf import settings
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
...@@ -95,7 +96,7 @@ def course_wiki_redirect(request, course_id): ...@@ -95,7 +96,7 @@ def course_wiki_redirect(request, course_id):
root, root,
course_slug, course_slug,
title=course_slug, title=course_slug,
content="This is the wiki for **{0}**'s _{1}_.".format(course.org, course.display_name_with_default), content=cgi.escape("This is the wiki for **{0}**'s _{1}_.".format(course.display_org_with_default, course.display_name_with_default)),
user_message="Course page automatically created.", user_message="Course page automatically created.",
user=None, user=None,
ip_address=None, ip_address=None,
......
...@@ -174,9 +174,9 @@ def get_course_about_section(course, section_key): ...@@ -174,9 +174,9 @@ def get_course_about_section(course, section_key):
elif section_key == "title": elif section_key == "title":
return course.display_name_with_default return course.display_name_with_default
elif section_key == "university": elif section_key == "university":
return course.location.org return course.display_org_with_default
elif section_key == "number": elif section_key == "number":
return course.number return course.display_number_with_default
raise KeyError("Invalid about key " + str(section_key)) raise KeyError("Invalid about key " + str(section_key))
......
...@@ -14,13 +14,13 @@ from courseware.courses import course_image_url, get_course_about_section ...@@ -14,13 +14,13 @@ from courseware.courses import course_image_url, get_course_about_section
<div class="inner-wrapper"> <div class="inner-wrapper">
<header class="course-preview"> <header class="course-preview">
<hgroup> <hgroup>
<h2><span class="course-number">${course.number}</span> ${get_course_about_section(course, 'title')}</h2> <h2><span class="course-number">${course.display_number_with_default | h}</span> ${get_course_about_section(course, 'title')}</h2>
</hgroup> </hgroup>
<div class="info-link">&#x2794;</div> <div class="info-link">&#x2794;</div>
</header> </header>
<section class="info"> <section class="info">
<div class="cover-image"> <div class="cover-image">
<img src="${course_image_url(course)}" alt="${course.number} ${get_course_about_section(course, 'title')} Cover Image" /> <img src="${course_image_url(course)}" alt="${course.display_number_with_default | h} ${get_course_about_section(course, 'title')} Cover Image" />
</div> </div>
<div class="desc"> <div class="desc">
<p>${get_course_about_section(course, 'short_description')}</p> <p>${get_course_about_section(course, 'short_description')}</p>
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<script src="${static.url('js/course_info.js')}"></script> <script src="${static.url('js/course_info.js')}"></script>
</%block> </%block>
<%block name="title"><title>${_("About {course.number}").format(course=course)}</title></%block> <%block name="title"><title>${_("About {course.display_number_with_default}").format(course=course) | h}</title></%block>
<section class="course-info"> <section class="course-info">
<header class="course-profile"> <header class="course-profile">
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<section class="intro"> <section class="intro">
<hgroup> <hgroup>
<h1> <h1>
${course.number}: ${get_course_about_section(course, "title")} ${course.display_number_with_default | h}: ${get_course_about_section(course, "title")}
% if not self.theme_enabled(): % if not self.theme_enabled():
<a href="#">${get_course_about_section(course, "university")}</a> <a href="#">${get_course_about_section(course, "university")}</a>
% endif % endif
...@@ -87,13 +87,15 @@ ...@@ -87,13 +87,15 @@
%if show_courseware_link: %if show_courseware_link:
<a href="${course_target}"> <a href="${course_target}">
%endif %endif
<span class="register disabled">${_("You are registered for this course {course.number}").format(course=course)}</span>
<span class="register disabled">${_("You are registered for this course {course.display_number_with_default}").format(course=course) | h}</span>
%if show_courseware_link: %if show_courseware_link:
<strong>${_("View Courseware")}</strong> <strong>${_("View Courseware")}</strong>
</a> </a>
%endif %endif
%else: %else:
<a href="#" class="register">${_("Register for {course.number}").format(course=course)}</a> <a href="#" class="register">${_("Register for {course.display_number_with_default}").format(course=course) | h}</a>
<div id="register_error"></div> <div id="register_error"></div>
%endif %endif
</div> </div>
...@@ -162,7 +164,7 @@ ...@@ -162,7 +164,7 @@
</header> </header>
<ol class="important-dates"> <ol class="important-dates">
<li><div class="icon course-number"></div><p>${_("Course Number")}</p><span class="course-number">${course.number}</span></li> <li><div class="icon course-number"></div><p>${_("Course Number")}</p><span class="course-number">${course.display_number_with_default | h}</span></li>
<li><div class="icon start"></div><p>${_("Classes Start")}</p><span class="start-date">${course.start_date_text}</span></li> <li><div class="icon start"></div><p>${_("Classes Start")}</p><span class="start-date">${course.start_date_text}</span></li>
## We plan to ditch end_date (which is not stored in course metadata), ## We plan to ditch end_date (which is not stored in course metadata),
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<%inherit file="/main.html" /> <%inherit file="/main.html" />
<%namespace name='static' file='/static_content.html'/> <%namespace name='static' file='/static_content.html'/>
<%block name="bodyclass">courseware ${course.css_class}</%block> <%block name="bodyclass">courseware ${course.css_class}</%block>
<%block name="title"><title>${_("{course_number} Courseware").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("{course_number} Courseware").format(course_number=course.display_number_with_default) | h}</title></%block>
<%block name="headextra"> <%block name="headextra">
<%static:css group='course'/> <%static:css group='course'/>
......
...@@ -7,8 +7,7 @@ ...@@ -7,8 +7,7 @@
<%static:css group='course'/> <%static:css group='course'/>
</%block> </%block>
<%block name="title"><title>${_("{course.number} Course Info").format(course=course)}</title></%block> <%block name="title"><title>${_("{course.display_number_with_default} Course Info").format(course=course) | h}</title></%block>
<%include file="/courseware/course_navigation.html" args="active_page='info'" /> <%include file="/courseware/course_navigation.html" args="active_page='info'" />
<%! <%!
from courseware.courses import get_course_info_section from courseware.courses import get_course_info_section
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<%inherit file="../mktg_iframe.html" /> <%inherit file="../mktg_iframe.html" />
<%block name="title"><title>${_("About {course_number}").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("About {course_number}").format(course_number=course.display_number_with_default) | h}</title></%block>
<%block name="bodyclass">view-partial-mktgregister</%block> <%block name="bodyclass">view-partial-mktgregister</%block>
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
<div class="action is-registered">${_("You Are Registered")}</div> <div class="action is-registered">${_("You Are Registered")}</div>
%endif %endif
%elif allow_registration: %elif allow_registration:
<a class="action action-register register" href="#">${_("Register for")} <strong>${course.number}</strong></a> <a class="action action-register register" href="#">${_("Register for")} <strong>${course.display_number_with_default | h}</strong></a>
%else: %else:
<div class="action registration-closed is-disabled">${_("Registration Is Closed")}</div> <div class="action registration-closed is-disabled">${_("Registration Is Closed")}</div>
%endif %endif
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<%namespace name="progress_graph" file="/courseware/progress_graph.js"/> <%namespace name="progress_graph" file="/courseware/progress_graph.js"/>
<%block name="title"><title>${_("{course_number} Progress").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("{course_number} Progress").format(course_number=course.display_number_with_default) | h}</title></%block>
<%! <%!
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<%static:css group='course'/> <%static:css group='course'/>
</%block> </%block>
<%block name="title"><title>${course.number} ${tab['name']}</title></%block> <%block name="title"><title>${course.display_number_with_default | h} ${tab['name']}</title></%block>
<%include file="/courseware/course_navigation.html" args="active_page='static_tab_{0}'.format(tab['url_slug'])" /> <%include file="/courseware/course_navigation.html" args="active_page='static_tab_{0}'.format(tab['url_slug'])" />
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<%static:css group='course'/> <%static:css group='course'/>
</%block> </%block>
<%block name="title"><title>${_("{course.number} Course Info").format(course=course)}</title></%block> <%block name="title"><title>${_("{course.display_number_with_default} Course Info").format(course=course) | h}</title></%block>
<%include file="/courseware/course_navigation.html" args="active_page='syllabus'" /> <%include file="/courseware/course_navigation.html" args="active_page='syllabus'" />
<%! <%!
......
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
% if course.id in show_courseware_links_for: % if course.id in show_courseware_links_for:
<a href="${course_target}" class="cover"> <a href="${course_target}" class="cover">
<img src="${course_image_url(course)}" alt="${_('{course_number} {course_name} Cover Image').format(course_number='${course.number}', course_name='${course.display_name_with_default}')}" /> <img src="${course_image_url(course)}" alt="${_('{course_number} {course_name} Cover Image').format(course_number='${course.number}', course_name='${course.display_name_with_default}') |h}" />
</a> </a>
% else: % else:
<div class="cover"> <div class="cover">
...@@ -162,9 +162,9 @@ ...@@ -162,9 +162,9 @@
<h2 class="university">${get_course_about_section(course, 'university')}</h2> <h2 class="university">${get_course_about_section(course, 'university')}</h2>
<h3> <h3>
% if course.id in show_courseware_links_for: % if course.id in show_courseware_links_for:
<a href="${course_target}">${course.number} ${course.display_name_with_default}</a> <a href="${course_target}">${course.display_number_with_default | h} ${course.display_name_with_default}</a>
% else: % else:
<span>${course.number} ${course.display_name_with_default}</span> <span>${course.display_number_with_default | h} ${course.display_name_with_default}</span>
% endif % endif
</h3> </h3>
</hgroup> </hgroup>
...@@ -202,7 +202,7 @@ ...@@ -202,7 +202,7 @@
link_start='<a href="{url}" id="exam_register_link">'.format(url=testcenter_register_target), link_start='<a href="{url}" id="exam_register_link">'.format(url=testcenter_register_target),
link_end='</a>')}</strong> link_end='</a>')}</strong>
${_("Otherwise {link_start}contact edX at {email}{link_end} for further help.").format( ${_("Otherwise {link_start}contact edX at {email}{link_end} for further help.").format(
link_start='<a class="contact-link" href="mailto:{email}?subject=Pearson VUE Exam - {about} {number}">'.format(email="exam-help@edx.org", about=get_course_about_section(course, 'university'), number=course.number), link_start='<a class="contact-link" href="mailto:{email}?subject=Pearson VUE Exam - {about} {number}">'.format(email="exam-help@edx.org", about=get_course_about_section(course, 'university'), number=course.display_number_with_default),
link_end='</a>', link_end='</a>',
email="exam-help@edx.org", email="exam-help@edx.org",
)} )}
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<%inherit file="../main.html" /> <%inherit file="../main.html" />
<%namespace name='static' file='../static_content.html'/> <%namespace name='static' file='../static_content.html'/>
<%block name="bodyclass">discussion</%block> <%block name="bodyclass">discussion</%block>
<%block name="title"><title>${_("Discussion - {course_number}").format(course_number=course.number) | h}</title></%block> <%block name="title"><title>${_("Discussion - {course_number}").format(course_number=course.display_number_with_default) | h}</title></%block>
<%block name="headextra"> <%block name="headextra">
<%static:css group='course'/> <%static:css group='course'/>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<%inherit file="../main.html" /> <%inherit file="../main.html" />
<%namespace name='static' file='../static_content.html'/> <%namespace name='static' file='../static_content.html'/>
<%block name="bodyclass">discussion</%block> <%block name="bodyclass">discussion</%block>
<%block name="title"><title>${_("Discussion - {course_number}").format(course_number=course.number) | h}</title></%block> <%block name="title"><title>${_("Discussion - {course_number}").format(course_number=course.display_number_with_default) | h}</title></%block>
<%block name="headextra"> <%block name="headextra">
<%static:css group='course'/> <%static:css group='course'/>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<%inherit file="../main.html" /> <%inherit file="../main.html" />
<%namespace name='static' file='../static_content.html'/> <%namespace name='static' file='../static_content.html'/>
<%block name="bodyclass">discussion</%block> <%block name="bodyclass">discussion</%block>
<%block name="title"><title>${_("Discussion - {course_number}").format(course_number=course.number) | h}</title></%block> <%block name="title"><title>${_("Discussion - {course_number}").format(course_number=course.display_number_with_default) | h}</title></%block>
<%block name="headextra"> <%block name="headextra">
<%static:css group='course'/> <%static:css group='course'/>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<%static:css group='course'/> <%static:css group='course'/>
</%block> </%block>
<%block name="title"><title>${_("{course_number} Staff Grading").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("{course_number} Staff Grading").format(course_number=course.display_number_with_default) | h}</title></%block>
<%include file="/courseware/course_navigation.html" args="active_page='staff_grading'" /> <%include file="/courseware/course_navigation.html" args="active_page='staff_grading'" />
......
...@@ -50,7 +50,7 @@ site_status_msg = get_site_status_msg(course_id) ...@@ -50,7 +50,7 @@ site_status_msg = get_site_status_msg(course_id)
</h1> </h1>
% if course: % if course:
<h2><span class="provider">${course.org}:</span> ${course.number} ${course.display_name_with_default}</h2> <h2><span class="provider">${course.display_org_with_default | h}:</span> ${course.display_number_with_default | h} ${course.display_name_with_default}</h2>
% endif % endif
% if user.is_authenticated(): % if user.is_authenticated():
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<%static:css group='course'/> <%static:css group='course'/>
</%block> </%block>
<%block name="title"><title>${_("{course_number} Combined Notifications").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("{course_number} Combined Notifications").format(course_number=course.display_number_with_default) | h}</title></%block>
<%include file="/courseware/course_navigation.html" args="active_page='open_ended'" /> <%include file="/courseware/course_navigation.html" args="active_page='open_ended'" />
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<%static:css group='course'/> <%static:css group='course'/>
</%block> </%block>
<%block name="title"><title>${_("{course_number} Flagged Open Ended Problems").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("{course_number} Flagged Open Ended Problems").format(course_number=course.display_number_with_default) | h}</title></%block>
<%include file="/courseware/course_navigation.html" args="active_page='open_ended_flagged_problems'" /> <%include file="/courseware/course_navigation.html" args="active_page='open_ended_flagged_problems'" />
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<%static:css group='course'/> <%static:css group='course'/>
</%block> </%block>
<%block name="title"><title>${_("{course_number} Open Ended Problems").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("{course_number} Open Ended Problems").format(course_number=course.display_number_with_default) | h}</title></%block>
<%include file="/courseware/course_navigation.html" args="active_page='open_ended_problems'" /> <%include file="/courseware/course_navigation.html" args="active_page='open_ended_problems'" />
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<%inherit file="main.html" /> <%inherit file="main.html" />
<%namespace name='static' file='static_content.html'/> <%namespace name='static' file='static_content.html'/>
<%block name="title"><title>${_('{course_number} Textbook').format(course_number=course.number)}</title> <%block name="title"><title>${_('{course_number} Textbook').format(course_number=course.display_number_with_default) | h}</title>
</%block> </%block>
<%block name="headextra"> <%block name="headextra">
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<%block name="title"> <%block name="title">
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>${_('{course_number} Textbook').format(course_number=course.number)}</title> <title>${_('{course_number} Textbook').format(course_number=course.display_number_with_default) | h}</title>
</%block> </%block>
<%block name="headextra"> <%block name="headextra">
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<%inherit file="main.html" /> <%inherit file="main.html" />
<%namespace name='static' file='static_content.html'/> <%namespace name='static' file='static_content.html'/>
<%block name="title"><title>${_("{course_number} Textbook").format(course_number=course.number)}</title></%block> <%block name="title"><title>${_("{course_number} Textbook").format(course_number=course.display_number_with_default) | h}</title></%block>
<%block name="headextra"> <%block name="headextra">
<%static:css group='course'/> <%static:css group='course'/>
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
<section class="introduction"> <section class="introduction">
<header> <header>
<hgroup> <hgroup>
<h2><a href="${reverse('dashboard')}">${get_course_about_section(course, 'university')} ${course.number} ${course.display_name_with_default}</a></h2> <h2><a href="${reverse('dashboard')}">${get_course_about_section(course, 'university')} ${course.display_number_with_default | h} ${course.display_name_with_default | h}</a></h2>
% if registration: % if registration:
<h1>${_('Your Pearson VUE Proctored Exam Registration')}</h1> <h1>${_('Your Pearson VUE Proctored Exam Registration')}</h1>
...@@ -442,7 +442,7 @@ ...@@ -442,7 +442,7 @@
% endif % endif
<div class="details details-course"> <div class="details details-course">
<h4>${_("About {university} {course_number}").format(university=get_course_about_section(course, 'university'), course_number=course.number)}</h4> <h4>${_("About {university} {course_number}").format(university=get_course_about_section(course, 'university'), course_number=course.course.display_number_with_default) | h}</h4>
<p> <p>
% if course.has_ended(): % if course.has_ended():
<span class="label">${_('Course Completed:')}</span> <span class="value">${course.end_date_text}</span> <span class="label">${_('Course Completed:')}</span> <span class="value">${course.end_date_text}</span>
......
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