summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r--ishtar/furnitures/views.py99
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')