Conjunto de cambios 8d3bd9a en seiven para gestion_informacion


Ignorar:
Fecha y hora:
28/11/2016 16:24:07 (hace 7 años)
Autor:
Ing. Roldan D. Vargas G <rvargas@…>
Branches:
master, carga
Children:
6cd1160
Parents:
ffcf59a
Mensaje:

agregada función para crear y descargar archivo para la gestión de la información

Fichero:
1 editado

Leyenda

No modificado
Añadido
Eliminado
  • gestion_informacion/ajax.py

    r38a0912 r8d3bd9a  
     1"""
     2Sistema Estadístico Integral de Venezuela - (SEIVEN)
     3
     4Copyleft (@) 2015 CENDITEL nodo Mérida - https://mpv.cenditel.gob.ve/seiven
     5"""
     6## @namespace gestion_informacion.ajax
     7#
     8# Contiene las clases, atributos, métodos y/o funciones a implementar para la gestión de información
     9# @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     10# @author <a href='http://www.cenditel.gob.ve'>Centro Nacional de Desarrollo e Investigación en Tecnologías Libres
     11# (CENDITEL) nodo Mérida - Venezuela</a>
     12# @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     13from __future__ import unicode_literals, absolute_import
     14
     15from django.http import HttpResponse
     16from django.contrib.auth.decorators import login_required
     17from django.apps import apps
     18from django.conf import settings
     19
     20from base.messages import MSG_NOT_AJAX, MSG_NOT_DOWNLOAD_FILE, MSG_NOT_UPLOAD_FILE, MSG_CREATED_FILE_SUCCESS, \
     21    MSG_CREATED_FILE_ERROR
     22
     23import logging
     24import json
     25import pyexcel
     26import csv
     27import xlwt
     28
     29__licence__ = "GNU Public License v2"
     30__revision__ = ""
     31__docstring__ = "DoxyGen"
     32
     33
     34logger = logging.getLogger("carga_masiva")
     35
     36@login_required
     37def descargar_archivo(request):
     38    """!
     39    Función que permite construir y descargar un archivo de procesamiento de datos por lostes
     40
     41    @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
     42    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
     43    @date 03-11-2016
     44    @param request <b>{object}</b> Objeto que contiene la petición
     45    @return Devuelve un HttpResponse con el JSON correspondiente al archivo a descargar
     46    """
     47    try:
     48        if not request.is_ajax():
     49            return HttpResponse(json.dumps({'result': False, 'message': str(MSG_NOT_AJAX)}))
     50
     51        ## Nombre de la aplicación o módulo
     52        app = request.GET.get('app', None)
     53
     54        ## Nombre del modelo en el cual se va a buscar la información a incluir en el archivo
     55        mod = request.GET.get('mod', None)
     56
     57        if app and mod:
     58            modelo = apps.get_model(app, mod)
     59            workbook = xlwt.Workbook()
     60            sheet = workbook.add_sheet("Datos")
     61            instance = modelo()
     62            datos = instance.gestion_init()
     63            font_bold = xlwt.easyxf('font: bold 1')
     64
     65            i = 0
     66            for cabecera in datos['cabecera']:
     67                sheet.write(0, i, cabecera['label'], font_bold)
     68                sheet.col(i).width = 256 * (len(cabecera['label']) + 1)
     69                i += 1
     70
     71            # Se obtiene la cantidad de datos
     72            cantidad = len(datos['data'])
     73            # Si existen datos se crean las filas requeridas
     74            if cantidad > 0:
     75                for i in range(1, cantidad + 1):
     76                    row = len(datos['cabecera'])
     77                    for j in range(0, row):
     78                        sheet.write(i, j, datos['data'][i - 1][j])
     79
     80            archivo = "%s/%s.xls" % (settings.GESTION_INFORMACION_FILES, datos['output'])
     81
     82            workbook.save(archivo)
     83
     84            open_file = "%s.xls" % datos['output']
     85
     86            return HttpResponse(json.dumps({
     87                'resultado': True, 'archivo': open_file, 'message': str(MSG_CREATED_FILE_SUCCESS)
     88            }))
     89
     90        return HttpResponse(json.dumps({'resultado': False, 'error': str(MSG_NOT_DOWNLOAD_FILE)}))
     91    except Exception as e:
     92        message = MSG_CREATED_FILE_ERROR
     93        if settings.DEBUG:
     94            message = "%s. ERROR: %s" % (message, e)
     95    return HttpResponse(json.dumps({'result': False, 'error': str(message)}))
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.