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
7cf8aa25
Commit
7cf8aa25
authored
Jan 05, 2017
by
Bill DeRusha
Committed by
Bill DeRusha
Jan 09, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add language typeahead to new course form
ECOM-6636
parent
c41456c5
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
88 additions
and
0 deletions
+88
-0
course_discovery/apps/ietf_language_tags/lookups.py
+16
-0
course_discovery/apps/ietf_language_tags/tests/test_lookups.py
+45
-0
course_discovery/apps/ietf_language_tags/urls.py
+10
-0
course_discovery/apps/publisher/forms.py
+14
-0
course_discovery/templates/publisher/add_course_form.html
+1
-0
course_discovery/templates/publisher/base.html
+1
-0
course_discovery/urls.py
+1
-0
No files found.
course_discovery/apps/ietf_language_tags/lookups.py
0 → 100644
View file @
7cf8aa25
from
django.db.models
import
Q
from
dal
import
autocomplete
from
course_discovery.apps.ietf_language_tags.models
import
LanguageTag
class
LanguageTagAutocomplete
(
autocomplete
.
Select2QuerySetView
):
def
get_queryset
(
self
):
if
self
.
request
.
user
.
is_authenticated
():
qs
=
LanguageTag
.
objects
.
all
()
if
self
.
q
:
qs
=
qs
.
filter
(
Q
(
code__icontains
=
self
.
q
)
|
Q
(
name__icontains
=
self
.
q
))
return
qs
return
[]
course_discovery/apps/ietf_language_tags/tests/test_lookups.py
0 → 100644
View file @
7cf8aa25
import
json
import
ddt
from
django.core.urlresolvers
import
reverse
from
django.test
import
TestCase
from
course_discovery.apps.core.tests.factories
import
UserFactory
,
USER_PASSWORD
from
course_discovery.apps.ietf_language_tags.models
import
LanguageTag
# pylint: disable=no-member
@ddt.ddt
class
AutocompleteTests
(
TestCase
):
""" Tests for autocomplete lookups."""
def
setUp
(
self
):
super
(
AutocompleteTests
,
self
)
.
setUp
()
self
.
user
=
UserFactory
(
is_staff
=
True
)
self
.
client
.
login
(
username
=
self
.
user
.
username
,
password
=
USER_PASSWORD
)
self
.
language_tag_test
=
LanguageTag
.
objects
.
create
(
code
=
'xx-xx'
,
name
=
'Test LanguageTag'
)
@ddt.data
(
'xx'
,
'languagetag'
)
def
test_language_tag_autocomplete
(
self
,
query
):
""" Verify course autocomplete returns the queried data. """
response
=
self
.
client
.
get
(
reverse
(
'language_tags:language-tag-autocomplete'
)
+
'?q={query}'
.
format
(
query
=
query
)
)
data
=
json
.
loads
(
response
.
content
.
decode
(
'utf-8'
))
self
.
assertEqual
(
data
[
'results'
][
0
][
'text'
],
str
(
self
.
language_tag_test
))
def
test_language_tag_autocomplete_no_query
(
self
):
""" Verify course autocomplete returns all the data. """
response
=
self
.
client
.
get
(
reverse
(
'language_tags:language-tag-autocomplete'
))
data
=
json
.
loads
(
response
.
content
.
decode
(
'utf-8'
))
self
.
assertEqual
(
response
.
status_code
,
200
)
# Lookup returns top 10 results by default
self
.
assertEqual
(
len
(
data
[
'results'
]),
10
)
def
test_language_tag_autocomplete_no_data
(
self
):
""" Verify course autocomplete returns the data. """
response
=
self
.
client
.
get
(
reverse
(
'language_tags:language-tag-autocomplete'
)
+
'?q={query}'
.
format
(
query
=
'no results query'
)
)
data
=
json
.
loads
(
response
.
content
.
decode
(
'utf-8'
))
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
data
[
'results'
]),
0
)
course_discovery/apps/ietf_language_tags/urls.py
0 → 100644
View file @
7cf8aa25
"""
URLs for autocomplete lookups.
"""
from
django.conf.urls
import
url
from
course_discovery.apps.ietf_language_tags.lookups
import
LanguageTagAutocomplete
urlpatterns
=
[
url
(
r'^language-tag-autocomplete/$'
,
LanguageTagAutocomplete
.
as_view
(),
name
=
'language-tag-autocomplete'
,),
]
course_discovery/apps/publisher/forms.py
View file @
7cf8aa25
"""
Course publisher forms.
"""
from
dal
import
autocomplete
from
django
import
forms
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
from
course_discovery.apps.ietf_language_tags.models
import
LanguageTag
from
course_discovery.apps.publisher.models
import
Course
,
CourseRun
,
Seat
,
User
,
OrganizationExtension
...
...
@@ -150,6 +152,18 @@ class CustomCourseRunForm(CourseRunForm):
required
=
True
)
transcript_languages
=
forms
.
ModelMultipleChoiceField
(
queryset
=
LanguageTag
.
objects
.
all
(),
widget
=
autocomplete
.
ModelSelect2Multiple
(
url
=
'language_tags:language-tag-autocomplete'
,
attrs
=
{
'data-minimum-input-length'
:
2
}
),
required
=
False
,
)
class
Meta
(
CourseRunForm
.
Meta
):
fields
=
(
'length'
,
'transcript_languages'
,
'language'
,
'min_effort'
,
'max_effort'
,
...
...
course_discovery/templates/publisher/add_course_form.html
View file @
7cf8aa25
...
...
@@ -458,4 +458,5 @@
{% block extra_js %}
<script
src=
"{% static 'js/publisher/publisher.js' %}"
></script>
<script
src=
"{% static 'js/publisher/seat-type-change.js' %}"
></script>
{{ run_form.media }}
{% endblock %}
course_discovery/templates/publisher/base.html
View file @
7cf8aa25
...
...
@@ -49,6 +49,7 @@
{% compress js %}
<script
src=
"{% static 'bower_components/jquery/dist/jquery.js' %}"
></script>
<script
src=
"{% static 'admin/js/jquery.init.js' %}"
></script>
<script
src=
"{% static 'bower_components/js-cookie/src/js.cookie.js' %}"
></script>
<script
src=
"{% static 'bower_components/underscore/underscore.js' %}"
></script>
<script
src=
"{% static 'bower_components/moment/moment.js' %}"
></script>
...
...
course_discovery/urls.py
View file @
7cf8aa25
...
...
@@ -42,6 +42,7 @@ urlpatterns = auth_urlpatterns + [
'course_discovery.apps.publisher_comments.urls'
,
namespace
=
'publisher_comments'
)
),
url
(
r'^language-tags/'
,
include
(
'course_discovery.apps.ietf_language_tags.urls'
,
namespace
=
'language_tags'
)),
url
(
r'^comments/'
,
include
(
'django_comments.urls'
)),
url
(
r'^i18n/'
,
include
(
'django.conf.urls.i18n'
)),
url
(
r'^jsi18n/$'
,
'django.views.i18n.javascript_catalog'
,
name
=
'javascript-catalog'
),
...
...
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