diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
| -rw-r--r-- | ishtar/furnitures/views.py | 99 |
1 files changed, 96 insertions, 3 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 03029cfe4..041ebfb76 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -91,9 +91,8 @@ def autocomplete_town(request): for q in q.split(' '): extra = Q(name__icontains=q) if settings.COUNTRY == 'fr': - extra = extra | (Q(canton__name__istartswith=q) | \ - Q(canton__arrondissement__name__istartswith=q) | \ - Q(canton__arrondissement__department__label__istartswith=q)) + extra = (extra | Q(numero_insee__istartswith=q) | \ + Q(departement__label__istartswith=q)) query = query & extra limit = 15 towns = models.Town.objects.filter(query)[:limit] @@ -121,6 +120,52 @@ def autocomplete_file(request): for file in files]) return HttpResponse(data, mimetype='text/plain') +def json_file(request): + if not request.GET: + return HttpResponse(mimetype='text/plain') + request_keys = {'town':'towns__pk', + 'file_type':'file_type__pk', + 'year':'year', + 'value':'name', + } + dct = {} + for k in request_keys: + q = request.GET.get(k) + if not q: + continue + dct[request_keys[k]] = q + if not dct: + if 'json_file' in request.session: + dct = request.session['json_file'] + elif 'file' in request.session: + dct = {"pk":request.session['file']} + if not dct: + return HttpResponse(mimetype='text/plain') + else: + request.session['json_file'] = dct + query = Q(**dct) + files = models.File.objects.filter(query) + q = request.GET.get('sidx') + if q and q in request_keys: + k = request_keys[q] + if k.endswith("__pk"): + k = k[:-len("__pk")] + "__label" + q = request.GET.get('sord') + sign = q and q == u'desc' and "-" or '' + if k == "name": + files = files.order_by(sign + 'year').order_by( + sign + 'numeric_reference') + else: + files = files.order_by(sign + k) + data = json.dumps({ + "records":len(files), + "rows":[{"id":unicode(fle.pk), + "cell":(unicode(fle.pk), unicode(fle), + unicode(fle.file_type), unicode(fle.year))} + for fle in files] + }) + return HttpResponse(data, mimetype='text/plain') + def autocomplete_operation(request, non_closed=True): if not request.GET.get('term'): return HttpResponse(mimetype='text/plain') @@ -142,6 +187,54 @@ def autocomplete_operation(request, non_closed=True): for operation in operations]) return HttpResponse(data, mimetype='text/plain') +def json_operation(request, non_closed=True): + if not request.GET: + return HttpResponse(mimetype='text/plain') + request_keys = {'town':'towns__pk', + 'operation_type':'operation_type__pk', + 'operation_code':'operation_code', + 'year':'year', + 'value':'name', + } + dct = {} + for k in request_keys: + q = request.GET.get(k) + if not q: + continue + dct[request_keys[k]] = q + if not dct: + if 'json_operation' in request.session: + dct = request.session['json_operation'] + elif 'operation' in request.session: + dct = {"pk":request.session['operation']} + if not dct: + return HttpResponse(mimetype='text/plain') + else: + request.session['json_operation'] = dct + query = Q(**dct) + operations = models.Operation.objects.filter(query) + q = request.GET.get('sidx') + if q and q in request_keys: + k = request_keys[q] + if k.endswith("__pk"): + k = k[:-len("__pk")] + "__label" + q = request.GET.get('sord') + sign = q and q == u'desc' and "-" or '' + if k == "name": + k = "operation_code" + operations = operations.order_by(sign + 'year').order_by( + sign + 'operation_code') + else: + operations = operations.order_by(sign + k) + data = json.dumps({ + "records":len(operations), + "rows":[{"id":unicode(operation.pk), + "cell":(unicode(operation.pk), unicode(operation), + unicode(operation.operation_type), unicode(operation.year))} + for operation in operations] + }) + return HttpResponse(data, mimetype='text/plain') + def autocomplete_organization(request, orga_type=None): if not request.GET.get('term'): return HttpResponse(mimetype='text/plain') |
