-
Notifications
You must be signed in to change notification settings - Fork 171
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
user dropdown typeahead added ECOM-6835
- Loading branch information
Showing
7 changed files
with
117 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
from dal import autocomplete | ||
from course_discovery.apps.core.models import User | ||
|
||
|
||
class UserAutocomplete(autocomplete.Select2QuerySetView): | ||
def get_queryset(self): | ||
if self.request.user.is_authenticated() and self.request.user.is_staff: | ||
qs = User.objects.all() | ||
if self.q: | ||
qs = qs.filter(username__icontains=self.q) | ||
|
||
return qs | ||
|
||
return [] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import json | ||
|
||
from django.core.urlresolvers import reverse | ||
from django.test import TestCase | ||
|
||
from course_discovery.apps.core.tests.factories import UserFactory, USER_PASSWORD | ||
|
||
|
||
class UserAutocompleteTests(TestCase): | ||
""" Tests for user autocomplete lookups.""" | ||
|
||
def setUp(self): | ||
super(UserAutocompleteTests, self).setUp() | ||
self.user = UserFactory(username='test_name', is_staff=True) | ||
self.client.login(username=self.user.username, password=USER_PASSWORD) | ||
self.users_list = UserFactory.create_batch(5) | ||
|
||
def test_user_autocomplete(self): | ||
""" Verify user autocomplete returns the data. """ | ||
response = self.client.get( | ||
reverse('admin_core:user-autocomplete') + '?q={user}'.format(user='user') | ||
) | ||
self._assert_response(response, 5) | ||
|
||
# update first user's username | ||
self.users_list[0].username = 'dummy_name' | ||
self.users_list[0].save() | ||
response = self.client.get( | ||
reverse('admin_core:user-autocomplete') + '?q={user}'.format(user='dummy') | ||
) | ||
self._assert_response(response, 1) | ||
|
||
def test_course_autocomplete_un_authorize_user(self): | ||
""" Verify user autocomplete returns empty list for un-authorized users. """ | ||
self.client.logout() | ||
self.user.is_staff = False | ||
self.user.save() | ||
self.client.login(username=self.user.username, password=USER_PASSWORD) | ||
response = self.client.get(reverse('admin_core:user-autocomplete')) | ||
self._assert_response(response, 0) | ||
|
||
def _assert_response(self, response, expected_length): | ||
""" Assert autocomplete response. """ | ||
self.assertEqual(response.status_code, 200) | ||
data = json.loads(response.content.decode('utf-8')) | ||
self.assertEqual(len(data['results']), expected_length) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
""" | ||
URLs for the admin autocomplete lookups. | ||
""" | ||
from django.conf.urls import url | ||
|
||
from course_discovery.apps.core.lookups import UserAutocomplete | ||
|
||
urlpatterns = [ | ||
url(r'^user-autocomplete/$', UserAutocomplete.as_view(), name='user-autocomplete',), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,33 @@ | ||
from django.contrib import admin | ||
from guardian.admin import GuardedModelAdmin | ||
|
||
from course_discovery.apps.publisher.forms import UserAttributesAdminForm, OrganizationUserRoleForm, CourseUserRoleForm | ||
from course_discovery.apps.publisher.models import ( | ||
Course, CourseRun, CourseUserRole, OrganizationExtension, OrganizationUserRole, Seat, State, UserAttributes | ||
) | ||
|
||
|
||
admin.site.register(Course) | ||
admin.site.register(CourseRun) | ||
admin.site.register(OrganizationUserRole) | ||
admin.site.register(Seat) | ||
admin.site.register(State) | ||
admin.site.register(UserAttributes) | ||
|
||
|
||
@admin.register(CourseUserRole) | ||
class CourseUserRoleAdmin(admin.ModelAdmin): | ||
raw_id_fields = ('user',) | ||
form = CourseUserRoleForm | ||
|
||
|
||
@admin.register(OrganizationExtension) | ||
class OrganizationExtensionAdmin(GuardedModelAdmin): | ||
pass | ||
|
||
|
||
@admin.register(UserAttributes) | ||
class UserAttributesAdmin(admin.ModelAdmin): | ||
form = UserAttributesAdminForm | ||
|
||
|
||
@admin.register(OrganizationUserRole) | ||
class OrganizationUserRoleAdmin(admin.ModelAdmin): | ||
form = OrganizationUserRoleForm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters