Commit 3951f428 by tasawernawaz Committed by Tasawer Nawaz

Update the backend for UUID

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