Conjunto b05dc84 en seiven


Ignorar:
Fecha y hora:
27/07/2017 14:51:46 (hace 7 años)
Autor:
elinares <elinares@…>
Branches:
master
Children:
abdd51a
Parents:
9ce081c
Mensaje:

Cambio en modelos PIB, PIBActividad, PIBInstitucion en el manejo del atributo trimeste. Se incluye el atributo fecha al modelo AgregadosBase? y se borra ese atributo de ReservasBancarias?. Modificación de nombres de los modelos: ReservasBancarias? por AgregadosReservas?, MonetariaUsos? por AgregadosUsos?, MonetariaFuentes? por AgregadosFuentes?, PrincipalesBancos? por TasasBancos?. Se incluye y verifica la codificación para agregar fechas al archivo a descargar en los modelos AgregadosMonetarios? y TasasInteres y se corrigen errores en la obtención y almacenamiento de los datos cargados para estos modelos.

Fichero:
1 editado

Leyenda

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

    re156b7a rb05dc84  
    128128        dominio, data_type = str(_('INPC')), 'N'
    129129
    130         # Condición para filtrar y mostrar la información según la selección del usuario
     130        ## Condición para filtrar y mostrar la información según la selección del usuario
    131131        if 'dominio' in kwargs:
    132132            if kwargs['dominio'] == 'N':
     
    137137                kwargs['ciudad__in'] = kwargs.pop('dominio')
    138138                kwargs['ciudad__in'] = [d for d in DOMINIO[1:][0]]
    139                 # Agrega la columna correspondiente a las ciudades
     139                ## Agrega la columna correspondiente a las ciudades
    140140                fields[0].insert(2, {'tag': '', 'cabecera': True})
    141141                fields[1].insert(2, {'tag': dominio, 'cabecera': True})
     
    158158                    mes = str(m)
    159159
    160             # Registros de Año y Mes
     160            ## Registros de Año y Mes
    161161            registros = [{'tag': p.anho}, {'tag': mes}]
    162162
    163             # Registros por ciudad si es solicitado
     163            ## Registros por ciudad si es solicitado
    164164            if data_type == 'C':
    165165                for d in DOMINIO[1:]:
     
    167167                        registros.append({'tag': str(d[1])})
    168168
    169             # Índice Nacional de Precios al Consumidor
     169            ## Índice Nacional de Precios al Consumidor
    170170            registros.append({'tag': str(p.inpc)})
    171171
     
    176176                    registros.append({'tag': str(grp.__getattribute__(g.attname))})
    177177
    178             # Asigna los indices por sector de origen
     178            ## Asigna los indices por sector de origen
    179179            sec = p.preciossector_set.get()
    180180            for s in sec._meta.get_fields():
     
    182182                    registros.append({'tag': str(sec.__getattribute__(s.attname))})
    183183
    184             # Asigna los indices por naturaleza y durabilidad
     184            ## Asigna los indices por naturaleza y durabilidad
    185185            nat = p.preciosnaturaleza_set.get()
    186186            for n in nat._meta.get_fields():
     
    188188                    registros.append({'tag': str(nat.__getattribute__(n.attname))})
    189189
    190             # Asigna los ínidces por servicio
     190            ## Asigna los ínidces por servicio
    191191            ser = p.preciosservicios_set.get()
    192192            for sv in ser._meta.get_fields():
     
    194194                    registros.append({'tag': str(ser.__getattribute__(sv.attname))})
    195195
    196             # Asigna los ínidces por núcleo inflacionario
     196            ## Asigna los ínidces por núcleo inflacionario
    197197            inf = p.preciosinflacionario_set.get()
    198198            for ni in inf._meta.get_fields():
     
    201201
    202202
    203             # Asigna los ínidces por productos controlados y no controlados
     203            ## Asigna los ínidces por productos controlados y no controlados
    204204            prd = p.preciosproductos_set.get()
    205205            for pr in prd._meta.get_fields():
     
    207207                    registros.append({'tag': str(prd.__getattribute__(pr.attname))})
    208208
    209             # Agrega los datos a la nueva fila del archivo a generar
     209            ## Agrega los datos a la nueva fila del archivo a generar
    210210            fields.append(registros)
    211211
     
    240240        for row in load_file.row[2:]:
    241241            try:
    242                 # Asigna el año base del registro
     242                ## Asigna el año base del registro
    243243                anho_b = anho_base = row[0] if i == 0 else anho_base
    244244
    245                 # Asigna el año de la fila que se esta procesando
     245                ## Asigna el año de la fila que se esta procesando
    246246                anho = row[0]
    247247
    248                 # Asigna el número de mes
     248                ## Asigna el número de mes
    249249                mes = [CONVERT_MES[m] for m in CONVERT_MES if m.find(row[1]) >= 0][0]
    250250
    251                 # Asigna la ciudad si el dominio no es nacional
     251                ## Asigna la ciudad si el dominio no es nacional
    252252                ciudad = row[2] if 'dominio' in kwargs and kwargs['dominio'] == 'C' else None
    253253
    254                 # Asigna el INPC total para el año base
     254                ## Asigna el INPC total para el año base
    255255                inpc = row[3] if ciudad else row[2]
    256256
    257                 # Condición que indica si el registro corresponde al año base
     257                ## Condición que indica si el registro corresponde al año base
    258258                base = True if i == 0 else False
    259259
    260                 # Registro de año y mes para los filtros
     260                ## Registro de año y mes para los filtros
    261261                fecha = datetime(int(anho), int(mes), 1)
    262262
    263                 # Condiciones para filtrar la información a cargar según las especificaciones del usuario
     263                ## Condiciones para filtrar la información a cargar según las especificaciones del usuario
    264264                if 'anho_base' in kwargs and kwargs['anho_base'] != load_file.row[2][0]:
    265265                    continue
     
    279279                    continue
    280280
    281                 # Gestión para los datos básicos de precios
     281                ## Gestión para los datos básicos de precios
    282282                real_p, created = Precios.objects.update_or_create(
    283283                    anho=anho, mes=mes, ciudad=ciudad, fecha=fecha,
     
    286286
    287287
    288                 # Gestión de datos para el Índice por Grupos
     288                ## Gestión de datos para el Índice por Grupos
    289289                PreciosGrupo.objects.update_or_create(real_precios=real_p, defaults={
    290290                    'base': base,
     
    304304                })
    305305
    306                 # Gestión de datos para el Índice por Sector de Origen
     306                ## Gestión de datos para el Índice por Sector de Origen
    307307                PreciosSector.objects.update_or_create(real_precios=real_p, defaults={
    308308                    'base': base,
     
    312312                })
    313313
    314                 # Gestión de datos para el Índice por Naturaleza y Durabilidad
     314                ## Gestión de datos para el Índice por Naturaleza y Durabilidad
    315315                PreciosNaturaleza.objects.update_or_create(real_precios=real_p, defaults={
    316316                    'base': base,
     
    322322                })
    323323
    324                 # Gestión de datos para el Índice por Servicios
     324                ## Gestión de datos para el Índice por Servicios
    325325                PreciosServicios.objects.update_or_create(real_precios=real_p, defaults={
    326326                    'base': base,
     
    330330                })
    331331
    332                 # Gestion de datos para el Índice por Núcleo Inflacionario
     332                ## Gestion de datos para el Índice por Núcleo Inflacionario
    333333                PreciosInflacionario.objects.update_or_create(real_precios=real_p, defaults={
    334334                    'base': base,
     
    340340                })
    341341
    342                 # Gestión de datos para el Índice de Productos Controlados y No Controlados
     342                ## Gestión de datos para el Índice de Productos Controlados y No Controlados
    343343                PreciosProductos.objects.update_or_create(real_precios=real_p, defaults={
    344344                    'base': base,
     
    570570    ## Año al que pertenece el(los) registro(s)
    571571    anho = models.CharField(max_length=4, verbose_name=_("Año"))
     572
     573    ## Número del trimestre al que pertenece el registro
     574    trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))
    572575
    573576    ## Valor de los registros si son nominales, en caso contrario almacena False
     
    657660                    {'tag': '', 'cabecera': True},
    658661                    {'tag': '', 'cabecera': True},
    659                     {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 18, 'cabecera': True}
     662                    {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 17, 'cabecera': True}
    660663                ],
    661664                [
     
    680683                ]
    681684            ]
    682             # Asigna el nombre del archivo a descargar
     685            ## Asigna el nombre del archivo a descargar
    683686            nombre_archivo = 'PIB-Actividad_economica'
    684687
     
    697700                ]
    698701            ]
    699             # Asigna el nombre del archivo a descargar
     702            ## Asigna el nombre del archivo a descargar
    700703            nombre_archivo = 'PIB-Institucional'
    701704
     
    710713        diff_anhos = int(kwargs['anho__lte']) - int(kwargs['anho__gte']) + 1       
    711714        if any('trimestre' in index for index in kwargs):
    712             fields[1].insert(1, {'tag': str(PIBActividad._meta.get_field('trimestre').verbose_name), 'cabecera': True})
    713             # Almacena los datos de año y trimestre inicial provenientes del formulario
     715            fields[1].insert(1, {'tag': str(PIB._meta.get_field('trimestre').verbose_name), 'cabecera': True})
     716            ## Almacena los datos de año y trimestre inicial provenientes del formulario
    714717            anho_ini = int(kwargs['anho__gte'])
    715718            trimestre_ini = int(kwargs['trimestre__gte'])
    716719
    717             # Genera los años y trimestres correspondientes a los parámetros del formulario
     720            ## Genera los años y trimestres correspondientes a los parámetros del formulario
    718721            registros = []
    719722            while True:
    720723                registros = [({'tag': anho_ini})]
    721724                registros.append({'tag': trimestre_ini})
    722                 # Agrega los datos a la nueva fila del archivo a generar
     725                ## Agrega los datos a la nueva fila del archivo a generar
    723726                fields.append(registros)
    724727                if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])):
     
    729732                trimestre_ini += 1
    730733        else:
    731             # Almacena los años de los registros a descargar
     734            ## Almacena los años de los registros a descargar
    732735            for i in range(diff_anhos):
    733736                registros = [({'tag': int(kwargs['anho__gte']) + i})]
    734                 # Agrega los datos a la nueva fila del archivo a generar
     737                ## Agrega los datos a la nueva fila del archivo a generar
    735738                fields.append(registros)
    736739        ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo
     
    755758
    756759        load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0]
    757         anhos_base, anho_b, errors, result, message, is_nominal = None, None, '', False, '', False
     760        anhos_base, anho_b, errors, result, message, is_nominal = [], None, '', False, '', False
    758761        is_demanda, is_produccion, is_actividad, is_sector = False, False, False, False
    759762        load_data_msg = str(_("Datos Cargados"))
     
    797800 
    798801        if not is_nominal:
    799             # Se crea una lista con los años base del modelo
     802            ## Se crea una lista con los años base del modelo
    800803            anhos_base = [int(anhos.anho) for anhos in AnhoBase.objects.all()]
    801804            #Se almacena el año base suministrado en el formulario
    802805            anho_b = AnhoBase.objects.get(id=kwargs['anho_base'])
     806
    803807        ## En base al archivo cargado, se validan y cargan a la base de datos los valores contenidos en el archivo
    804808        for row in load_file.row[2:]:
    805809            try:
    806                 # Obtención del año a registrar
     810                ## Obtención del año a registrar
    807811                anho = row[0]
    808812
    809                 # Condición que indica si el registro corresponde al año base
     813                ## Condición que indica si el registro corresponde al año base
    810814                base = True if anho in anhos_base else False
    811                
    812                 # Almacena el valor en caso de tratarse del archivo PIB-Nominal_demanda o False en caso contrario
     815
     816                ## Almacena el valor en caso de tratarse del archivo PIB-Nominal_demanda o False en caso contrario
    813817                nominal = row[1] if (is_nominal and is_demanda) else None
    814818
    815                 # Gestión para los datos básicos de pib
    816                 real_pib, created = PIB.objects.update_or_create(anho=anho, anho_base=anho_b, nominal=nominal)
     819                ## Almacena el valor del trimestre en caso de contener esta columna
     820                trimestre = row[1] if (is_actividad or is_sector) else None
     821
     822                ## Gestión para los datos básicos de pib
     823                real_pib, created = PIB.objects.update_or_create(anho=anho, anho_base=anho_b, trimestre=trimestre, nominal=nominal)
    817824
    818825                if is_demanda:
    819                     # Gestión de datos para el Índice por Demanda
     826                    ## Gestión de datos para el Índice por Demanda
    820827                    PIBDemanda.objects.update_or_create(pib=real_pib, defaults={
    821828                        'base': base,
     
    826833                    })
    827834                elif is_produccion:
    828                     # Gestión de datos para el Índice por Producción
     835                    ## Gestión de datos para el Índice por Producción
    829836                    PIBProduccion.objects.update_or_create(pib=real_pib, defaults={
    830837                        'base': base,
     
    834841                    })
    835842                elif is_actividad:
    836                     # Gestión de datos para el ïndice por Actividad Económica
     843                    ## Gestión de datos para el ïndice por Actividad Económica
    837844                    PIBActividad.objects.update_or_create(pib=real_pib, defaults={
    838845                        'base': base,
    839                         'trimestre': check_val_data(row[1]),
    840846                        'total_consolidado': check_val_data(row[2]),
    841847                        'total_petrolera': check_val_data(row[3]),
     
    857863                    })
    858864                elif is_sector:
    859                     # Gestión de datos para el Índice por Sector Institucional
     865                    ## Gestión de datos para el Índice por Sector Institucional
    860866                    PIBInstitucion.objects.update_or_create(pib=real_pib, defaults={
    861867                        'base': base,
    862                         'trimestre': check_val_data(row[1]),
    863868                        'publico': check_val_data(row[2]),
    864869                        'privado': check_val_data(row[3])
     
    966971    """
    967972
    968     trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))
    969 
    970973    total_consolidado = models.DecimalField(
    971974        max_digits=18, decimal_places=2, default=0.0, verbose_name=_("PIB Consolidado")
     
    10651068    @version 1.0.0
    10661069    """
    1067    
    1068     trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))
    10691070
    10701071    publico = models.DecimalField(
     
    13821383    """
    13831384
     1385    ## Fecha a la que pertenece el registro
     1386    fecha = models.DateField(null=True, verbose_name=_("Fecha"))
     1387
    13841388    ## Semana a la que pertenece el registro
    1385     semana = models.CharField(max_length=2, verbose_name=_("Semana"))
     1389    semana = models.CharField(null=True, max_length=2, verbose_name=_("Semana"))
    13861390
    13871391    ## Mes al que pertenece el registro
    1388     mes = models.CharField(max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
     1392    mes = models.CharField(null=True, max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
    13891393
    13901394    ## Año al que pertenece el registro
    1391     anho = models.CharField(max_length=4, verbose_name=_("Año"))
     1395    anho = models.CharField(null=True, max_length=4, verbose_name=_("Año"))
    13921396
    13931397    class Meta:
     
    14311435                [
    14321436                    {'tag': '', 'cabecera': True},
    1433                     {'tag': str(ReservasBancarias._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 1,'cabecera': True}
     1437                    {'tag': str(AgregadosReservas._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 1,'cabecera': True}
    14341438                ],
    14351439                [
    1436                     {'tag': str(ReservasBancarias._meta.get_field('fecha').verbose_name), 'cabecera': True},
    1437                     {'tag': str(ReservasBancarias._meta.get_field('reservas_bancarias').verbose_name), 'cabecera': True}
     1440                    {'tag': str(AgregadosBase._meta.get_field('fecha').verbose_name), 'cabecera': True},
     1441                    {'tag': str(AgregadosReservas._meta.get_field('reservas_bancarias').verbose_name), 'cabecera': True}
    14381442                ]
    14391443            ]
     
    14441448                [
    14451449                    {'tag': '', 'cabecera': True},
    1446                     {'tag': str(MonetariaUsos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4,'cabecera': True}
     1450                    {'tag': str(AgregadosUsos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4,'cabecera': True}
    14471451                ],
    14481452                [
    14491453                    {'tag': str(AgregadosBase._meta.get_field('semana').verbose_name), 'cabecera': True},
    1450                     {'tag': str(MonetariaUsos._meta.get_field('depositos_bcu').verbose_name), 'cabecera': True},
    1451                     {'tag': str(MonetariaUsos._meta.get_field('depositos_rsb').verbose_name), 'cabecera': True},
    1452                     {'tag': str(MonetariaUsos._meta.get_field('depositos_ep').verbose_name), 'cabecera': True},
    1453                     {'tag': str(MonetariaUsos._meta.get_field('monedas_billetes').verbose_name), 'cabecera': True}
     1454                    {'tag': str(AgregadosUsos._meta.get_field('depositos_bcu').verbose_name), 'cabecera': True},
     1455                    {'tag': str(AgregadosUsos._meta.get_field('depositos_rsb').verbose_name), 'cabecera': True},
     1456                    {'tag': str(AgregadosUsos._meta.get_field('depositos_ep').verbose_name), 'cabecera': True},
     1457                    {'tag': str(AgregadosUsos._meta.get_field('monedas_billetes').verbose_name), 'cabecera': True}
    14541458                ]
    14551459            ]
     
    14601464                [
    14611465                    {'tag': '', 'cabecera': True},
    1462                     {'tag': str(MonetariaFuentes._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 6,'cabecera': True}
     1466                    {'tag': str(AgregadosFuentes._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 6,'cabecera': True}
    14631467                ],
    14641468                [
    14651469                    {'tag': str(AgregadosBase._meta.get_field('semana').verbose_name), 'cabecera': True},
    1466                     {'tag': str(MonetariaFuentes._meta.get_field('reservas_internacionales').verbose_name), 'cabecera': True},
    1467                     {'tag': str(MonetariaFuentes._meta.get_field('sector_publico').verbose_name), 'cabecera': True},
    1468                     {'tag': str(MonetariaFuentes._meta.get_field('sector_financiero').verbose_name), 'cabecera': True},
    1469                     {'tag': str(MonetariaFuentes._meta.get_field('credito_bcv').verbose_name), 'cabecera': True},
    1470                     {'tag': str(MonetariaFuentes._meta.get_field('otras_cuentas').verbose_name), 'cabecera': True},
    1471                     {'tag': str(MonetariaFuentes._meta.get_field('capital_pagado_reservas').verbose_name), 'cabecera': True}
     1470                    {'tag': str(AgregadosFuentes._meta.get_field('reservas_internacionales').verbose_name), 'cabecera': True},
     1471                    {'tag': str(AgregadosFuentes._meta.get_field('sector_publico').verbose_name), 'cabecera': True},
     1472                    {'tag': str(AgregadosFuentes._meta.get_field('sector_financiero').verbose_name), 'cabecera': True},
     1473                    {'tag': str(AgregadosFuentes._meta.get_field('credito_bcv').verbose_name), 'cabecera': True},
     1474                    {'tag': str(AgregadosFuentes._meta.get_field('otras_cuentas').verbose_name), 'cabecera': True},
     1475                    {'tag': str(AgregadosFuentes._meta.get_field('capital_pagado_reservas').verbose_name), 'cabecera': True}
    14721476                ]
    14731477            ]
    14741478            nombre_archivo = 'Base_monetaria_fuentes'   
    1475         ## Colocar en el archivo de salida las fechas excepto fines de semana segun la selección del usuario
    1476         if any('fecha' in index for index in kwargs):
    1477             inicio=datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
    1478             fin=datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1479        if any('reservas_bancarias' in index for index in kwargs):
     1480            ## Si el dominio es reservas bancarias, se agregan al archivo las fechas por días excepto fines de semana
     1481            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1482            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
    14791483            delta = timedelta(days=1)
    14801484            while inicio <= fin:
    14811485                if inicio.weekday() < 5:
    1482                     fields.append([ {'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
    1483                 inicio+= delta       
    1484         ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo   
     1486                    fields.append([{'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
     1487                inicio += delta
     1488        else:
     1489            ## Para los demás dominios, se agregan al archivo las fechas por semanas dentro de las fechas indicadas
     1490            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1491            if inicio.weekday() != 4:
     1492                inicio = inicio - timedelta(inicio.weekday()) + timedelta(days=4)
     1493            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1494            if fin.weekday() != 4:
     1495                fin = fin - timedelta(fin.weekday()) + timedelta(days=4)
     1496           
     1497            while inicio <= fin:
     1498                fields.append([{'tag': str(_(str(inicio.strftime("%d/%m/%Y"))))}])
     1499                inicio += timedelta(weeks=1)
     1500        ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo
    14851501        return {'fields': fields, 'output': nombre_archivo}
    14861502
     
    15021518        load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0]
    15031519        errors, result, message = '', False, ''
    1504         is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = True, True, True, True
     1520        is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = False, False, False, False
    15051521        load_data_msg = str(_("Datos Cargados"))
    15061522
     
    15211537        if is_liquidez_monetaria and (load_file.row[0][1] == str(AgregadosMonetarios._meta.verbose_name)):
    15221538            result = True
    1523         elif is_reservas_bancarias and (load_file.row[0][1] == str(ReservasBancarias._meta.verbose_name)):
     1539        elif is_reservas_bancarias and (load_file.row[0][1] == str(AgregadosReservas._meta.verbose_name)):
    15241540            result = True
    1525         elif is_monetaria_usos and (load_file.row[0][1] == str(MonetariaUsos._meta.verbose_name)):
     1541        elif is_monetaria_usos and (load_file.row[0][1] == str(AgregadosUsos._meta.verbose_name)):
    15261542            result = True
    1527         elif is_monetaria_fuentes and (load_file.row[0][1] == str(MonetariaFuentes._meta.verbose_name)):
     1543        elif is_monetaria_fuentes and (load_file.row[0][1] == str(AgregadosFuentes._meta.verbose_name)):
    15281544            result = True
    15291545
     
    15421558        for row in load_file.row[2:]:
    15431559            try:
    1544                 # Asigna la semana del registro
    1545                 semana = row[0] if not is_reservas_bancarias else None
    1546 
    1547                 # Asigna el mes del registro
    1548                 mes = 10
    1549 
    1550                 # Asigna el año del registro
    1551                 anho = 100
    1552 
    1553                 # Asigna la fecha del registro
    1554                 fecha = fecha=datetime.strptime(row[0], "%d/%m/%Y")
    1555                 #datetime(int(anho), int(mes), 1) if is_reservas_bancarias else 1000
    1556 
    1557                 # Gestión para los datos básicos de Agregados Monetarios
    1558                 agregados, created = AgregadosBase.objects.update_or_create(semana=semana, mes=mes, anho=anho)
     1560                ## Asigna la fecha del registro
     1561                fecha = datetime.strptime(row[0], "%d/%m/%Y")
     1562
     1563                ## Separa la fecha para obtener mes y año
     1564                f = row[0].split('/')
     1565
     1566                ## Obtiene la semana respecto al año
     1567                semana = fecha.isocalendar()[1]
     1568               
     1569                ## Gestión para los datos básicos de Agregados Monetarios
     1570                agregados, created = AgregadosBase.objects.update_or_create(fecha=fecha, semana=semana, mes=f[1], anho=f[2])
    15591571
    15601572                if is_liquidez_monetaria:
    15611573                    ## Gestión de datos para la categoría Agregados Monetarios
    1562                     AgregadosMonetarios.objects.update_or_create(agregados = agregados, default={
    1563                         'monedas_billetes': chek_val_data(row[1]),
    1564                         'depositos_vista': chek_val_data(row[2]),
    1565                         'depositos_ahorro': chek_val_data(row[3]),
    1566                         'depositos_plazo': chek_val_data(row[4]),
    1567                         'cuasidinero': chek_val_data(row[5]),
    1568                         'cedulas_hipotecarias': chek_val_data(row[6])
     1574                    AgregadosMonetarios.objects.update_or_create(agregados = agregados, defaults={
     1575                        'monedas_billetes': check_val_data(row[1]),
     1576                        'depositos_vista': check_val_data(row[2]),
     1577                        'depositos_ahorro': check_val_data(row[3]),
     1578                        'depositos_plazo': check_val_data(row[4]),
     1579                        'cuasidinero': check_val_data(row[5]),
     1580                        'cedulas_hipotecarias': check_val_data(row[6])
    15691581                    })
    15701582                elif is_reservas_bancarias:
    15711583                    ## Gestión de datos para la categoría Reservas Bancarias
    1572                     ReservasBancarias.objects.update_or_create(agregados = agregados, default={
    1573                         'fecha': fecha,
    1574                         'reservas_bancarias': chek_val_data(row[1])
     1584                    AgregadosReservas.objects.update_or_create(agregados = agregados, defaults={
     1585                        'reservas_bancarias': check_val_data(row[1])
    15751586                    })
    15761587                elif is_monetaria_usos:
    15771588                    ## Gestión de datos para la categoría Base Monetaria Usos
    1578                     MonetariaUsos.objects.update_or_create(agregados = agregados, default={
    1579                         'depositos_bcu': chek_val_data(row[1]),
    1580                         'depositos_rsb': chek_val_data(row[2]),
    1581                         'depositos_ep': chek_val_data(row[3]),
    1582                         'monedas_billetes': chek_val_data(row[4])
     1589                    AgregadosUsos.objects.update_or_create(agregados = agregados, defaults={
     1590                        'depositos_bcu': check_val_data(row[1]),
     1591                        'depositos_rsb': check_val_data(row[2]),
     1592                        'depositos_ep': check_val_data(row[3]),
     1593                        'monedas_billetes': check_val_data(row[4])
    15831594                    })
    15841595                elif is_monetaria_fuentes:
    15851596                    ## Gestión de datos para la categoría Base Monetaria Fuentes
    1586                     MonetariaFuentes.objects.update_or_create(agregados = agregados, default={
    1587                         'reservas_internacionales': chek_val_data(row[1]),
    1588                         'sector_publico': chek_val_data(row[2]),
    1589                         'sector_financiero': chek_val_data(row[3]),
    1590                         'credito_bcv': chek_val_data(row[4]),
    1591                         'otras_cuentas': chek_val_data(row[5]),
    1592                         'capital_pagado_reservas': chek_val_data(row[6])
     1597                    AgregadosFuentes.objects.update_or_create(agregados = agregados, defaults={
     1598                        'reservas_internacionales': check_val_data(row[1]),
     1599                        'sector_publico': check_val_data(row[2]),
     1600                        'sector_financiero': check_val_data(row[3]),
     1601                        'credito_bcv': check_val_data(row[4]),
     1602                        'otras_cuentas': check_val_data(row[5]),
     1603                        'capital_pagado_reservas': check_val_data(row[6])
    15931604                    })
    15941605            except Exception as e:
     
    16551666
    16561667@python_2_unicode_compatible
    1657 class ReservasBancarias(models.Model):
     1668class AgregadosReservas(models.Model):
    16581669    """!
    16591670    Clase que contiene los registros de la categoría reservas bancarias de la sub-área Agregados Monetarios
     
    16641675    @version 1.0.0
    16651676    """
    1666    
    1667     ## Fecha a la que pertenece el registro
    1668     fecha = models.DateField(null=True, verbose_name=_("Fecha"))
    16691677
    16701678    ## Reservas Bancarias
     
    16801688
    16811689@python_2_unicode_compatible
    1682 class MonetariaUsos(models.Model):
     1690class AgregadosUsos(models.Model):
    16831691    """!
    16841692    Clase que contiene los registros de la categoría base monetaria usos de la sub-área Agregados Monetarios
     
    17171725
    17181726@python_2_unicode_compatible
    1719 class MonetariaFuentes(models.Model):
     1727class AgregadosFuentes(models.Model):
    17201728    """!
    17211729    Clase que contiene los registros de la categoría base monetaria fuentes de la sub-área Agregados Monetarios
     
    17791787   
    17801788    ## Semana a la que pertenece el registro
    1781     semana = models.CharField(max_length=2, verbose_name=_("Semana"))
     1789    semana = models.CharField(null=True, max_length=2, verbose_name=_("Semana"))
    17821790
    17831791    ## Mes al que pertenece el registro
    1784     mes = models.CharField(max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
     1792    mes = models.CharField(null=True, max_length=2, choices=MESES[1:], verbose_name=_("Mes"))
    17851793
    17861794    ## Año al que pertenece el registro
    1787     anho = models.CharField(max_length=4, verbose_name=_("Año"))
     1795    anho = models.CharField(null=True, max_length=4, verbose_name=_("Año"))
    17881796
    17891797    class Meta:
     
    18091817                [
    18101818                    {'tag': '', 'cabecera': True},
    1811                     {'tag': str(PrincipalesBancos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 3, 'cabecera': True}
     1819                    {'tag': str(TasasBancos._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 3, 'cabecera': True}
    18121820                ],
    18131821                [
    18141822                    {'tag': str(TasasInteres._meta.get_field('semana').verbose_name), 'cabecera': True},
    1815                     {'tag': str(PrincipalesBancos._meta.get_field('operaciones_activas').verbose_name), 'cabecera': True},
    1816                     {'tag': str(PrincipalesBancos._meta.get_field('depositos_90_dias').verbose_name), 'cabecera': True},
    1817                     {'tag': str(PrincipalesBancos._meta.get_field('depositos_ahorro').verbose_name), 'cabecera': True}
     1823                    {'tag': str(TasasBancos._meta.get_field('operaciones_activas').verbose_name), 'cabecera': True},
     1824                    {'tag': str(TasasBancos._meta.get_field('depositos_90_dias').verbose_name), 'cabecera': True},
     1825                    {'tag': str(TasasBancos._meta.get_field('depositos_ahorro').verbose_name), 'cabecera': True}
    18181826                ]
    18191827            ]
     
    18251833                [
    18261834                    {'tag': '', 'cabecera': True},
    1827                     {'tag': str(_('Tasas de Bancos Comerciales y Universales')), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
     1835                    {'tag': str(TasaActiva._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 4, 'cabecera': True},
    18281836                    {'tag': str(_('Por Actividad Económica')), 'color': 'green', 'text_color': 'white', 'combine': 13, 'cabecera': True},
    18291837                    {'tag': str(_('Condición Jurídica')), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 2, 'cabecera': True}
     
    18761884            ## Asigna el nombre del archivo a descargar
    18771885            nombre_archivo = 'Tasas_pasiva'
    1878         ## Colocar en el archivo de salida las fechas excepto fines de semana segun la selección del usuario
    1879         if any('fecha' in index for index in kwargs):
    1880             inicio=datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
    1881             fin=datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1886
     1887        if any('tasa_pb' in index for index in kwargs):
     1888            ## Para el dominio Principales Bancos, se agregan al archivo las fechas por semanas dentro de las fechas indicadas
     1889            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1890            if inicio.weekday() != 4:
     1891                inicio = inicio - timedelta(inicio.weekday()) + timedelta(days=4)
     1892            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
     1893            if fin.weekday() != 4:
     1894                fin = fin - timedelta(fin.weekday()) + timedelta(days=4)
     1895           
     1896            while inicio <= fin:
     1897                fields.append([{'tag': str(_(str(inicio.strftime("%d/%m/%Y"))))}])
     1898                inicio += timedelta(weeks=1)
     1899        else:
     1900            ## Para los demás dominios, se agregan al archivo las fechas por días excepto fines de semana
     1901            inicio = datetime.strptime(kwargs['fecha__gte'], "%d/%m/%Y")
     1902            fin = datetime.strptime(kwargs['fecha__lte'], "%d/%m/%Y")
    18821903            delta = timedelta(days=1)
    18831904            while inicio <= fin:
    18841905                if inicio.weekday() < 5:
    1885                     fields.append([ {'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
    1886                 inicio+= delta
     1906                    fields.append([{'tag': str(_(str(inicio.strftime('%d/%m/%Y'))))}])
     1907                inicio += delta
     1908
    18871909        ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo
    18881910        return {'fields': fields, 'output': nombre_archivo}
     
    19201942
    19211943        ## Valida que el archivo corresponde a lo indicado en los parámetros del formulario
    1922         if is_tasa_pb and (load_file.row[0][1] == str(PrincipalesBancos._meta.verbose_name)):
     1944        if is_tasa_pb and (load_file.row[0][1] == str(TasasBancos._meta.verbose_name)):
    19231945            result = True
    1924         elif is_tasa_activa and (load_file.row[0][1] == str(_('Tasas de Bancos Comerciales y Universales'))):
     1946        elif is_tasa_activa and (load_file.row[0][1] == str(TasaActiva._meta.verbose_name)):
    19251947            result = True
    19261948        elif is_tasa_pasiva and (load_file.row[0][1] == str(TasaPasiva._meta.verbose_name)):
     
    19411963        for row in load_file.row[2:]:
    19421964            try:
    1943                 ## Asigna la semana del registro
    1944                 semana = 1
    1945                 #row[0] if is_tasa_pb else None
    1946 
    1947                 ## Asigna el mes del registro
    1948                 mes = None
    1949 
    1950                 ## Asigna el año del registro
    1951                 anho = None
    1952 
    19531965                ## Asigna la fecha del registro
    19541966                fecha = datetime.strptime(row[0], "%d/%m/%Y")
    19551967
     1968                ## Separa la fecha para obtener mes y año
     1969                f = row[0].split('/')
     1970
     1971                ## Obtiene la semana respecto al año
     1972                semana = fecha.isocalendar()[1]
     1973
    19561974                ## Gestión para los datos básicos de Tasas de Interés
    1957                 tasas, created = TasasInteres.objects.update_or_create(fecha=fecha, semana=semana, mes=mes, anho=anho)
     1975                tasas, created = TasasInteres.objects.update_or_create(fecha=fecha, semana=semana, mes=f[1], anho=f[2])
    19581976
    19591977                if is_tasa_pb:
    19601978                    ## Gestión de datos para la categoría Seis Principales Bancos
    1961                     PrincipalesBancos.objects.update_or_create(tasas=tasas, defaults={
     1979                    TasasBancos.objects.update_or_create(tasas=tasas, defaults={
    19621980                        'operaciones_activas': check_val_data(row[1]),
    19631981                        'depositos_90_dias': check_val_data(row[2]),
     
    19761994                        'servicios': check_val_data(row[8]),
    19771995                        'creditos_hipotecarios': check_val_data(row[9]),
    1978                         'transporte_alimento': check_val_data(row[10]),
     1996                        'transporte_almacenamiento': check_val_data(row[10]),
    19791997                        'turismo': check_val_data(row[11]),
    19801998                        'comunicaciones': check_val_data(row[12]),
     
    20162034
    20172035@python_2_unicode_compatible
    2018 class PrincipalesBancos(models.Model):
     2036class TasasBancos(models.Model):
    20192037    """!
    20202038    Clase que contiene los registros de la categoría Seis Principales Bancos de la sub-área Tasas de Interés
     
    21572175
    21582176    class Meta:
    2159         verbose_name = _('Tasa de Interés Activa')
     2177        verbose_name = _('Tasas de Bancos Comerciales y Universales')
    21602178
    21612179@python_2_unicode_compatible
     
    22192237
    22202238    class Meta:
    2221         verbose_name = _('Tasa de Interés Activa')
     2239        verbose_name = _('Tasa de Interés Pasiva')
    22222240
    22232241#-----------------------------Economía - Externo - Reservas, Tipo de Cambio
     
    25322550        anho_base = kwargs['anho_base'] if 'anho_base' in kwargs else ''
    25332551       
    2534         # Almacena los datos de año y trimestre inicial provenientes del formulario
     2552        ## Almacena los datos de año y trimestre inicial provenientes del formulario
    25352553        anho_ini = int(kwargs['anho__gte'])
    25362554        trimestre_ini = int(kwargs['trimestre__gte'])
    25372555
    2538         # Genera los años y trimestres correspondientes a los parámetros del formulario
     2556        ## Genera los años y trimestres correspondientes a los parámetros del formulario
    25392557        registros = []
    25402558        while True:
     
    26432661                    registros.append({'tag':balanza_datos_is.privado_petroleo})
    26442662                    registros.append({'tag':balanza_datos_is.privado_no_petroleo})
    2645             # Agrega los datos a la nueva fila del archivo a generar
     2663            ## Agrega los datos a la nueva fila del archivo a generar
    26462664            fields.append(registros)
    26472665            if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])):
     
    27972815
    27982816
    2799         # Envia correo electronico al usuario indicando el estatus de la carga de datos
     2817        ## Envia correo electronico al usuario indicando el estatus de la carga de datos
    28002818        enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, {
    28012819            'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email,
     
    30603078            fields.append(sub_header)
    30613079       
    3062         # Almacena los datos de año y trimestre inicial provenientes del formulario
     3080        ## Almacena los datos de año y trimestre inicial provenientes del formulario
    30633081        anho_ini = int(kwargs['anho__gte'])
    30643082        trimestre_ini = int(kwargs['trimestre__gte'])
     
    30673085            registros = [({'tag': anho_ini})]
    30683086            registros.append({'tag': trimestre_ini})
    3069             # Agrega los datos a la nueva fila del archivo a generar
     3087            ## Agrega los datos a la nueva fila del archivo a generar
    30703088            if(kwargs['dominio']=='BP'):
    30713089                cuenta_capital_base = CuentaCapitalBalanzaBase.objects.filter(anho=anho_ini,trimestre=trimestre_ini)
     
    33583376
    33593377
    3360         # Envia correo electronico al usuario indicando el estatus de la carga de datos
     3378        ## Envia correo electronico al usuario indicando el estatus de la carga de datos
    33613379        enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, {
    33623380            'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email,
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.