- Timestamp:
- Oct 19, 2015, 2:58:00 PM (9 years ago)
- Branches:
- master
- Children:
- 9ffb719
- Parents:
- 25c9dba
- Location:
- apps/simulacion
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
apps/simulacion/models.py
rb9cfa95 r4d7c31c 23 23 from django.contrib.auth.models import User 24 24 from django.utils.translation import ugettext_lazy as _ 25 from apps.comun.models import ModelReadOnly, CodigoCiiu 26 from apps.simulacion.matrizip.models import Actividades 25 27 26 28 import base64 … … 111 113 ## Establece el nombre en plural a ser mostrado para este modelo 112 114 verbose_name_plural = _(u"Unidades de Medida") 115 116 117 class ConvertirActividadACIIU(ModelReadOnly): 118 """! 119 Clase que contiene el modelo que permite establecer la relación entre las actividades de producción de la matriz 120 insumo / producto y el código ciiu a 2 dígitos 121 122 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 123 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 124 @date 19-10-2015 125 @version 3.0.0 126 """ 127 128 ## Código CIIU a 2 dígitos 129 ciiu = models.CharField(max_length=2) 130 131 ## Referencia a la actividad de producción de la matriz insumo / producto 132 actividad = models.CharField(max_length=15) 133 134 class Meta: 135 """! 136 Metaclase de la clase ConvertirActividadACIIU 137 138 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 139 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 140 @date 19-10-2015 141 @version 3.0.0 142 """ 143 144 ## Establece el nombre en singular a ser mostrado para este modelo 145 verbose_name = _(u"Convertir Actividad a CIIU") 146 147 ## Establece el nombre en plural a ser mostrado para este modelo 148 verbose_name_plural = _(u"Convertir Actividades a CIIU") 149 150 def get_relacion(self): 151 """! 152 Método que obtiene los codigos ciiu relacionados a una actividad dentro de la matriz insumo / producto 153 154 @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve) 155 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 156 @date 30-07-2015 157 @return Devuelve el contenido xml de la cadena descifrada 158 """ 159 return CodigoCiiu.objects.filter(codigo__startswith=self.ciiu) -
apps/simulacion/urls.py
r058c4c4 r4d7c31c 26 26 url(r'^sigesic/', include('apps.simulacion.sigesic.urls')), 27 27 url(r'^encuesta/', include('apps.simulacion.encuesta.urls')), 28 url(r'^matrizip/', include('apps.simulacion.matrizip.urls')), 28 29 url(r'^escenario/$', 'apps.simulacion.views.construir_escenario', name='escenario'), 29 30 url(r'^simular/$', 'apps.simulacion.views.simular', name='simular'), 30 31 url(r'^resultados/$', 'apps.simulacion.views.resultados_simulacion', name='resultados_simulacion'), 31 32 url(r'^print_tree_chain/?$', 'apps.simulacion.views.print_tree_chain', name='print_tree_chain'), 33 url(r'^descargar/?$', 'apps.simulacion.views.image_as_png_pdf', name='descargar_grafico'), 32 34 url(r'^ajax/get_node_sim/?$', 'apps.simulacion.ajax.get_node_sim', name='get_node_sim'), 33 35 url(r'^ajax/modificar_cadena/?$', 'apps.simulacion.ajax.modificar_cadena', name='modificar_cadena'), -
apps/simulacion/views.py
r645daf8 r4d7c31c 27 27 from django.core.urlresolvers import reverse 28 28 from django.http import HttpResponse 29 from django.utils.encoding import smart_unicode 29 30 from django.contrib.messages.views import SuccessMessageMixin 30 31 from django.views.generic import FormView … … 36 37 import os 37 38 import logging 39 import subprocess 40 from PIL import Image 38 41 39 42 logger = logging.getLogger(__name__) … … 135 138 p.save() 136 139 return response 140 141 142 @login_required() 143 def image_as_png_pdf(request): 144 """! 145 Función que ejecuta la instrucción para convertir un archivo .svg a un formato .png y posteriormente ser mostrado en un archivo .pdf 146 147 @author Ing. Erwin Paredes (eparedes at cenditel.gob.ve) 148 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 149 @date 21-08-2015 150 @pre Se requiere tener instalado el comando rsvg-convert (librsvg2-bin) 151 @param request <b>{object}</b> Objeto que contiene la petición 152 @return Devuelve el correspondiente response con el archivo pdf a descargar 153 """ 154 output_format = request.GET.get('format') 155 usuario = smart_unicode(request.GET["usuario"], encoding='utf-8', strings_only=False, errors='strict') 156 157 comando = "cd %s;%s %s%s.svg %s %s%s.png" 158 159 # Excepciones que permiten verificar si el comando que convierte archivos svg a png o pdf existe, 160 # en caso contrario asigna el comando rsvg-convert 161 # Agregado por: Ing. Roldan D. Vargas G. 162 # fecha: 31/07/2014 163 try: 164 convert = "convert" 165 flag_output = "" 166 usuario = "MSVG:%s" % usuario 167 except Exception, e: 168 try: 169 command_exists = subprocess.check_output(["rsvg", "--help"], stderr=subprocess.STDOUT) 170 convert = "rsvg" 171 flag_output = "" 172 except subprocess.CalledProcessError: 173 convert = "rsvg-convert" 174 flag_output = "-o" 175 except OSError: 176 convert = "rsvg-convert" 177 flag_output = "-o" 178 179 os.system(comando % ( 180 os.path.join(settings.BASE_DIR, "tmp/"), convert, os.path.join(settings.BASE_DIR, "tmp/"), usuario, flag_output, 181 os.path.join(settings.BASE_DIR, "tmp/"), usuario 182 )) 183 184 archivo = os.path.join(settings.BASE_DIR, "tmp/") + usuario + ".png" 185 186 im = Image.open(archivo) # any Image object should work 187 filename = str(request.user) 188 if output_format == 'png': 189 response = HttpResponse(content_type='image/png') 190 response['Content-Disposition'] = 'attachment; filename=%s.png' % filename 191 im.save(response, 'png') # will call response.write() 192 else: 193 # Temporary disk space, server process needs write access 194 tmp_path = '/tmp/' 195 # Full path to ImageMagick convert binary 196 convert_bin = '/usr/bin/convert' 197 im.save(tmp_path + filename + '.png', 'png') 198 response = HttpResponse(content_type='application/pdf') 199 response['Content-Disposition'] = 'attachment; filename=%s.pdf' % filename 200 ret = subprocess.Popen([convert_bin, "%s%s.png" % (tmp_path, filename), "pdf:-"], stdout=subprocess.PIPE) 201 response.write(ret.stdout.read()) 202 return response
Note: See TracChangeset
for help on using the changeset viewer.