Conjunto b05dc84 en seiven
- Fecha y hora:
- 27/07/2017 14:51:46 (hace 7 años)
- Branches:
- master
- Children:
- abdd51a
- Parents:
- 9ce081c
- Fichero:
-
- 1 editado
Leyenda
- No modificado
- Añadido
- Eliminado
-
economico/models.py
re156b7a rb05dc84 128 128 dominio, data_type = str(_('INPC')), 'N' 129 129 130 # Condición para filtrar y mostrar la información según la selección del usuario130 ## Condición para filtrar y mostrar la información según la selección del usuario 131 131 if 'dominio' in kwargs: 132 132 if kwargs['dominio'] == 'N': … … 137 137 kwargs['ciudad__in'] = kwargs.pop('dominio') 138 138 kwargs['ciudad__in'] = [d for d in DOMINIO[1:][0]] 139 # Agrega la columna correspondiente a las ciudades139 ## Agrega la columna correspondiente a las ciudades 140 140 fields[0].insert(2, {'tag': '', 'cabecera': True}) 141 141 fields[1].insert(2, {'tag': dominio, 'cabecera': True}) … … 158 158 mes = str(m) 159 159 160 # Registros de Año y Mes160 ## Registros de Año y Mes 161 161 registros = [{'tag': p.anho}, {'tag': mes}] 162 162 163 # Registros por ciudad si es solicitado163 ## Registros por ciudad si es solicitado 164 164 if data_type == 'C': 165 165 for d in DOMINIO[1:]: … … 167 167 registros.append({'tag': str(d[1])}) 168 168 169 # Índice Nacional de Precios al Consumidor169 ## Índice Nacional de Precios al Consumidor 170 170 registros.append({'tag': str(p.inpc)}) 171 171 … … 176 176 registros.append({'tag': str(grp.__getattribute__(g.attname))}) 177 177 178 # Asigna los indices por sector de origen178 ## Asigna los indices por sector de origen 179 179 sec = p.preciossector_set.get() 180 180 for s in sec._meta.get_fields(): … … 182 182 registros.append({'tag': str(sec.__getattribute__(s.attname))}) 183 183 184 # Asigna los indices por naturaleza y durabilidad184 ## Asigna los indices por naturaleza y durabilidad 185 185 nat = p.preciosnaturaleza_set.get() 186 186 for n in nat._meta.get_fields(): … … 188 188 registros.append({'tag': str(nat.__getattribute__(n.attname))}) 189 189 190 # Asigna los ínidces por servicio190 ## Asigna los ínidces por servicio 191 191 ser = p.preciosservicios_set.get() 192 192 for sv in ser._meta.get_fields(): … … 194 194 registros.append({'tag': str(ser.__getattribute__(sv.attname))}) 195 195 196 # Asigna los ínidces por núcleo inflacionario196 ## Asigna los ínidces por núcleo inflacionario 197 197 inf = p.preciosinflacionario_set.get() 198 198 for ni in inf._meta.get_fields(): … … 201 201 202 202 203 # Asigna los ínidces por productos controlados y no controlados203 ## Asigna los ínidces por productos controlados y no controlados 204 204 prd = p.preciosproductos_set.get() 205 205 for pr in prd._meta.get_fields(): … … 207 207 registros.append({'tag': str(prd.__getattribute__(pr.attname))}) 208 208 209 # Agrega los datos a la nueva fila del archivo a generar209 ## Agrega los datos a la nueva fila del archivo a generar 210 210 fields.append(registros) 211 211 … … 240 240 for row in load_file.row[2:]: 241 241 try: 242 # Asigna el año base del registro242 ## Asigna el año base del registro 243 243 anho_b = anho_base = row[0] if i == 0 else anho_base 244 244 245 # Asigna el año de la fila que se esta procesando245 ## Asigna el año de la fila que se esta procesando 246 246 anho = row[0] 247 247 248 # Asigna el número de mes248 ## Asigna el número de mes 249 249 mes = [CONVERT_MES[m] for m in CONVERT_MES if m.find(row[1]) >= 0][0] 250 250 251 # Asigna la ciudad si el dominio no es nacional251 ## Asigna la ciudad si el dominio no es nacional 252 252 ciudad = row[2] if 'dominio' in kwargs and kwargs['dominio'] == 'C' else None 253 253 254 # Asigna el INPC total para el año base254 ## Asigna el INPC total para el año base 255 255 inpc = row[3] if ciudad else row[2] 256 256 257 # Condición que indica si el registro corresponde al año base257 ## Condición que indica si el registro corresponde al año base 258 258 base = True if i == 0 else False 259 259 260 # Registro de año y mes para los filtros260 ## Registro de año y mes para los filtros 261 261 fecha = datetime(int(anho), int(mes), 1) 262 262 263 # Condiciones para filtrar la información a cargar según las especificaciones del usuario263 ## Condiciones para filtrar la información a cargar según las especificaciones del usuario 264 264 if 'anho_base' in kwargs and kwargs['anho_base'] != load_file.row[2][0]: 265 265 continue … … 279 279 continue 280 280 281 # Gestión para los datos básicos de precios281 ## Gestión para los datos básicos de precios 282 282 real_p, created = Precios.objects.update_or_create( 283 283 anho=anho, mes=mes, ciudad=ciudad, fecha=fecha, … … 286 286 287 287 288 # Gestión de datos para el Índice por Grupos288 ## Gestión de datos para el Índice por Grupos 289 289 PreciosGrupo.objects.update_or_create(real_precios=real_p, defaults={ 290 290 'base': base, … … 304 304 }) 305 305 306 # Gestión de datos para el Índice por Sector de Origen306 ## Gestión de datos para el Índice por Sector de Origen 307 307 PreciosSector.objects.update_or_create(real_precios=real_p, defaults={ 308 308 'base': base, … … 312 312 }) 313 313 314 # Gestión de datos para el Índice por Naturaleza y Durabilidad314 ## Gestión de datos para el Índice por Naturaleza y Durabilidad 315 315 PreciosNaturaleza.objects.update_or_create(real_precios=real_p, defaults={ 316 316 'base': base, … … 322 322 }) 323 323 324 # Gestión de datos para el Índice por Servicios324 ## Gestión de datos para el Índice por Servicios 325 325 PreciosServicios.objects.update_or_create(real_precios=real_p, defaults={ 326 326 'base': base, … … 330 330 }) 331 331 332 # Gestion de datos para el Índice por Núcleo Inflacionario332 ## Gestion de datos para el Índice por Núcleo Inflacionario 333 333 PreciosInflacionario.objects.update_or_create(real_precios=real_p, defaults={ 334 334 'base': base, … … 340 340 }) 341 341 342 # Gestión de datos para el Índice de Productos Controlados y No Controlados342 ## Gestión de datos para el Índice de Productos Controlados y No Controlados 343 343 PreciosProductos.objects.update_or_create(real_precios=real_p, defaults={ 344 344 'base': base, … … 570 570 ## Año al que pertenece el(los) registro(s) 571 571 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')) 572 575 573 576 ## Valor de los registros si son nominales, en caso contrario almacena False … … 657 660 {'tag': '', 'cabecera': True}, 658 661 {'tag': '', 'cabecera': True}, 659 {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 1 8, 'cabecera': True}662 {'tag': str(PIBActividad._meta.verbose_name), 'color': 'orange', 'text_color': 'white', 'combine': 17, 'cabecera': True} 660 663 ], 661 664 [ … … 680 683 ] 681 684 ] 682 # Asigna el nombre del archivo a descargar685 ## Asigna el nombre del archivo a descargar 683 686 nombre_archivo = 'PIB-Actividad_economica' 684 687 … … 697 700 ] 698 701 ] 699 # Asigna el nombre del archivo a descargar702 ## Asigna el nombre del archivo a descargar 700 703 nombre_archivo = 'PIB-Institucional' 701 704 … … 710 713 diff_anhos = int(kwargs['anho__lte']) - int(kwargs['anho__gte']) + 1 711 714 if any('trimestre' in index for index in kwargs): 712 fields[1].insert(1, {'tag': str(PIB Actividad._meta.get_field('trimestre').verbose_name), 'cabecera': True})713 # Almacena los datos de año y trimestre inicial provenientes del formulario715 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 714 717 anho_ini = int(kwargs['anho__gte']) 715 718 trimestre_ini = int(kwargs['trimestre__gte']) 716 719 717 # Genera los años y trimestres correspondientes a los parámetros del formulario720 ## Genera los años y trimestres correspondientes a los parámetros del formulario 718 721 registros = [] 719 722 while True: 720 723 registros = [({'tag': anho_ini})] 721 724 registros.append({'tag': trimestre_ini}) 722 # Agrega los datos a la nueva fila del archivo a generar725 ## Agrega los datos a la nueva fila del archivo a generar 723 726 fields.append(registros) 724 727 if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])): … … 729 732 trimestre_ini += 1 730 733 else: 731 # Almacena los años de los registros a descargar734 ## Almacena los años de los registros a descargar 732 735 for i in range(diff_anhos): 733 736 registros = [({'tag': int(kwargs['anho__gte']) + i})] 734 # Agrega los datos a la nueva fila del archivo a generar737 ## Agrega los datos a la nueva fila del archivo a generar 735 738 fields.append(registros) 736 739 ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo … … 755 758 756 759 load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0] 757 anhos_base, anho_b, errors, result, message, is_nominal = None, None, '', False, '', False760 anhos_base, anho_b, errors, result, message, is_nominal = [], None, '', False, '', False 758 761 is_demanda, is_produccion, is_actividad, is_sector = False, False, False, False 759 762 load_data_msg = str(_("Datos Cargados")) … … 797 800 798 801 if not is_nominal: 799 # Se crea una lista con los años base del modelo802 ## Se crea una lista con los años base del modelo 800 803 anhos_base = [int(anhos.anho) for anhos in AnhoBase.objects.all()] 801 804 #Se almacena el año base suministrado en el formulario 802 805 anho_b = AnhoBase.objects.get(id=kwargs['anho_base']) 806 803 807 ## En base al archivo cargado, se validan y cargan a la base de datos los valores contenidos en el archivo 804 808 for row in load_file.row[2:]: 805 809 try: 806 # Obtención del año a registrar810 ## Obtención del año a registrar 807 811 anho = row[0] 808 812 809 # Condición que indica si el registro corresponde al año base813 ## Condición que indica si el registro corresponde al año base 810 814 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 contrario815 816 ## Almacena el valor en caso de tratarse del archivo PIB-Nominal_demanda o False en caso contrario 813 817 nominal = row[1] if (is_nominal and is_demanda) else None 814 818 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) 817 824 818 825 if is_demanda: 819 # Gestión de datos para el Índice por Demanda826 ## Gestión de datos para el Índice por Demanda 820 827 PIBDemanda.objects.update_or_create(pib=real_pib, defaults={ 821 828 'base': base, … … 826 833 }) 827 834 elif is_produccion: 828 # Gestión de datos para el Índice por Producción835 ## Gestión de datos para el Índice por Producción 829 836 PIBProduccion.objects.update_or_create(pib=real_pib, defaults={ 830 837 'base': base, … … 834 841 }) 835 842 elif is_actividad: 836 # Gestión de datos para el ïndice por Actividad Económica843 ## Gestión de datos para el ïndice por Actividad Económica 837 844 PIBActividad.objects.update_or_create(pib=real_pib, defaults={ 838 845 'base': base, 839 'trimestre': check_val_data(row[1]),840 846 'total_consolidado': check_val_data(row[2]), 841 847 'total_petrolera': check_val_data(row[3]), … … 857 863 }) 858 864 elif is_sector: 859 # Gestión de datos para el Índice por Sector Institucional865 ## Gestión de datos para el Índice por Sector Institucional 860 866 PIBInstitucion.objects.update_or_create(pib=real_pib, defaults={ 861 867 'base': base, 862 'trimestre': check_val_data(row[1]),863 868 'publico': check_val_data(row[2]), 864 869 'privado': check_val_data(row[3]) … … 966 971 """ 967 972 968 trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))969 970 973 total_consolidado = models.DecimalField( 971 974 max_digits=18, decimal_places=2, default=0.0, verbose_name=_("PIB Consolidado") … … 1065 1068 @version 1.0.0 1066 1069 """ 1067 1068 trimestre = models.CharField(max_length=1, null=True, blank=True, verbose_name=_('Trimestre'))1069 1070 1070 1071 publico = models.DecimalField( … … 1382 1383 """ 1383 1384 1385 ## Fecha a la que pertenece el registro 1386 fecha = models.DateField(null=True, verbose_name=_("Fecha")) 1387 1384 1388 ## 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")) 1386 1390 1387 1391 ## 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")) 1389 1393 1390 1394 ## 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")) 1392 1396 1393 1397 class Meta: … … 1431 1435 [ 1432 1436 {'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} 1434 1438 ], 1435 1439 [ 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} 1438 1442 ] 1439 1443 ] … … 1444 1448 [ 1445 1449 {'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} 1447 1451 ], 1448 1452 [ 1449 1453 {'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} 1454 1458 ] 1455 1459 ] … … 1460 1464 [ 1461 1465 {'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} 1463 1467 ], 1464 1468 [ 1465 1469 {'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} 1472 1476 ] 1473 1477 ] 1474 1478 nombre_archivo = 'Base_monetaria_fuentes' 1475 ## Colocar en el archivo de salida las fechas excepto fines de semana segun la selección del usuario1476 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") 1479 1483 delta = timedelta(days=1) 1480 1484 while inicio <= fin: 1481 1485 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 1485 1501 return {'fields': fields, 'output': nombre_archivo} 1486 1502 … … 1502 1518 load_file = pyexcel.get_book(bookdict=kwargs['file_content'])[0] 1503 1519 errors, result, message = '', False, '' 1504 is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = True, True, True, True1520 is_reservas_bancarias, is_liquidez_monetaria, is_monetaria_usos, is_monetaria_fuentes = False, False, False, False 1505 1521 load_data_msg = str(_("Datos Cargados")) 1506 1522 … … 1521 1537 if is_liquidez_monetaria and (load_file.row[0][1] == str(AgregadosMonetarios._meta.verbose_name)): 1522 1538 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)): 1524 1540 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)): 1526 1542 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)): 1528 1544 result = True 1529 1545 … … 1542 1558 for row in load_file.row[2:]: 1543 1559 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]) 1559 1571 1560 1572 if is_liquidez_monetaria: 1561 1573 ## Gestión de datos para la categoría Agregados Monetarios 1562 AgregadosMonetarios.objects.update_or_create(agregados = agregados, default ={1563 'monedas_billetes': che k_val_data(row[1]),1564 'depositos_vista': che k_val_data(row[2]),1565 'depositos_ahorro': che k_val_data(row[3]),1566 'depositos_plazo': che k_val_data(row[4]),1567 'cuasidinero': che k_val_data(row[5]),1568 'cedulas_hipotecarias': che k_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]) 1569 1581 }) 1570 1582 elif is_reservas_bancarias: 1571 1583 ## 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]) 1575 1586 }) 1576 1587 elif is_monetaria_usos: 1577 1588 ## Gestión de datos para la categoría Base Monetaria Usos 1578 MonetariaUsos.objects.update_or_create(agregados = agregados, default={1579 'depositos_bcu': che k_val_data(row[1]),1580 'depositos_rsb': che k_val_data(row[2]),1581 'depositos_ep': che k_val_data(row[3]),1582 'monedas_billetes': che k_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]) 1583 1594 }) 1584 1595 elif is_monetaria_fuentes: 1585 1596 ## Gestión de datos para la categoría Base Monetaria Fuentes 1586 MonetariaFuentes.objects.update_or_create(agregados = agregados, default={1587 'reservas_internacionales': che k_val_data(row[1]),1588 'sector_publico': che k_val_data(row[2]),1589 'sector_financiero': che k_val_data(row[3]),1590 'credito_bcv': che k_val_data(row[4]),1591 'otras_cuentas': che k_val_data(row[5]),1592 'capital_pagado_reservas': che k_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]) 1593 1604 }) 1594 1605 except Exception as e: … … 1655 1666 1656 1667 @python_2_unicode_compatible 1657 class ReservasBancarias(models.Model):1668 class AgregadosReservas(models.Model): 1658 1669 """! 1659 1670 Clase que contiene los registros de la categoría reservas bancarias de la sub-área Agregados Monetarios … … 1664 1675 @version 1.0.0 1665 1676 """ 1666 1667 ## Fecha a la que pertenece el registro1668 fecha = models.DateField(null=True, verbose_name=_("Fecha"))1669 1677 1670 1678 ## Reservas Bancarias … … 1680 1688 1681 1689 @python_2_unicode_compatible 1682 class MonetariaUsos(models.Model):1690 class AgregadosUsos(models.Model): 1683 1691 """! 1684 1692 Clase que contiene los registros de la categoría base monetaria usos de la sub-área Agregados Monetarios … … 1717 1725 1718 1726 @python_2_unicode_compatible 1719 class MonetariaFuentes(models.Model):1727 class AgregadosFuentes(models.Model): 1720 1728 """! 1721 1729 Clase que contiene los registros de la categoría base monetaria fuentes de la sub-área Agregados Monetarios … … 1779 1787 1780 1788 ## 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")) 1782 1790 1783 1791 ## 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")) 1785 1793 1786 1794 ## 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")) 1788 1796 1789 1797 class Meta: … … 1809 1817 [ 1810 1818 {'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} 1812 1820 ], 1813 1821 [ 1814 1822 {'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} 1818 1826 ] 1819 1827 ] … … 1825 1833 [ 1826 1834 {'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}, 1828 1836 {'tag': str(_('Por Actividad Económica')), 'color': 'green', 'text_color': 'white', 'combine': 13, 'cabecera': True}, 1829 1837 {'tag': str(_('Condición Jurídica')), 'color': 'ocean_blue', 'text_color': 'white', 'combine': 2, 'cabecera': True} … … 1876 1884 ## Asigna el nombre del archivo a descargar 1877 1885 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") 1882 1903 delta = timedelta(days=1) 1883 1904 while inicio <= fin: 1884 1905 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 1887 1909 ## Devuelve los datos correspondientes al archivo a descargar y el nombre de ese archivo 1888 1910 return {'fields': fields, 'output': nombre_archivo} … … 1920 1942 1921 1943 ## 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)): 1923 1945 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)): 1925 1947 result = True 1926 1948 elif is_tasa_pasiva and (load_file.row[0][1] == str(TasaPasiva._meta.verbose_name)): … … 1941 1963 for row in load_file.row[2:]: 1942 1964 try: 1943 ## Asigna la semana del registro1944 semana = 11945 #row[0] if is_tasa_pb else None1946 1947 ## Asigna el mes del registro1948 mes = None1949 1950 ## Asigna el año del registro1951 anho = None1952 1953 1965 ## Asigna la fecha del registro 1954 1966 fecha = datetime.strptime(row[0], "%d/%m/%Y") 1955 1967 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 1956 1974 ## 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]) 1958 1976 1959 1977 if is_tasa_pb: 1960 1978 ## 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={ 1962 1980 'operaciones_activas': check_val_data(row[1]), 1963 1981 'depositos_90_dias': check_val_data(row[2]), … … 1976 1994 'servicios': check_val_data(row[8]), 1977 1995 'creditos_hipotecarios': check_val_data(row[9]), 1978 'transporte_al imento': check_val_data(row[10]),1996 'transporte_almacenamiento': check_val_data(row[10]), 1979 1997 'turismo': check_val_data(row[11]), 1980 1998 'comunicaciones': check_val_data(row[12]), … … 2016 2034 2017 2035 @python_2_unicode_compatible 2018 class PrincipalesBancos(models.Model):2036 class TasasBancos(models.Model): 2019 2037 """! 2020 2038 Clase que contiene los registros de la categoría Seis Principales Bancos de la sub-área Tasas de Interés … … 2157 2175 2158 2176 class Meta: 2159 verbose_name = _('Tasa de Interés Activa')2177 verbose_name = _('Tasas de Bancos Comerciales y Universales') 2160 2178 2161 2179 @python_2_unicode_compatible … … 2219 2237 2220 2238 class Meta: 2221 verbose_name = _('Tasa de Interés Activa')2239 verbose_name = _('Tasa de Interés Pasiva') 2222 2240 2223 2241 #-----------------------------Economía - Externo - Reservas, Tipo de Cambio … … 2532 2550 anho_base = kwargs['anho_base'] if 'anho_base' in kwargs else '' 2533 2551 2534 # Almacena los datos de año y trimestre inicial provenientes del formulario2552 ## Almacena los datos de año y trimestre inicial provenientes del formulario 2535 2553 anho_ini = int(kwargs['anho__gte']) 2536 2554 trimestre_ini = int(kwargs['trimestre__gte']) 2537 2555 2538 # Genera los años y trimestres correspondientes a los parámetros del formulario2556 ## Genera los años y trimestres correspondientes a los parámetros del formulario 2539 2557 registros = [] 2540 2558 while True: … … 2643 2661 registros.append({'tag':balanza_datos_is.privado_petroleo}) 2644 2662 registros.append({'tag':balanza_datos_is.privado_no_petroleo}) 2645 # Agrega los datos a la nueva fila del archivo a generar2663 ## Agrega los datos a la nueva fila del archivo a generar 2646 2664 fields.append(registros) 2647 2665 if (anho_ini == int(kwargs['anho__lte']) and trimestre_ini == int(kwargs['trimestre__lte'])): … … 2797 2815 2798 2816 2799 # Envia correo electronico al usuario indicando el estatus de la carga de datos2817 ## Envia correo electronico al usuario indicando el estatus de la carga de datos 2800 2818 enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, { 2801 2819 'load_data_msg': load_data_msg, 'administrador': administrador, 'admin_email': admin_email, … … 3060 3078 fields.append(sub_header) 3061 3079 3062 # Almacena los datos de año y trimestre inicial provenientes del formulario3080 ## Almacena los datos de año y trimestre inicial provenientes del formulario 3063 3081 anho_ini = int(kwargs['anho__gte']) 3064 3082 trimestre_ini = int(kwargs['trimestre__gte']) … … 3067 3085 registros = [({'tag': anho_ini})] 3068 3086 registros.append({'tag': trimestre_ini}) 3069 # Agrega los datos a la nueva fila del archivo a generar3087 ## Agrega los datos a la nueva fila del archivo a generar 3070 3088 if(kwargs['dominio']=='BP'): 3071 3089 cuenta_capital_base = CuentaCapitalBalanzaBase.objects.filter(anho=anho_ini,trimestre=trimestre_ini) … … 3358 3376 3359 3377 3360 # Envia correo electronico al usuario indicando el estatus de la carga de datos3378 ## Envia correo electronico al usuario indicando el estatus de la carga de datos 3361 3379 enviar_correo(user.email, 'gestion.informacion.load.mail', EMAIL_SUBJECT_LOAD_DATA, { 3362 3380 '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.