Conjunto de cambios fc268ed en seiven para economico


Ignorar:
Fecha y hora:
06/12/2016 17:06:28 (hace 7 años)
Autor:
Ing. Roldan D. Vargas G <rvargas@…>
Branches:
master, carga
Children:
34f3fd8
Parents:
862cf76
Mensaje:

modificaciones para la descarga genérica de archivos mediante peticiones ajax

Ubicación:
economico
Ficheros:
3 editados

Leyenda

No modificado
Añadido
Eliminado
  • economico/forms.py

    r3957a55 rfc268ed  
    2828    DOMINIO_COMERCIAL, DOMINIO_CAMBIO
    2929)
     30from base.functions import cargar_anho_base
    3031
    3132
     
    99100    )
    100101
     102    def __init__(self, *args, **kwargs):
     103        super(AnhoBaseForm, self).__init__(*args, **kwargs)
     104        self.fields['anho_base'].choices = cargar_anho_base(anho_inicial='2007')
     105
    101106
    102107@python_2_unicode_compatible
     
    162167    )
    163168
     169    def __init__(self, *args, **kwargs):
     170        super(AnhoIniForm, self).__init__(*args, **kwargs)
     171        self.fields['periodo_anho_ini'].choices = cargar_anho_base(anho_inicial='2007')
     172
    164173
    165174@python_2_unicode_compatible
     
    183192    )
    184193
     194    def __init__(self, *args, **kwargs):
     195        super(AnhoFinForm, self).__init__(*args, **kwargs)
     196        self.fields['periodo_anho_fin'].choices = cargar_anho_base(anho_inicial='2007')
     197
    185198
    186199@python_2_unicode_compatible
     
    388401    """
    389402
    390 
    391403@python_2_unicode_compatible
    392404class MonetarioInstrumentoPoliticaForm(MesIniForm, MesFinForm, AnhoIniForm, AnhoFinForm):
     
    399411    @version 1.0.0
    400412    """
    401 
    402413
    403414@python_2_unicode_compatible
  • economico/models.py

    r7676b1c rfc268ed  
    2626
    2727@python_2_unicode_compatible
     28class Precios(models.Model):
     29    ## Año base del registro
     30    anho_base = models.CharField(max_length=4, null=True)
     31
     32    ## Año al que pertenece el(los) registro(s)
     33    anho = models.CharField(max_length=4, verbose_name=_("Año"))
     34
     35    ## Mes del registro
     36    mes = models.CharField(max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
     37
     38    ## Índice total a registrar
     39    inpc = models.DecimalField(max_digits=18, decimal_places=2, verbose_name=_("INPC"))
     40
     41    ## Ciudad del registro. La información registrada es solo para el tipo de dominio por ciudad
     42    ciudad = models.CharField(max_length=3, choices=DOMINIO[1:], null=True, verbose_name=_("Ciudad"))
     43
     44    def gestion_init(self, *args, **kwargs): #ciudad=None, anho_base=None, mes_ini=None, mes_fin=None, anho_ini=None, anho_fin=None
     45
     46        grupo_label = str(PreciosGrupo._meta.verbose_name)
     47        grupo_count_fields = PreciosGrupo._meta.get_fields()[:-3].__len__()
     48        sector_label = str(PreciosSector._meta.verbose_name)
     49        sector_count_fields = PreciosSector._meta.get_fields()[:-3].__len__()
     50        naturaleza_label = str(PreciosNaturaleza._meta.verbose_name)
     51        naturaleza_count_fields = PreciosNaturaleza._meta.get_fields()[:-3].__len__()
     52        servicios_label = str(PreciosServicios._meta.verbose_name)
     53        servicios_count_fields = PreciosServicios._meta.get_fields()[:-3].__len__()
     54        inflacionario_label = str(PreciosInflacionario._meta.verbose_name)
     55        inflacionario_count_fields = PreciosInflacionario._meta.get_fields()[:-3].__len__()
     56        productos_label = str(PreciosProductos._meta.verbose_name)
     57        productos_count_fields = PreciosProductos._meta.get_fields()[:-3].__len__()
     58        fields = [
     59            [
     60                {'tag': '', 'color': '', 'text_color': '', 'combine': 0},
     61                {'tag': '', 'color': '', 'text_color': '', 'combine': 0},
     62                {'tag': '', 'color': '', 'text_color': '', 'combine': 0},
     63                {'tag': grupo_label, 'color': 'indigo', 'text_color': 'white', 'combine': grupo_count_fields},
     64                {'tag': sector_label, 'color': 'orange', 'text_color': 'white', 'combine': sector_count_fields},
     65                {'tag': naturaleza_label, 'color': 'gray25', 'text_color': 'black', 'combine': naturaleza_count_fields},
     66                {'tag': servicios_label, 'color': 'green', 'text_color': 'white', 'combine': servicios_count_fields},
     67                {'tag': inflacionario_label, 'color': 'red', 'text_color': 'white', 'combine': inflacionario_count_fields},
     68                {'tag': productos_label, 'color': 'aqua', 'text_color': 'black', 'combine': productos_count_fields},
     69            ],
     70            []
     71        ]
     72        relations, data, exclude_fields = [], [], ['id', 'anho_base', 'real_precios_id']
     73
     74        if not 'dominio' in kwargs or not kwargs['dominio'] == 'C':
     75            exclude_fields.append('ciudad')
     76
     77        for f in self._meta.get_fields():
     78            try:
     79                field, label, null = f.attname, str(f.verbose_name), f.null
     80                if not field in exclude_fields and not f.get_internal_type() == "ManyToOneRel":
     81                    type, validators, error_messages = f.get_internal_type(), f.validators, f.error_messages
     82
     83                    if type == "ForeignKey":
     84                        relations.append(f.rel.to)
     85
     86                    fields[1].append({
     87                        'field': field, 'label': label, 'type': type, 'null': null, 'validators': validators,
     88                        'error_messages': error_messages
     89                    })
     90            except Exception as e:
     91                pass
     92
     93        for grupo in PreciosGrupo._meta.get_fields():
     94            if not grupo.attname in exclude_fields:
     95                fields[1].append({
     96                    'field': grupo.attname, 'label': str(grupo.verbose_name), 'type': grupo.get_internal_type(),
     97                    'null': grupo.null, 'validators': grupo.validators, 'error_messages': grupo.error_messages
     98                })
     99
     100        for sector in PreciosSector._meta.get_fields():
     101            if not sector.attname in exclude_fields:
     102                fields[1].append({
     103                    'field': sector.attname, 'label': str(sector.verbose_name), 'type': sector.get_internal_type(),
     104                    'null': sector.null, 'validators': sector.validators, 'error_messages': sector.error_messages
     105                })
     106
     107        for naturaleza in PreciosNaturaleza._meta.get_fields():
     108            if not naturaleza.attname in exclude_fields:
     109                fields[1].append({
     110                    'field': naturaleza.attname, 'label': str(naturaleza.verbose_name), 'type': naturaleza.get_internal_type(),
     111                    'null': naturaleza.null, 'validators': naturaleza.validators, 'error_messages': naturaleza.error_messages
     112                })
     113
     114        for servicios in PreciosServicios._meta.get_fields():
     115            if not servicios.attname in exclude_fields:
     116                fields[1].append({
     117                    'field': servicios.attname, 'label': str(servicios.verbose_name), 'type': servicios.get_internal_type(),
     118                    'null': servicios.null, 'validators': servicios.validators, 'error_messages': servicios.error_messages
     119                })
     120
     121        for inflacionario in PreciosInflacionario._meta.get_fields():
     122            if not inflacionario.attname in exclude_fields:
     123                fields[1].append({
     124                    'field': inflacionario.attname, 'label': str(inflacionario.verbose_name), 'type': inflacionario.get_internal_type(),
     125                    'null': inflacionario.null, 'validators': inflacionario.validators, 'error_messages': inflacionario.error_messages
     126                })
     127
     128        for productos in PreciosProductos._meta.get_fields():
     129            if not productos.attname in exclude_fields:
     130                fields[1].append({
     131                    'field': productos.attname, 'label': str(productos.verbose_name), 'type': productos.get_internal_type(),
     132                    'null': productos.null, 'validators': productos.validators, 'error_messages': productos.error_messages
     133                })
     134
     135        return {'cabecera': fields, 'relations': relations, 'data': data, 'output': 'precios'}
     136
     137
     138@python_2_unicode_compatible
     139class PreciosGrupo(models.Model):
     140
     141    alimento_bebida = models.DecimalField(
     142        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(1) Alimentos y Bebidas no Alcohólicas")
     143    )
     144
     145    bebida_tabaco = models.DecimalField(
     146        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(2) Bebidas Alcohólicas y Tabaco")
     147    )
     148
     149    vestido_calzado = models.DecimalField(
     150        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(3) Vestido y Calzado")
     151    )
     152
     153    alquiler_vivienda = models.DecimalField(
     154        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(4) Alquiler de Vivienda")
     155    )
     156
     157    servicio_vivienda = models.DecimalField(
     158        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(5) Servicios de Vivienda Excepto Teléfono")
     159    )
     160
     161    equipamiento_hogar = models.DecimalField(
     162        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(6) Equipamiento de Hogar")
     163    )
     164
     165    salud = models.DecimalField(
     166        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(7) Salud")
     167    )
     168
     169    transporte = models.DecimalField(
     170        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(8) Transporte")
     171    )
     172
     173    comunicaciones = models.DecimalField(
     174        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(9) Comunicaciones")
     175    )
     176
     177    esparcimiento = models.DecimalField(
     178        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(10) Esparcimiento y Cultura")
     179    )
     180
     181    educacion = models.DecimalField(
     182        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(11) Servicios de Educación")
     183    )
     184
     185    retaurant_hotel = models.DecimalField(
     186        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(12) Restaurant y Hotel")
     187    )
     188
     189    bienes_servicios = models.DecimalField(
     190        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("(13) Bienes y Servicios Diversos")
     191    )
     192
     193    real_precios = models.ForeignKey(Precios, verbose_name=_("Sector Real"))
     194
     195    class Meta:
     196        verbose_name = _("Índice por Grupo")
     197
     198
     199@python_2_unicode_compatible
     200class PreciosSector(models.Model):
     201
     202    durables = models.DecimalField(
     203        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Bienes durables")
     204    )
     205
     206    semi_durables = models.DecimalField(
     207        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Bienes semidurables")
     208    )
     209
     210    no_durables = models.DecimalField(
     211        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Bienes no durables")
     212    )
     213
     214    real_precios = models.ForeignKey(Precios, verbose_name=_("Sector Real"))
     215
     216    class Meta:
     217        verbose_name = _("Índice por Sector de Origen")
     218
     219
     220@python_2_unicode_compatible
     221class PreciosNaturaleza(models.Model):
     222
     223    bienes = models.DecimalField(
     224        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Bienes")
     225    )
     226
     227    agricolas = models.DecimalField(
     228        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Agrícolas")
     229    )
     230
     231    pesquero = models.DecimalField(
     232        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Productos Pesqueros")
     233    )
     234
     235    agroindustrial = models.DecimalField(
     236        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Agroindustrial")
     237    )
     238
     239    otros = models.DecimalField(
     240        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Otros manufacturados")
     241    )
     242
     243    real_precios = models.ForeignKey(Precios, verbose_name=_("Sector Real"))
     244
     245    class Meta:
     246        verbose_name = _("Índice por Naturaleza y Durabilidad")
     247
     248
     249@python_2_unicode_compatible
     250class PreciosServicios(models.Model):
     251    total = models.DecimalField(
     252        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Total Servicios")
     253    )
     254
     255    basicos = models.DecimalField(
     256        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Servicios Básicos")
     257    )
     258
     259    otros = models.DecimalField(
     260        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Otros servicios")
     261    )
     262
     263    real_precios = models.ForeignKey(Precios, verbose_name=_("Sector Real"))
     264
     265    class Meta:
     266        verbose_name = _("Índice de Servicios")
     267
     268@python_2_unicode_compatible
     269class PreciosInflacionario(models.Model):
     270    nucleo = models.DecimalField(
     271        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Núcleo Inflacionario (NI)")
     272    )
     273
     274    alimentos = models.DecimalField(
     275        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Alimentos Elaborados")
     276    )
     277
     278    textiles = models.DecimalField(
     279        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Textiles y Prendas de Vestir")
     280    )
     281
     282    bienes = models.DecimalField(
     283        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Bienes Industriales excepto alimentos y textiles")
     284    )
     285
     286    servicios = models.DecimalField(
     287        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Servicios no administrados")
     288    )
     289
     290    real_precios = models.ForeignKey(Precios, verbose_name=_("Sector Real"))
     291
     292    class Meta:
     293        verbose_name = _("Índice del Núcleo Inflacionario")
     294
     295@python_2_unicode_compatible
     296class PreciosProductos(models.Model):
     297    controlados = models.DecimalField(
     298        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("Controlados")
     299    )
     300
     301    no_controlados = models.DecimalField(
     302        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("No Controlados")
     303    )
     304
     305    real_precios = models.ForeignKey(Precios, verbose_name=_("Sector Real"))
     306
     307    class Meta:
     308        verbose_name = _("Índice de Productos Controlados y no Controlados")
     309
     310
     311
     312@python_2_unicode_compatible
    28313class SectorReal(models.Model):
    29314    """!
  • economico/templates/economico.precios.html

    ra56cae5 rfc268ed  
    6060                <div class="col-xs-2 col-sm-2 col-md-2 col-lg-2">{{ form.periodo_anho_fin }}</div>
    6161            </div>
    62             {% include 'base.down.up.files.html' with url_down=url_down app='economico' mod='AreaReal' %}
     62            {% include 'base.down.up.files.html' with url_down=url_down app='economico' mod='Precios' %}
    6363        </div>
    6464    </div>
    6565{% endblock %}
     66{% block extra_footer %}
     67    <script>
     68        $(document).ready(function() {
     69            $('#{{ form.dominio.auto_id }}').on('change', function() {
     70                $(this).val().split('dominio: ' + $(this).val() + ",").join("");
     71                if ($(this).val() != "") {
     72                    var filters = $("#filters");
     73                    filters.val(filters.val() + 'dominio: ' + $(this).val() + ',');
     74                }
     75            });
     76
     77            $('.download-file').on('click', function(e) {
     78                e.preventDefault();
     79                var filters = $("#filters"), json_filter = '';
     80                var dominio = $('#{{ form.dominio.auto_id }}');
     81                var anho_base = $("#{{ form.anho_base.auto_id }}");
     82                var periodo_mes_ini = $("#{{ form.periodo_mes_ini.auto_id }}");
     83                var periodo_mes_fin = $("#{{ form.periodo_mes_fin.auto_id }}");
     84                var periodo_anho_ini = $("#{{ form.periodo_anho_ini.auto_id }}");
     85                var periodo_anho_fin = $("#{{ form.periodo_anho_fin.auto_id }}");
     86
     87                if (dominio.val()) {
     88                    json_filter += "\"dominio\": \"" + dominio.val() + "\",";
     89                }
     90                if (anho_base.val()) {
     91                    json_filter += "\"anho_base\": \"" + anho_base.val() + "\",";
     92                }
     93                if (periodo_mes_ini.val()) {
     94                    json_filter += "\"periodo_mes_ini\": \"" + periodo_mes_ini.val() + "\",";
     95                }
     96                if (periodo_mes_fin.val()) {
     97                    json_filter += "\"periodo_mes_fin\": \"" + periodo_mes_fin.val() + "\",";
     98                }
     99                if (periodo_anho_ini.val()) {
     100                    json_filter += "\"periodo_anho_ini\": \"" + periodo_anho_ini.val() + "\",";
     101                }
     102                if (periodo_anho_fin.val()) {
     103                    json_filter += "\"periodo_anho_fin\": \"" + periodo_anho_fin.val() + "\",";
     104                }
     105
     106                if (json_filter) {
     107                    json_filter = json_filter.slice(0, -1);
     108                    filters.val(json_filter);
     109                }
     110
     111            });
     112        });
     113    </script>
     114{% endblock %}
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.