source: ecoalba/apps/carga/views.py @ 934481f

Last change on this file since 934481f was 934481f, checked in by jbecerra <jbecerra@…>, 10 years ago

Ajuste en vista carga y tasks de celery

  • Property mode set to 100644
File size: 4.3 KB
Line 
1from django.shortcuts import render
2from django.contrib.auth.decorators import login_required
3from django.template.context import Context, RequestContext
4from django.shortcuts import render_to_response
5from django.template import Template,loader
6from django.http import HttpResponse
7from geraldo import Report
8from geraldo.generators import PDFGenerator
9from datetime import date
10from django.utils import translation
11from django.utils.translation import ugettext_lazy as _l, ugettext as _
12from settings import PATH, DEBUG
13from StringIO import StringIO
14import csv
15
16from comun.paginador import Paginador
17from comun.models import Pais, CodigoArmonizado, Idioma, Moneda, UnidadMedida, Comercio
18from notificaciones.views import verificar_errores_carga_masiva
19from carga.forms import CargaMasivaForm, cargarPaises
20from carga.tasks import cargar_comercio_exterior, cargar_produccion_nacional
21
22@login_required
23def flujo(request):
24    paises = cargarPaises(Pais.objects.exclude(anyo_inclusion__exact = None))
25   
26    form = CargaMasivaForm(paises = paises)
27   
28    errores, pais, mes, anyo, flujo = verificar_errores_carga_masiva(request)
29   
30    contexto = {'form': form, 'error_carga_masiva': errores, 'pais': pais, 'numero_mes': mes, 'anyo': anyo, 'flujo': flujo}
31   
32    return render_to_response('carga/carga_flujo_comercial.html', contexto, context_instance = RequestContext(request))
33    #return render_to_response('carga/carga_flujo_comercial.html', {'form': form}, context_instance = RequestContext(request))
34
35@login_required
36def cargar_archivo(request):
37    paises = cargarPaises(Pais.objects.exclude(anyo_inclusion__exact = None))
38   
39    if request.method == 'POST':
40        form = CargaMasivaForm(data = request.POST, files=request.FILES, paises = paises)
41        if form.is_valid():
42            usuario = request.user
43            pais = form.cleaned_data['pais']
44            mes = form.cleaned_data['mes']
45            anyo = form.cleaned_data['anyo']
46            archivo = request.FILES['archivo'].read()
47            flujo_comercial = int(form.cleaned_data['flujo_comercial'])
48           
49            cur_language = translation.get_language()
50           
51            if flujo_comercial == 1:
52                if DEBUG:
53                    cargar_produccion_nacional(usuario, pais, anyo, mes, archivo)
54                else:
55                    cargar_produccion_nacional.delay(usuario, pais, anyo, mes, archivo)
56            elif flujo_comercial == 2:
57                if DEBUG:
58                    cargar_comercio_exterior(cur_language, usuario, pais, anyo, mes, archivo)
59                else:
60                    cargar_comercio_exterior.delay(cur_language, usuario, pais, anyo, mes, archivo)
61    else:
62        form = CargaMasivaForm(paises = paises)
63       
64    errores, pais, mes, anyo, flujo = verificar_errores_carga_masiva(request)
65   
66    contexto = {'form': form, 'error_carga_masiva': errores, 'pais': pais, 'numero_mes': mes, 'anyo': anyo, 'flujo': flujo}
67           
68    return render_to_response('carga/carga_flujo_comercial.html', contexto, context_instance = RequestContext(request))
69
70@login_required
71def descargar_archivo(request, iso3166_3, mes, anyo, flujo):
72    """
73    Vista para generar un archivo CSV para la descarga
74    """
75   
76    flujo_comercial = [2]
77   
78    if int(flujo) == 2:
79        flujo_comercial = [0, 1]
80   
81    flujos_comerciales = Comercio.objects.filter(pais__iso3166_3=iso3166_3, mes=mes, anyo=anyo, flujo_comercial__in=flujo_comercial)
82   
83    salida = StringIO()
84    #Creamos el archivo csv
85    flujo_csv = csv.writer(salida, delimiter=';', quotechar='"')
86   
87    for flujo_comercial in flujos_comerciales:
88        fila_csv = [flujo_comercial.flujo_comercial]
89        fila_csv.append(flujo_comercial.codigo_armonizado.codigo)
90        fila_csv.append(flujo_comercial.pais_relacion.iso3166_3)
91        fila_csv.append(flujo_comercial.unidad_medida.simbolo)
92        fila_csv.append(flujo_comercial.cantidad)
93        fila_csv.append(flujo_comercial.monto)
94       
95        flujo_csv.writerow(fila_csv)
96   
97    nombre_archivo = '%s_%i_%i_%i' % (iso3166_3, int(mes), int(anyo), int(flujo))
98   
99    # Definimos el tipo de documento que vamos a enviar al usuario
100    response = HttpResponse(mimetype='text/csv')
101    response['Content-Disposition'] = 'attachment; filename = %s' % nombre_archivo
102    response.write(salida.getvalue())
103    return response
Note: See TracBrowser for help on using the repository browser.