Commit 3951f428 by tasawernawaz Committed by Tasawer Nawaz

Update the backend for UUID

ECOM-7185
parent bad6e829
import uuid
from dal import autocomplete
from django.db.models import Q
from django.template.loader import render_to_string
......@@ -57,11 +58,17 @@ class VideoAutocomplete(autocomplete.Select2QuerySetView):
class PersonAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
if self.request.user.is_authenticated() and self.request.user.is_staff:
qs = Person.objects.all()
queryset = Person.objects.all()
if self.q:
qs = qs.filter(Q(given_name__icontains=self.q) | Q(family_name__icontains=self.q))
return qs
qs = queryset.filter(Q(given_name__icontains=self.q) | Q(family_name__icontains=self.q))
if not qs:
try:
q_uuid = uuid.UUID(self.q).hex
qs = queryset.filter(uuid=q_uuid)
except ValueError:
pass
return qs
return []
......
......@@ -167,16 +167,19 @@ class AutocompleteTests(TestCase):
position_title = 'professor'
PositionFactory.create(person=self.instructors[0], title=position_title, organization=self.organizations[0])
response = self.client.get(reverse('admin_metadata:person-autocomplete'))
response = self.client.get(
reverse('admin_metadata:person-autocomplete') + '?q={q}'.format(q='ins')
)
self.assertContains(response, '<p>{position} at {organization}</p>'.format(
position=position_title,
organization=self.organizations[0].name))
def test_instructor_image_in_label(self):
""" Verify that instructor label contains profile image url.
"""
response = self.client.get(reverse('admin_metadata:person-autocomplete'))
""" Verify that instructor label contains profile image url."""
response = self.client.get(
reverse('admin_metadata:person-autocomplete') + '?q={q}'.format(q='ins')
)
self.assertContains(response, self.instructors[0].get_profile_image_url)
self.assertContains(response, self.instructors[1].get_profile_image_url)
......@@ -185,3 +188,19 @@ class AutocompleteTests(TestCase):
self.assertEqual(response.status_code, 200)
data = json.loads(response.content.decode('utf-8'))
self.assertEqual(len(data['results']), expected_length)
def test_instructor_autocomplete_with_uuid(self):
""" Verify instructor autocomplete returns the data with valid uuid. """
uuid = self.instructors[0].uuid
response = self.client.get(
reverse('admin_metadata:person-autocomplete') + '?q={q}'.format(q=uuid)
)
self._assert_response(response, 1)
def test_instructor_autocomplete_with_invalid_uuid(self):
""" Verify instructor autocomplete returns empty list without giving error. """
uuid = 'invalid-uuid'
response = self.client.get(
reverse('admin_metadata:person-autocomplete') + '?q={q}'.format(q=uuid)
)
self._assert_response(response, 0)
......@@ -180,12 +180,12 @@ class OrganizationGroupUserViewTests(TestCase):
expected_results = [
{
"id": self.org_user2.id,
"full_name": self.org_user2.username
},
{
"id": self.org_user1.id,
"full_name": self.org_user1.full_name
},
{
"id": self.org_user2.id,
"full_name": self.org_user2.username
}
]
......
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