Commit c7cdd3bf by Waheed Ahmed

User autocomplete for staff in django admin.

ECOM-7357
parent 0d8026f6
...@@ -73,11 +73,15 @@ class PersonAutocomplete(LoginRequiredMixin, autocomplete.Select2QuerySetView): ...@@ -73,11 +73,15 @@ class PersonAutocomplete(LoginRequiredMixin, autocomplete.Select2QuerySetView):
return [] return []
def get_result_label(self, result): def get_result_label(self, result):
context = { http_referer = self.request.META.get('HTTP_REFERER')
'uuid': result.uuid, if http_referer and '/admin/' in http_referer:
'profile_image': result.get_profile_image_url, return super(PersonAutocomplete, self).get_result_label(result)
'full_name': result.full_name, else:
'position': result.position if hasattr(result, 'position') else None context = {
} 'uuid': result.uuid,
'profile_image': result.get_profile_image_url,
return render_to_string('publisher/_personLookup.html', context=context) 'full_name': result.full_name,
'position': result.position if hasattr(result, 'position') else None
}
return render_to_string('publisher/_personLookup.html', context=context)
...@@ -232,3 +232,18 @@ class AutocompleteTests(TestCase): ...@@ -232,3 +232,18 @@ class AutocompleteTests(TestCase):
status_code=302, status_code=302,
target_status_code=302 target_status_code=302
) )
def test_instructor_autocomplete_from_django_admin(self):
""" Verify instructor autocomplete return default data from django admin. """
admin_user = UserFactory(is_staff=True, is_superuser=True)
self.client.logout()
self.client.login(username=admin_user.username, password=USER_PASSWORD)
response = self.client.get(
reverse('admin_metadata:person-autocomplete') + '?q={q}'.format(q='ins'),
HTTP_REFERER=reverse('admin:publisher_courserun_add')
)
self.assertEqual(response.status_code, 200)
data = json.loads(response.content.decode('utf-8'))
expected_results = [{'id': instructor.id, 'text': str(instructor)} for instructor in self.instructors]
self.assertEqual(data.get('results'), expected_results)
...@@ -396,6 +396,15 @@ class CourseRunAdminForm(forms.ModelForm): ...@@ -396,6 +396,15 @@ class CourseRunAdminForm(forms.ModelForm):
class Meta: class Meta:
model = CourseRun model = CourseRun
fields = '__all__' fields = '__all__'
widgets = {
'staff': autocomplete.ModelSelect2Multiple(
url='admin_metadata:person-autocomplete',
attrs={
'data-minimum-input-length': 3,
'data-html': 'false',
}
),
}
def clean_lms_course_id(self): def clean_lms_course_id(self):
lms_course_id = self.cleaned_data['lms_course_id'] lms_course_id = self.cleaned_data['lms_course_id']
......
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