Conjunto de cambios 8d3bd9a en seiven para gestion_informacion
- Fecha y hora:
- 28/11/2016 16:24:07 (hace 7 años)
- Branches:
- master, carga
- Children:
- 6cd1160
- Parents:
- ffcf59a
- Fichero:
-
- 1 editado
Leyenda
- No modificado
- Añadido
- Eliminado
-
gestion_informacion/ajax.py
r38a0912 r8d3bd9a 1 """ 2 Sistema Estadístico Integral de Venezuela - (SEIVEN) 3 4 Copyleft (@) 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> 13 from __future__ import unicode_literals, absolute_import 14 15 from django.http import HttpResponse 16 from django.contrib.auth.decorators import login_required 17 from django.apps import apps 18 from django.conf import settings 19 20 from base.messages import MSG_NOT_AJAX, MSG_NOT_DOWNLOAD_FILE, MSG_NOT_UPLOAD_FILE, MSG_CREATED_FILE_SUCCESS, \ 21 MSG_CREATED_FILE_ERROR 22 23 import logging 24 import json 25 import pyexcel 26 import csv 27 import xlwt 28 29 __licence__ = "GNU Public License v2" 30 __revision__ = "" 31 __docstring__ = "DoxyGen" 32 33 34 logger = logging.getLogger("carga_masiva") 35 36 @login_required 37 def 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.