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): | 
