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', '')
+ limit = request.GET.get('l', None)
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',
function submitter_field_change(field)
{
+ var limit = 20;
var value = field.value;
if (value.length < 4) {
return;
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);