Changeset 4d7c31c in sicp for apps


Ignore:
Timestamp:
Oct 19, 2015, 2:58:00 PM (9 years ago)
Author:
Ing. Roldan D. Vargas G <rvargas@…>
Branches:
master
Children:
9ffb719
Parents:
25c9dba
Message:

modificaciones en la vista que genera los gráficos de otras fuentes de datos

Location:
apps/simulacion
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • apps/simulacion/models.py

    rb9cfa95 r4d7c31c  
    2323from django.contrib.auth.models import User
    2424from django.utils.translation import ugettext_lazy as _
     25from apps.comun.models import ModelReadOnly, CodigoCiiu
     26from apps.simulacion.matrizip.models import Actividades
    2527
    2628import base64
     
    111113        ## Establece el nombre en plural a ser mostrado para este modelo
    112114        verbose_name_plural = _(u"Unidades de Medida")
     115
     116
     117class 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  
    2626    url(r'^sigesic/', include('apps.simulacion.sigesic.urls')),
    2727    url(r'^encuesta/', include('apps.simulacion.encuesta.urls')),
     28    url(r'^matrizip/', include('apps.simulacion.matrizip.urls')),
    2829    url(r'^escenario/$', 'apps.simulacion.views.construir_escenario', name='escenario'),
    2930    url(r'^simular/$', 'apps.simulacion.views.simular', name='simular'),
    3031    url(r'^resultados/$', 'apps.simulacion.views.resultados_simulacion', name='resultados_simulacion'),
    3132    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'),
    3234    url(r'^ajax/get_node_sim/?$', 'apps.simulacion.ajax.get_node_sim', name='get_node_sim'),
    3335    url(r'^ajax/modificar_cadena/?$', 'apps.simulacion.ajax.modificar_cadena', name='modificar_cadena'),
  • apps/simulacion/views.py

    r645daf8 r4d7c31c  
    2727from django.core.urlresolvers import reverse
    2828from django.http import HttpResponse
     29from django.utils.encoding import smart_unicode
    2930from django.contrib.messages.views import SuccessMessageMixin
    3031from django.views.generic import FormView
     
    3637import os
    3738import logging
     39import subprocess
     40from PIL import Image
    3841
    3942logger = logging.getLogger(__name__)
     
    135138    p.save()
    136139    return response
     140
     141
     142@login_required()
     143def 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.