diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-29 00:12:55 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-01-29 00:12:55 +0100 |
commit | 0883d7029ebdb4a934407c95c19745b13fe558ca (patch) | |
tree | fd5d9f2c5c80eb97b4eb41c9a3aaad7d64d77121 /ishtar/furnitures/views.py | |
parent | 2c501b96bca9a13e6f08e54ba6aba6ac1bf8be16 (diff) | |
download | Ishtar-0883d7029ebdb4a934407c95c19745b13fe558ca.tar.bz2 Ishtar-0883d7029ebdb4a934407c95c19745b13fe558ca.zip |
Archaelogical file search mecanism (closes #142)
Diffstat (limited to 'ishtar/furnitures/views.py')
-rw-r--r-- | ishtar/furnitures/views.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index b266bed63..041ebfb76 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -120,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') |