Mercurial > public > sg101
diff gpp/core/views.py @ 186:be3fff614b93
Implement #66; use jQuery UI autocomplete widget to replace obsolete jquery-autocomplete plugin. I implemented a very simple caching system.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 30 Mar 2010 01:30:32 +0000 |
parents | ab7830b067b3 |
children |
line wrap: on
line diff
--- a/gpp/core/views.py Sun Mar 28 23:25:10 2010 +0000 +++ b/gpp/core/views.py Tue Mar 30 01:30:32 2010 +0000 @@ -4,12 +4,12 @@ """ from django.contrib.auth.models import User from django.http import HttpResponse -from django.http import HttpResponseBadRequest -from django.http import HttpResponseForbidden from django.shortcuts import render_to_response from django.template import RequestContext from django.contrib.auth.decorators import login_required from django.views.decorators.http import require_GET +import django.utils.simplejson as json + @login_required @require_GET @@ -23,20 +23,16 @@ def ajax_users(request): """ - If the user is authenticated, return a string of usernames whose names start with - the 'q' GET parameter, limited by the 'limit' GET parameters. The names are separated - by newlines. Only active usernames are returned. - If the user is not authenticated, return an empty string. + If the user is authenticated, return a JSON array of strings of usernames + whose names start with the 'q' GET parameter, limited by the 'limit' GET + parameter. Only active usernames are returned. + If the user is not authenticated, return an empty array. """ q = request.GET.get('q', None) - if q is None: - return HttpResponseBadRequest() + if q is None or not request.user.is_authenticated(): + return HttpResponse(json.dumps([]), content_type='application/json') - if request.user.is_authenticated(): - q = request.GET.get('q', ' ') - limit = int(request.GET.get('limit', 10)) - users = User.objects.filter(is_active=True, - username__istartswith=q).values_list('username', flat=True)[:limit] - user_list = u"\n".join(users) - return HttpResponse(user_list) - return HttpResponseForbidden() + limit = int(request.GET.get('limit', 10)) + users = User.objects.filter(is_active=True, + username__istartswith=q).values_list('username', flat=True)[:limit] + return HttpResponse(json.dumps(list(users)), content_type='application/json')