source: ecoalba/apps/carga/views.py @ 47c62bb

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

Ajustes en convenios

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