Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
07aa3374
Commit
07aa3374
authored
Jan 23, 2017
by
Waheed Ahmed
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed autocomplete queryset for LanguageTag.
ECOM-6885
parent
f5f9a83e
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
42 additions
and
5 deletions
+42
-5
course_discovery/apps/publisher/forms.py
+4
-2
course_discovery/apps/publisher/mixins.py
+18
-0
course_discovery/apps/publisher/tests/test_views.py
+14
-0
course_discovery/apps/publisher/views.py
+2
-3
course_discovery/templates/publisher/course_run_form.html
+4
-0
No files found.
course_discovery/apps/publisher/forms.py
View file @
07aa3374
...
...
@@ -8,6 +8,7 @@ from django.utils.translation import ugettext_lazy as _
from
course_discovery.apps.course_metadata.choices
import
CourseRunPacing
from
course_discovery.apps.course_metadata.models
import
Person
,
Organization
,
Subject
from
course_discovery.apps.ietf_language_tags.models
import
LanguageTag
from
course_discovery.apps.publisher.mixins
import
LanguageModelSelect2Multiple
from
course_discovery.apps.publisher.models
import
(
Course
,
CourseRun
,
Seat
,
User
,
OrganizationExtension
,
OrganizationUserRole
,
CourseUserRole
)
...
...
@@ -174,7 +175,7 @@ class CustomCourseRunForm(CourseRunForm):
transcript_languages
=
forms
.
ModelMultipleChoiceField
(
queryset
=
LanguageTag
.
objects
.
all
(),
widget
=
autocomplete
.
ModelSelect2Multiple
(
widget
=
Language
ModelSelect2Multiple
(
url
=
'language_tags:language-tag-autocomplete'
,
attrs
=
{
'data-minimum-input-length'
:
2
...
...
@@ -202,7 +203,8 @@ class CustomCourseRunForm(CourseRunForm):
fields
=
(
'length'
,
'transcript_languages'
,
'language'
,
'min_effort'
,
'max_effort'
,
'contacted_partner_manager'
,
'target_content'
,
'pacing_type'
,
'video_language'
,
'staff'
,
'start'
,
'end'
,
'is_xseries'
,
'xseries_name'
,
'is_micromasters'
,
'micromasters_name'
,
'staff'
,
'start'
,
'end'
,
'is_xseries'
,
'xseries_name'
,
'is_micromasters'
,
'micromasters_name'
,
'lms_course_id'
,
)
def
save
(
self
,
commit
=
True
,
course
=
None
,
changed_by
=
None
):
# pylint: disable=arguments-differ
...
...
course_discovery/apps/publisher/mixins.py
View file @
07aa3374
from
functools
import
wraps
from
dal
import
autocomplete
from
django.contrib.auth.decorators
import
login_required
from
django.http
import
HttpResponseForbidden
,
HttpResponseRedirect
from
django.utils.decorators
import
method_decorator
...
...
@@ -56,6 +58,7 @@ class FormValidMixin(object):
publisher_object
=
form
.
save
(
commit
=
False
)
publisher_object
.
changed_by
=
user
publisher_object
.
save
()
form
.
save_m2m
()
if
self
.
change_state
:
publisher_object
.
change_state
(
user
=
user
)
...
...
@@ -108,3 +111,18 @@ class PublisherUserRequiredMixin(object):
@method_decorator
(
publisher_user_required
)
def
dispatch
(
self
,
request
,
*
args
,
**
kwargs
):
return
super
(
PublisherUserRequiredMixin
,
self
)
.
dispatch
(
request
,
*
args
,
**
kwargs
)
class
LanguageModelSelect2Multiple
(
autocomplete
.
ModelSelect2Multiple
):
"""
QuerySet support for LanguageTag choices.
django.autocomplete queryset expects id field to filter choices but LanguageTag
does not have id field in it. It has code as primary key instead of id.
"""
def
filter_choices_to_render
(
self
,
selected_choices
):
# pylint: disable=no-member
self
.
choices
.
queryset
=
self
.
choices
.
queryset
.
filter
(
code__in
=
[
c
for
c
in
selected_choices
if
c
]
)
course_discovery/apps/publisher/tests/test_views.py
View file @
07aa3374
...
...
@@ -22,6 +22,7 @@ from course_discovery.apps.core.tests.factories import UserFactory, USER_PASSWOR
from
course_discovery.apps.core.tests.helpers
import
make_image_file
from
course_discovery.apps.course_metadata.tests
import
toggle_switch
from
course_discovery.apps.course_metadata.tests.factories
import
OrganizationFactory
from
course_discovery.apps.ietf_language_tags.models
import
LanguageTag
from
course_discovery.apps.publisher.choices
import
PublisherUserRole
from
course_discovery.apps.publisher.constants
import
(
INTERNAL_USER_GROUP_NAME
,
ADMIN_GROUP_NAME
,
PARTNER_COORDINATOR_GROUP_NAME
,
REVIEWER_GROUP_NAME
...
...
@@ -1723,3 +1724,16 @@ class CourseRunEditViewTests(TestCase):
self
.
user
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
ADMIN_GROUP_NAME
))
response
=
self
.
client
.
get
(
self
.
edit_page_url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
def
test_edit_page_with_language_tags
(
self
):
"""
Verify that publisher user can access course run edit page.
"""
self
.
user
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
ADMIN_GROUP_NAME
))
language_tag
=
LanguageTag
(
code
=
'te-st'
,
name
=
'Test Language'
)
language_tag
.
save
()
self
.
course_run
.
transcript_languages
.
add
(
language_tag
)
self
.
course_run
.
save
()
response
=
self
.
client
.
get
(
self
.
edit_page_url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
course_discovery/apps/publisher/views.py
View file @
07aa3374
...
...
@@ -20,8 +20,7 @@ from course_discovery.apps.core.models import User
from
course_discovery.apps.publisher.choices
import
PublisherUserRole
from
course_discovery.apps.publisher.emails
import
send_email_for_course_creation
from
course_discovery.apps.publisher.forms
import
(
CourseForm
,
CourseRunForm
,
SeatForm
,
CustomCourseForm
,
CustomCourseRunForm
,
CustomSeatForm
,
UpdateCourseForm
CourseForm
,
SeatForm
,
CustomCourseForm
,
CustomCourseRunForm
,
CustomSeatForm
,
UpdateCourseForm
)
from
course_discovery.apps.publisher
import
mixins
from
course_discovery.apps.publisher.models
import
(
...
...
@@ -393,7 +392,7 @@ class CreateCourseRunView(mixins.LoginRequiredMixin, CreateView):
class
CourseRunEditView
(
mixins
.
LoginRequiredMixin
,
mixins
.
PublisherPermissionMixin
,
mixins
.
FormValidMixin
,
UpdateView
):
""" Course Run Edit View."""
model
=
CourseRun
form_class
=
CourseRunForm
form_class
=
C
ustomC
ourseRunForm
permission
=
OrganizationExtension
.
EDIT_COURSE_RUN
template_name
=
'publisher/course_run_form.html'
success_url
=
'publisher:publisher_course_runs_edit'
...
...
course_discovery/templates/publisher/course_run_form.html
View file @
07aa3374
...
...
@@ -43,3 +43,7 @@
</div>
</div>
{% endblock %}
{% block extra_js %}
{{ form.media }}
{% endblock %}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment