Commit 963a20c2 by Clinton Blackburn

Program admin cleanup

- Displaying included course runs on individual lines
- Moved import to correct position

ECOM-6238
parent df21d5db
from django.contrib import admin, messages from django.contrib import admin, messages
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from course_discovery.apps.course_metadata.forms import ProgramAdminForm from course_discovery.apps.course_metadata.forms import ProgramAdminForm
from course_discovery.apps.course_metadata.models import * # pylint: disable=wildcard-import from course_discovery.apps.course_metadata.models import * # pylint: disable=wildcard-import
...@@ -88,9 +90,9 @@ class ProgramAdmin(admin.ModelAdmin): ...@@ -88,9 +90,9 @@ class ProgramAdmin(admin.ModelAdmin):
save_error = None save_error = None
def custom_course_runs_display(self, obj): def custom_course_runs_display(self, obj):
return ", ".join([str(run) for run in obj.course_runs]) return mark_safe('<br>'.join([str(run) for run in obj.course_runs]))
custom_course_runs_display.short_description = "Included course runs" custom_course_runs_display.short_description = _('Included course runs')
def response_add(self, request, obj, post_url_continue=None): def response_add(self, request, obj, post_url_continue=None):
if self.save_error: if self.save_error:
......
from dal import widgets from dal import autocomplete, widgets
from django import forms from django import forms
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.forms.utils import ErrorList from django.forms.utils import ErrorList
...@@ -16,7 +16,6 @@ class HackDjangoAutocompleteMixin(object): ...@@ -16,7 +16,6 @@ class HackDjangoAutocompleteMixin(object):
# fact an issue? # fact an issue?
class QuerySetSelectMixin2(widgets.WidgetMixin): class QuerySetSelectMixin2(widgets.WidgetMixin):
def filter_choices_to_render(self, selected_choices): def filter_choices_to_render(self, selected_choices):
# preserve ordering of selected_choices in queryset # preserve ordering of selected_choices in queryset
# https://codybonney.com/creating-a-queryset-from-a-list-while-preserving-order-using-django/ # https://codybonney.com/creating-a-queryset-from-a-list-while-preserving-order-using-django/
...@@ -33,7 +32,7 @@ class ProgramAdminForm(HackDjangoAutocompleteMixin, forms.ModelForm): ...@@ -33,7 +32,7 @@ class ProgramAdminForm(HackDjangoAutocompleteMixin, forms.ModelForm):
class Meta: class Meta:
model = Program model = Program
fields = '__all__' fields = '__all__'
from dal import autocomplete
widgets = { widgets = {
'courses': autocomplete.ModelSelect2Multiple( 'courses': autocomplete.ModelSelect2Multiple(
url='admin_metadata:course-autocomplete', url='admin_metadata:course-autocomplete',
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-10-28 14:40+0500\n" "POT-Creation-Date: 2016-10-31 11:33-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -196,6 +196,10 @@ msgstr "" ...@@ -196,6 +196,10 @@ msgstr ""
msgid "Partners" msgid "Partners"
msgstr "" msgstr ""
#: apps/course_metadata/admin.py
msgid "Included course runs"
msgstr ""
#: apps/course_metadata/choices.py apps/publisher/models.py #: apps/course_metadata/choices.py apps/publisher/models.py
msgid "Published" msgid "Published"
msgstr "" msgstr ""
...@@ -620,7 +624,7 @@ msgid "" ...@@ -620,7 +624,7 @@ msgid ""
"trademarks or trademarks of %(link_start)sedX Inc.%(link_end)s" "trademarks or trademarks of %(link_start)sedX Inc.%(link_end)s"
msgstr "" msgstr ""
#: templates/footer.html templates/footer.html.py #: templates/footer.html
msgid "Powered by Open edX" msgid "Powered by Open edX"
msgstr "" msgstr ""
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-10-28 14:40+0500\n" "POT-Creation-Date: 2016-10-31 11:33-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-10-28 14:40+0500\n" "POT-Creation-Date: 2016-10-31 11:33-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -237,6 +237,10 @@ msgstr "Pärtnér Ⱡ'σяєм ιρѕυм #" ...@@ -237,6 +237,10 @@ msgstr "Pärtnér Ⱡ'σяєм ιρѕυм #"
msgid "Partners" msgid "Partners"
msgstr "Pärtnérs Ⱡ'σяєм ιρѕυм ∂#" msgstr "Pärtnérs Ⱡ'σяєм ιρѕυм ∂#"
#: apps/course_metadata/admin.py
msgid "Included course runs"
msgstr "Ìnçlüdéd çöürsé rüns Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт, #"
#: apps/course_metadata/choices.py apps/publisher/models.py #: apps/course_metadata/choices.py apps/publisher/models.py
msgid "Published" msgid "Published"
msgstr "Püßlïshéd Ⱡ'σяєм ιρѕυм ∂σł#" msgstr "Püßlïshéd Ⱡ'σяєм ιρѕυм ∂σł#"
...@@ -741,7 +745,7 @@ msgstr "" ...@@ -741,7 +745,7 @@ msgstr ""
"trädémärks ör trädémärks öf %(link_start)sédX Ìnç.%(link_end)s Ⱡ'σяєм ιρѕυм " "trädémärks ör trädémärks öf %(link_start)sédX Ìnç.%(link_end)s Ⱡ'σяєм ιρѕυм "
"∂σł#" "∂σł#"
#: templates/footer.html templates/footer.html.py #: templates/footer.html
msgid "Powered by Open edX" msgid "Powered by Open edX"
msgstr "Pöwéréd ßý Öpén édX Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,#" msgstr "Pöwéréd ßý Öpén édX Ⱡ'σяєм ιρѕυм ∂σłσя ѕιт αмєт,#"
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-10-28 14:40+0500\n" "POT-Creation-Date: 2016-10-31 11:33-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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