Add a limit parameter to the completion view, and pass a limit of 20
results in the javascript.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
data = json.loads(response.content)
self.assertEquals(len(data), 1)
self.assertEquals(data[0]['fields']['email'], 'test2@example.com')
data = json.loads(response.content)
self.assertEquals(len(data), 1)
self.assertEquals(data[0]['fields']['email'], 'test2@example.com')
+
+ def testCompleteLimit(self):
+ for i in range(3,10):
+ person = Person(email = 'test%d@example.com' % i)
+ person.save()
+ response = self.client.get('/submitter/', {'q': 'test', 'l': 5})
+ self.assertEquals(response.status_code, 200)
+ data = json.loads(response.content)
+ self.assertEquals(len(data), 5)
def submitter_complete(request):
search = request.GET.get('q', '')
def submitter_complete(request):
search = request.GET.get('q', '')
+ limit = request.GET.get('l', None)
response = HttpResponse(mimetype = "text/plain")
response = HttpResponse(mimetype = "text/plain")
- if len(search) > 3:
- queryset = Person.objects.filter(Q(name__icontains = search) |
- Q(email__icontains = search))
- json_serializer = serializers.get_serializer("json")()
- json_serializer.serialize(queryset, ensure_ascii=False, stream=response)
+
+ if len(search) <= 3:
+ return response
+
+ queryset = Person.objects.filter(Q(name__icontains = search) |
+ Q(email__icontains = search))
+ if limit is not None:
+ try:
+ limit = int(limit)
+ except ValueError:
+ limit = None
+
+ if limit is not None and limit > 0:
+ queryset = queryset[:limit]
+
+ json_serializer = serializers.get_serializer("json")()
+ json_serializer.serialize(queryset, ensure_ascii=False, stream=response)
return response
help_pages = {'': 'index.html',
return response
help_pages = {'': 'index.html',
function submitter_field_change(field)
{
function submitter_field_change(field)
{
var value = field.value;
if (value.length < 4) {
return;
var value = field.value;
if (value.length < 4) {
return;
- var url = '{% url patchwork.views.submitter_complete %}?q=' + value;
+ var url = '{% url patchwork.views.submitter_complete %}?q=' + value +
+ '&l=' + limit;
req = new XMLHttpRequest();
req.onreadystatechange = submitter_complete_response;
req.open("GET", url, true);
req = new XMLHttpRequest();
req.onreadystatechange = submitter_complete_response;
req.open("GET", url, true);