diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r-- | ishtar/furnitures/views.py | 58 |
1 files changed, 25 insertions, 33 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 5ea71cc86..f9157d9d6 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -21,14 +21,18 @@ Furnitures views """ +import json from django.http import HttpResponse from django.template import RequestContext from django.shortcuts import render_to_response, redirect from django.utils.translation import ugettext, ugettext_lazy as _ +from django.db.models import Q +from django.core import serializers from ishtar import settings from menus import menu from forms import Step, FileForm1, FileForm2, FileWizard +import models def index(request): """ @@ -43,38 +47,26 @@ def check_permission(request, action_slug, obj_id=None): return menu.items[action_slug].is_available(request.user, obj_id) return menu.items[action_slug].can_be_available(request.user) -''' -def base_action(request, action_slug, obj_id=None, *args, **kwargs): - """ - Basic action management - """ - if not check_permission(request, action_slug, obj_id): - not_permitted_msg = ugettext(u"Operation not permitted.") - return HttpResponse(not_permitted_msg) - request.session['CURRENT_ACTION'] = action_slug - associated_wizard = action_slug + '_wizard' - dct = {} - print base_action - globals_dct = globals() - if associated_wizard in globals_dct: - wizard = globals_dct[associated_wizard] - current_step = None - if wizard.id in request.session \ - and 'current_step' in request.session[wizard.id] \ - and request.session[wizard.id]['current_step']: - current_step = request.session[wizard.id]['current_step'].slug - else: - current_step = wizard.base_steps[0].slug - return action(request, action_slug, obj_id=obj_id, *args, **kwargs) - if obj_id: - return redirect('action', action_slug, current_step, obj_id) - return redirect('action', action_slug, current_step) - - if action_slug in globals_dct: - return globals_dct[action](request, dct, obj_id, *args, **kwargs) - return render_to_response('index.html', dct, - context_instance=RequestContext(request)) -''' +def autocomplete_person(request): + if not request.user.has_perm('furnitures.view_person'): + return HttpResponse(mimetype='text/plain') + if not request.GET.get('term'): + return HttpResponse(mimetype='text/plain') + q = request.GET.get('term') + limit = request.GET.get('limit', 15) + try: + limit = int(limit) + except ValueError: + return HttpResponseBadRequest() + query = Q() + for q in q.split(' '): + query = query | Q(name__istartswith=q) | Q(surname__istartswith=q) | \ + Q(email__icontains=q) + persons = models.Person.objects.filter(query)[:limit] + data = json.dumps([{'id':person.pk, + 'value':"%s %s - %s" % (person.name, person.surname, person.email)} + for person in persons]) + return HttpResponse(data, mimetype='text/plain') def action(request, action_slug, obj_id=None, *args, **kwargs): """ @@ -97,7 +89,7 @@ def action(request, action_slug, obj_id=None, *args, **kwargs): current_step = request.session[wizard.id]['current_step'].slug else: current_step = wizard.base_steps[0].slug - return redirect('action_form', action_slug, current_step) + return redirect('action-form', action_slug, current_step) elif wizard.id in request.session: for step in wizard.base_steps: if step.slug == kwargs['slug']: |