diff options
Diffstat (limited to 'pgcommitfest/commitfest/lookups.py')
-rw-r--r-- | pgcommitfest/commitfest/lookups.py | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/pgcommitfest/commitfest/lookups.py b/pgcommitfest/commitfest/lookups.py index 33e2b4e..18d2ef5 100644 --- a/pgcommitfest/commitfest/lookups.py +++ b/pgcommitfest/commitfest/lookups.py @@ -1,26 +1,22 @@ +from django.http import HttpResponse, Http404 +from django.db.models import Q +from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User -from selectable.base import ModelLookup -from selectable.registry import registry -from selectable.decorators import login_required +import json -@login_required -class UserLookup(ModelLookup): - model = User - search_fields = ( - 'username__icontains', - 'first_name__icontains', - 'last_name__icontains', - ) - filters = {'is_active': True, } - - def get_item_value(self, item): - # Display for currently selected item - return "%s (%s)" % (item.username, item.get_full_name()) - def get_item_label(self, item): - # Display for choice listings - return "%s (%s)" % (item.username, item.get_full_name()) +@login_required +def userlookup(request): + query = request.GET.get('query', None) + if not query: + return Http404() + users = User.objects.filter( + Q(is_active=True), + Q(username__icontains=query) | Q(first_name__icontains=query) | Q(last_name__icontains=query), + ) -registry.register(UserLookup) + return HttpResponse(json.dumps({ + 'values': [{'id': u.id, 'value': '{} ({})'.format(u.username, u.get_full_name())} for u in users], + }), content_type='application/json') |