diff options
Diffstat (limited to 'ishtar/furnitures/views.py')
| -rw-r--r-- | ishtar/furnitures/views.py | 59 |
1 files changed, 45 insertions, 14 deletions
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 041ebfb76..3b6263517 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -21,7 +21,10 @@ Furnitures views """ +import csv import json +import datetime + from django.http import HttpResponse from django.template import RequestContext from django.shortcuts import render_to_response, redirect @@ -120,9 +123,9 @@ 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') +def get_file(request, type='json'): + if not type: + type = 'json' request_keys = {'town':'towns__pk', 'file_type':'file_type__pk', 'year':'year', @@ -135,14 +138,14 @@ def json_file(request): continue dct[request_keys[k]] = q if not dct: - if 'json_file' in request.session: - dct = request.session['json_file'] + if 'get_file' in request.session: + dct = request.session['get_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 + request.session['get_file'] = dct query = Q(**dct) files = models.File.objects.filter(query) q = request.GET.get('sidx') @@ -157,13 +160,27 @@ def json_file(request): sign + 'numeric_reference') else: files = files.order_by(sign + k) - data = json.dumps({ + data = None + if type == "json": + 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') + elif type == "csv": + response = HttpResponse(mimetype='text/csv') + n = datetime.datetime.now() + filename = u'files_%s.csv' % n.strftime('%Y%m%d-%H%M%S') + response['Content-Disposition'] = 'attachment; filename=%s' % filename + writer = csv.writer(response) + for fle in files: + writer.writerow([unicode(fle).encode('utf-8'), + unicode(fle.file_type).encode('utf-8'), + unicode(fle.year).encode('utf-8')]) + return response return HttpResponse(data, mimetype='text/plain') def autocomplete_operation(request, non_closed=True): @@ -187,9 +204,9 @@ 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') +def get_operation(request, type='json', non_closed=True): + if not type: + type = 'json' request_keys = {'town':'towns__pk', 'operation_type':'operation_type__pk', 'operation_code':'operation_code', @@ -203,14 +220,14 @@ def json_operation(request, non_closed=True): continue dct[request_keys[k]] = q if not dct: - if 'json_operation' in request.session: - dct = request.session['json_operation'] + if 'get_operation' in request.session: + dct = request.session['get_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 + request.session['get_operation'] = dct query = Q(**dct) operations = models.Operation.objects.filter(query) q = request.GET.get('sidx') @@ -226,13 +243,27 @@ def json_operation(request, non_closed=True): sign + 'operation_code') else: operations = operations.order_by(sign + k) - data = json.dumps({ + data = None + if type == 'json': + 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') + elif type == "csv": + response = HttpResponse(mimetype='text/csv') + n = datetime.datetime.now() + filename = 'operations_%s.csv' % n.strftime('%Y%m%d-%H%M%S') + response['Content-Disposition'] = 'attachment; filename=%s' % filename + writer = csv.writer(response) + for ope in operations: + writer.writerow([unicode(ope).encode('utf-8'), + unicode(ope.operation_type).encode('utf-8'), + unicode(ope.year).encode('utf-8')]) + return response return HttpResponse(data, mimetype='text/plain') def autocomplete_organization(request, orga_type=None): |
