def interruptos_por_actividades(request): anno_actual = datetime.today().year mes_actual = datetime.today().month categoria_usuario = request.user.perfil_usuario.categoria.nombre organismo = request.user.perfil_usuario.organismo nombre_organismo = organismo.nombre.encode('utf-8').strip() num_anno = anno_actual if mes_actual == 12: num_anno = anno_actual - 1 response = HttpResponse( content_type= 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') if categoria_usuario == 'interrupto': response[ 'Content-Disposition'] = "attachment; filename=Interruptos_por_actividades_(%s)_(%s_%s).xlsx" % ( str(nombre_organismo).replace( " ", "_"), obtener_mes(mes_actual - 1), num_anno) else: response[ 'Content-Disposition'] = "attachment; filename=Interruptos_por_actividades_(%s_%s).xlsx" % ( obtener_mes(mes_actual - 1), num_anno) book = Workbook(response, {'in_memory': True}) worksheet_data = book.add_worksheet("Interruptos por Provincias") formato = book.add_format({'bold': True, 'border': 1}) formato1 = book.add_format({ 'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1 }) formato5 = book.add_format({'border': 1, 'text_wrap': True}) formato_organismos = book.add_format({'bold': True, 'border': 1}) worksheet_data.write("A1", "OACE-OSDE / Actividades", formato1) worksheet_data.set_column("A:A", 24) worksheet_data.set_column("B:B", 19) worksheet_data.set_column("C:C", 21) worksheet_data.set_column("D:D", 21) actividades = ActividadInterrupto.objects.filter(activo=True).exclude(id=3) posicion_total_derecho = actividades.count() + 1 totales = 0 lista_totales = [] for indice, a in enumerate(actividades): lista_totales.insert(indice, totales) worksheet_data.write(0, indice + 1, a.actividad, formato) worksheet_data.write(0, posicion_total_derecho, "Totales", formato) if categoria_usuario == 'interrupto': if es_oace(organismo): osdes = obtener_osdes_de_un_oace(organismo) if osdes.__len__() > 0: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo__id__in=[osde.id for osde in osdes] ) | \ Interruptos.objects.filter(organismo=organismo) else: interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, organismo=organismo) organismos = Organismo.objects.filter(id=organismo.id) else: interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, organismo=organismo) query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode( mes_actual) + """ AND date_part('year',t.fecha_registro)=""" + unicode( anno_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter(id__in=ids_interruptos) elif categoria_usuario == 'administrador': query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode( mes_actual) + """ AND date_part('year',t.fecha_registro)=""" + unicode( anno_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter(id__in=ids_interruptos) organismos = obtener_oaces() inicio_fila = 1 i = 0 if es_oace(organismo) or categoria_usuario == 'administrador': for oace in organismos: worksheet_data.write(inicio_fila + i, 0, oace.siglas, formato_organismos) # organismo totales_a = 0 for indice, actividad in enumerate(actividades): worksheet_data.write( inicio_fila + i, indice + 1, totales_interruptos_organismo_actividades( interruptos, oace, actividad), formato_organismos) lista_totales[indice] = lista_totales[ indice] + totales_interruptos_organismo_actividades( interruptos, oace, actividad) totales_a = totales_a + totales_interruptos_organismo_actividades( interruptos, oace, actividad) worksheet_data.write(inicio_fila + i, posicion_total_derecho, totales_a, formato) i = i + 1 l_interruptos = interruptos.filter(organismo__id=oace.id) for interrupto in l_interruptos: worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad totales_a = 0 for indice, actividad in enumerate(actividades): worksheet_data.write( inicio_fila + i, indice + 1, totales_interruptos_actividades(interrupto, actividad), formato5) totales_a = totales_a + totales_interruptos_actividades( interrupto, actividad) worksheet_data.write(inicio_fila + i, posicion_total_derecho, totales_a, formato) i = i + 1 osdes = obtener_osdes_de_un_oace(oace) if obtener_osdes_de_un_oace(oace).__len__() > 0: for osde in osdes: worksheet_data.write(inicio_fila + i, 0, osde.siglas, formato_organismos) # osde totales_a = 0 for indice, actividad in enumerate(actividades): worksheet_data.write( inicio_fila + i, indice + 1, totales_interruptos_organismo_actividades( interruptos, osde, actividad), formato_organismos) lista_totales[indice] = lista_totales[ indice] + totales_interruptos_organismo_actividades( interruptos, osde, actividad) totales_a = totales_a + totales_interruptos_organismo_actividades( interruptos, osde, actividad) worksheet_data.write(inicio_fila + i, posicion_total_derecho, totales_a, formato) i = i + 1 l_interruptos = interruptos.filter(organismo_id=osde.id) for interrupto in l_interruptos: worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad totales_a = 0 for indice, actividad in enumerate(actividades): worksheet_data.write( inicio_fila + i, indice + 1, totales_interruptos_actividades( interrupto, actividad), formato5) totales_a = totales_a + totales_interruptos_actividades( interrupto, actividad) worksheet_data.write(inicio_fila + i, posicion_total_derecho, totales_a, formato) i = i + 1 if not es_oace(organismo): worksheet_data.write(inicio_fila + i, 0, organismo.siglas, formato_organismos) # organismo totales_a = 0 for indice, actividad in enumerate(actividades): worksheet_data.write( inicio_fila + i, indice + 1, totales_interruptos_organismo_actividades( interruptos, organismo, actividad), formato_organismos) lista_totales[indice] = lista_totales[ indice] + totales_interruptos_organismo_actividades( interruptos, organismo, actividad) totales_a = totales_a + totales_interruptos_organismo_actividades( interruptos, organismo, actividad) worksheet_data.write(inicio_fila + i, posicion_total_derecho, totales_a, formato) i = i + 1 l_interruptos = interruptos.filter(organismo__nombre=organismo) for interrupto in l_interruptos: worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad totales_a = 0 for indice, a in enumerate(actividades): worksheet_data.write( inicio_fila + i, indice + 1, totales_interruptos_actividades(interrupto, actividad), formato5) totales_a = totales_a + totales_interruptos_actividades( interrupto, actividad) worksheet_data.write(inicio_fila + i, posicion_total_derecho, totales_a, formato) i = i + 1 total = 0 worksheet_data.write(inicio_fila + i, 0, "TOTALES", formato_organismos) for indice, actividad in enumerate(actividades): worksheet_data.write(inicio_fila + i, indice + 1, lista_totales[indice], formato_organismos) total = total + lista_totales[indice] worksheet_data.write(inicio_fila + i, posicion_total_derecho, total, formato) book.close() return response
def interruptos_por_organismos_sin_entidades(request): anno_actual = datetime.today().year mes_actual = datetime.today().month categoria_usuario = request.user.perfil_usuario.categoria.nombre organismo = request.user.perfil_usuario.organismo nombre_organismo = organismo.nombre.encode('utf-8').strip() num_anno = anno_actual if mes_actual == 12: num_anno = anno_actual - 1 response = HttpResponse( content_type= 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') if categoria_usuario == 'interrupto' or categoria_usuario == 'interrupto': response[ 'Content-Disposition'] = "attachment; filename=Interruptos_por_organismos_(%s)_(%s_%s).xlsx" % ( str(nombre_organismo).replace( " ", "_"), obtener_mes(mes_actual - 1), num_anno) else: response[ 'Content-Disposition'] = "attachment; filename=Interruptos_por_organismos_(%s_%s).xlsx" % ( obtener_mes(mes_actual - 1), num_anno) book = Workbook(response, {'in_memory': True}) worksheet_data = book.add_worksheet("Interruptos por Organismos") formato1 = book.add_format({ 'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1 }) formato2 = book.add_format({ 'rotation': 45, 'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1, 'text_wrap': True }) formato3 = book.add_format({'align': 'center', 'bold': True, 'border': 1}) formato4 = book.add_format({ 'rotation': 90, 'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1, 'text_wrap': True }) formato5 = book.add_format({'border': 1, 'text_wrap': True}) formato_organismos = book.add_format({'bold': True, 'border': 1}) worksheet_data.merge_range('A1:A4', "OACE-OSDE", formato1) worksheet_data.merge_range( "B1:O1", "Interruptos: %s-%s" % (obtener_mes(mes_actual - 1), num_anno), formato3) worksheet_data.merge_range("B2:B4", "Total", formato2) worksheet_data.merge_range("C2:C4", "Femeninos", formato2) worksheet_data.merge_range("D2:D4", "Jovenes", formato2) worksheet_data.merge_range("E2:H2", "Tiempo de Interrupcion", formato3) worksheet_data.merge_range("I2:O2", "Situacion Actual", formato3) worksheet_data.merge_range("E3:E4", "Hasta 30 dias", formato4) worksheet_data.merge_range("F3:F4", "Mas de 30 y hasta 60 dias", formato4) worksheet_data.merge_range("G3:G4", "Mas de 60 dias y hasta 1 anno", formato4) worksheet_data.merge_range("H3:H4", "Mas de 1 anno", formato4) worksheet_data.merge_range("I3:K3", "Reubicados Temporales", formato3) worksheet_data.write("I4", "En la misma entidad", formato4) worksheet_data.write("J4", "En otra entidad del mismo organismo", formato4) worksheet_data.write("K4", "En una entidad de otro organismo", formato4) worksheet_data.merge_range("L3:L4", "Cobrando Garantia Salarial", formato4) worksheet_data.merge_range("M3:M4", "Sin Garantia Salarial", formato4) worksheet_data.merge_range("N3:N4", "Bajas", formato4) worksheet_data.merge_range("O3:O4", "Propuesto a Disponibles", formato4) worksheet_data.set_column("A:A", 20.58) worksheet_data.set_row(3, 80) if categoria_usuario == 'interrupto': if es_oace(organismo): osdes = obtener_osdes_de_un_oace(organismo) if osdes.__len__() > 0: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo__id__in=[osde.id for osde in osdes] ) | \ Interruptos.objects.filter(organismo=organismo) else: interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, organismo=organismo) organismos = Organismo.objects.filter(id=organismo.id) else: interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, organismo=organismo) query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode( mes_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = interruptos.filter(id__in=ids_interruptos) elif categoria_usuario == 'administrador': query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode( mes_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, id__in=ids_interruptos) organismos = obtener_oaces() inicio_fila = 4 i = 0 totales = 0 totales_femeninos = 0 totales_jovenes = 0 totales_hasta_treinta_dias = 0 totales_mas_treinta_menos_sesenta_dias = 0 totales_mas_sesenta_dias_menos_un_anno = 0 totales_mas_un_anno = 0 totales_reubicados_temporal_misma_entidad = 0 totales_reubicados_temporal_mismo_organismo = 0 totales_reubicados_temporal_otro_organismo = 0 totales_cobrando_garantia_salarial = 0 totales_sin_garantia_salarial = 0 totales_baja = 0 totales_propuesto_disponible = 0 if es_oace(organismo) or categoria_usuario == 'administrador': for oace in organismos: org = interruptos.filter(organismo=oace) dict_totales = totales_por_organismo(org) t = dict_totales['t'] t_femeninos = dict_totales['t_femeninos'] t_jovenes = dict_totales['t_jovenes'] t_hasta_treinta_dias = dict_totales['t_hasta_treinta_dias'] t_mas_treinta_menos_sesenta_dias = dict_totales[ 't_mas_treinta_menos_sesenta_dias'] t_mas_sesenta_dias_menos_un_anno = dict_totales[ 't_mas_sesenta_dias_menos_un_anno'] t_mas_un_anno = dict_totales['t_mas_un_anno'] t_reubicados_temporal_misma_entidad = dict_totales[ 't_reubicados_temporal_misma_entidad'] t_reubicados_temporal_mismo_organismo = dict_totales[ 't_reubicados_temporal_mismo_organismo'] t_reubicados_temporal_otro_organismo = dict_totales[ 't_reubicados_temporal_otro_organismo'] t_cobrando_garantia_salarial = dict_totales[ 't_cobrando_garantia_salarial'] t_sin_garantia_salarial = dict_totales['t_sin_garantia_salarial'] t_baja = dict_totales['t_baja'] t_propuesto_disponible = dict_totales['t_propuesto_disponible'] worksheet_data.write(inicio_fila + i, 0, oace.siglas, formato_organismos) # organismo worksheet_data.write(inicio_fila + i, 1, t, formato5) # total worksheet_data.write(inicio_fila + i, 2, t_femeninos, formato5) # totales femeninos worksheet_data.write(inicio_fila + i, 3, t_jovenes, formato5) # totales jóvenes worksheet_data.write(inicio_fila + i, 4, t_hasta_treinta_dias, formato5) # menos de 30 dias worksheet_data.write(inicio_fila + i, 5, t_mas_treinta_menos_sesenta_dias, formato5) # entre 30 y 60 dias worksheet_data.write(inicio_fila + i, 6, t_mas_sesenta_dias_menos_un_anno, formato5) # entre 60 dias y un año worksheet_data.write(inicio_fila + i, 7, t_mas_un_anno, formato5) # mas de un año worksheet_data.write( inicio_fila + i, 8, t_reubicados_temporal_misma_entidad, formato5) # reubicado temporal dentro de la misma entidad worksheet_data.write( inicio_fila + i, 9, t_reubicados_temporal_mismo_organismo, formato5) # reubicado temporal dentro del mismo organismo worksheet_data.write( inicio_fila + i, 10, t_reubicados_temporal_otro_organismo, formato5) # reubicado temporal dentro de otro organismo worksheet_data.write(inicio_fila + i, 11, t_cobrando_garantia_salarial, formato5) # cobrando garantia salarial worksheet_data.write(inicio_fila + i, 12, t_sin_garantia_salarial, formato5) # sin garantia salarial worksheet_data.write(inicio_fila + i, 13, t_baja, formato5) # baja worksheet_data.write(inicio_fila + i, 14, t_propuesto_disponible, formato5) # propuesto a disponible totales += t totales_femeninos += t_femeninos totales_jovenes += t_jovenes totales_hasta_treinta_dias += t_hasta_treinta_dias totales_mas_treinta_menos_sesenta_dias += t_mas_treinta_menos_sesenta_dias totales_mas_sesenta_dias_menos_un_anno += t_mas_sesenta_dias_menos_un_anno totales_mas_un_anno += t_mas_un_anno totales_reubicados_temporal_misma_entidad += t_reubicados_temporal_misma_entidad totales_reubicados_temporal_mismo_organismo += t_reubicados_temporal_mismo_organismo totales_reubicados_temporal_otro_organismo += t_reubicados_temporal_otro_organismo totales_cobrando_garantia_salarial += t_cobrando_garantia_salarial totales_sin_garantia_salarial += t_sin_garantia_salarial totales_baja += t_baja totales_propuesto_disponible += t_propuesto_disponible i = i + 1 # for interrupto in interruptos: # if interrupto.organismo_id == oace.id: # worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad # worksheet_data.write(inicio_fila + i, 1, total_interruptos_por_entidad(interrupto), formato5) # total # worksheet_data.write(inicio_fila + i, 2, total_femeninos_interruptos_por_entidad(interrupto), formato5) # totales femeninos # worksheet_data.write(inicio_fila + i, 3, total_jovenes_interruptos_por_entidad(interrupto), formato5) # totales jóvenes # worksheet_data.write(inicio_fila + i, 4, interruptos_hasta_treinta_dias_por_entidad(interrupto), formato5) # menos de 30 dias # worksheet_data.write(inicio_fila + i, 5, interruptos_mas_treinta_hasta_sesenta_por_entidad(interrupto), formato5) # entre 30 y 60 dias # worksheet_data.write(inicio_fila + i, 6, interruptos_mas_sesenta_menos_un_anno_por_entidad(interrupto), formato5) # entre 60 dias y un año # worksheet_data.write(inicio_fila + i, 7, interruptos_mas_un_anno_por_entidad(interrupto), formato5) # mas de un año # worksheet_data.write(inicio_fila + i, 8, interruptos_reubicado_misma_entidad_por_entidad(interrupto), formato5) # reubicado temporal dentro de la misma entidad # worksheet_data.write(inicio_fila + i, 9, interruptos_reubicado_mismo_organismo_por_entidad(interrupto), formato5) # reubicado temporal dentro del mismo organismo # worksheet_data.write(inicio_fila + i, 10, interruptos_reubicado_otro_organismo_por_entidad(interrupto), formato5) # reubicado temporal dentro de otro organismo # worksheet_data.write(inicio_fila + i, 11, interruptos_cobrando_garantia_salarial_por_entidad(interrupto), formato5) # cobrando garantia salarial # worksheet_data.write(inicio_fila + i, 12, interruptos_sin_garantia_salarial_por_entidad(interrupto), formato5) # sin garantia salarial # worksheet_data.write(inicio_fila + i, 13, interruptos_baja_por_entidad(interrupto), formato5) # baja # worksheet_data.write(inicio_fila + i, 14, interruptos_propuesto_disponible_por_entidad(interrupto), formato5) # propuesto a disponible # i = i + 1 osdes = obtener_osdes_de_un_oace(oace) if osdes.__len__() > 0: for osde in osdes: org = interruptos.filter(organismo=osde) dict_totales = totales_por_organismo(org) t = dict_totales['t'] t_femeninos = dict_totales['t_femeninos'] t_jovenes = dict_totales['t_jovenes'] t_hasta_treinta_dias = dict_totales['t_hasta_treinta_dias'] t_mas_treinta_menos_sesenta_dias = dict_totales[ 't_mas_treinta_menos_sesenta_dias'] t_mas_sesenta_dias_menos_un_anno = dict_totales[ 't_mas_sesenta_dias_menos_un_anno'] t_mas_un_anno = dict_totales['t_mas_un_anno'] t_reubicados_temporal_misma_entidad = dict_totales[ 't_reubicados_temporal_misma_entidad'] t_reubicados_temporal_mismo_organismo = dict_totales[ 't_reubicados_temporal_mismo_organismo'] t_reubicados_temporal_otro_organismo = dict_totales[ 't_reubicados_temporal_otro_organismo'] t_cobrando_garantia_salarial = dict_totales[ 't_cobrando_garantia_salarial'] t_sin_garantia_salarial = dict_totales[ 't_sin_garantia_salarial'] t_baja = dict_totales['t_baja'] t_propuesto_disponible = dict_totales[ 't_propuesto_disponible'] worksheet_data.write(inicio_fila + i, 0, osde.siglas, formato_organismos) # osde worksheet_data.write(inicio_fila + i, 1, t, formato5) # total worksheet_data.write(inicio_fila + i, 2, t_femeninos, formato5) # totales femeninos worksheet_data.write(inicio_fila + i, 3, t_jovenes, formato5) # totales jóvenes worksheet_data.write(inicio_fila + i, 4, t_hasta_treinta_dias, formato5) # menos de 30 dias worksheet_data.write(inicio_fila + i, 5, t_mas_treinta_menos_sesenta_dias, formato5) # entre 30 y 60 dias worksheet_data.write(inicio_fila + i, 6, t_mas_sesenta_dias_menos_un_anno, formato5) # entre 60 dias y un año worksheet_data.write(inicio_fila + i, 7, t_mas_un_anno, formato5) # mas de un año worksheet_data.write( inicio_fila + i, 8, t_reubicados_temporal_misma_entidad, formato5 ) # reubicado temporal dentro de la misma entidad worksheet_data.write( inicio_fila + i, 9, t_reubicados_temporal_mismo_organismo, formato5 ) # reubicado temporal dentro del mismo organismo worksheet_data.write( inicio_fila + i, 10, t_reubicados_temporal_otro_organismo, formato5 ) # reubicado temporal dentro de otro organismo worksheet_data.write( inicio_fila + i, 11, t_cobrando_garantia_salarial, formato5) # cobrando garantia salarial worksheet_data.write(inicio_fila + i, 12, t_sin_garantia_salarial, formato5) # sin garantia salarial worksheet_data.write(inicio_fila + i, 13, t_baja, formato5) # baja worksheet_data.write(inicio_fila + i, 14, t_propuesto_disponible, formato5) # propuesto a disponible totales += t totales_femeninos += t_femeninos totales_jovenes += t_jovenes totales_hasta_treinta_dias += t_hasta_treinta_dias totales_mas_treinta_menos_sesenta_dias += t_mas_treinta_menos_sesenta_dias totales_mas_sesenta_dias_menos_un_anno += t_mas_sesenta_dias_menos_un_anno totales_mas_un_anno += t_mas_un_anno totales_reubicados_temporal_misma_entidad += t_reubicados_temporal_misma_entidad totales_reubicados_temporal_mismo_organismo += t_reubicados_temporal_mismo_organismo totales_reubicados_temporal_otro_organismo += t_reubicados_temporal_otro_organismo totales_cobrando_garantia_salarial += t_cobrando_garantia_salarial totales_sin_garantia_salarial += t_sin_garantia_salarial totales_baja += t_baja totales_propuesto_disponible += t_propuesto_disponible i = i + 1 # l_interruptos = interruptos.filter(organismo_id=osde) # # for interrupto in l_interruptos: # worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad # worksheet_data.write(inicio_fila + i, 1, total_interruptos_por_entidad(interrupto), formato5) # total # worksheet_data.write(inicio_fila + i, 2, total_femeninos_interruptos_por_entidad(interrupto), formato5) # totales femeninos # worksheet_data.write(inicio_fila + i, 3, total_jovenes_interruptos_por_entidad(interrupto), formato5) # totales jóvenes # worksheet_data.write(inicio_fila + i, 4, interruptos_hasta_treinta_dias_por_entidad(interrupto), formato5) # menos de 30 dias # worksheet_data.write(inicio_fila + i, 5, interruptos_mas_treinta_hasta_sesenta_por_entidad(interrupto), formato5) # entre 30 y 60 dias # worksheet_data.write(inicio_fila + i, 6, interruptos_mas_sesenta_menos_un_anno_por_entidad(interrupto), formato5) # entre 60 dias y un año # worksheet_data.write(inicio_fila + i, 7, interruptos_mas_un_anno_por_entidad(interrupto), formato5) # mas de un año # worksheet_data.write(inicio_fila + i, 8, interruptos_reubicado_misma_entidad_por_entidad(interrupto), formato5) # reubicado temporal dentro de la misma entidad # worksheet_data.write(inicio_fila + i, 9, interruptos_reubicado_mismo_organismo_por_entidad(interrupto), formato5) # reubicado temporal dentro del mismo organismo # worksheet_data.write(inicio_fila + i, 10, interruptos_reubicado_otro_organismo_por_entidad(interrupto), formato5) # reubicado temporal dentro de otro organismo # worksheet_data.write(inicio_fila + i, 11, interruptos_cobrando_garantia_salarial_por_entidad(interrupto), formato5) # cobrando garantia salarial # worksheet_data.write(inicio_fila + i, 12, interruptos_sin_garantia_salarial_por_entidad(interrupto), formato5) # sin garantia salarial # worksheet_data.write(inicio_fila + i, 13, interruptos_baja_por_entidad(interrupto), formato5) # baja # worksheet_data.write(inicio_fila + i, 14, interruptos_propuesto_disponible_por_entidad(interrupto), formato5) # propuesto a disponible # i = i + 1 if not es_oace(organismo): org = interruptos.filter(organismo=organismo) dict_totales = totales_por_organismo(org) t = dict_totales['t'] t_femeninos = dict_totales['t_femeninos'] t_jovenes = dict_totales['t_jovenes'] t_hasta_treinta_dias = dict_totales['t_hasta_treinta_dias'] t_mas_treinta_menos_sesenta_dias = dict_totales[ 't_mas_treinta_menos_sesenta_dias'] t_mas_sesenta_dias_menos_un_anno = dict_totales[ 't_mas_sesenta_dias_menos_un_anno'] t_mas_un_anno = dict_totales['t_mas_un_anno'] t_reubicados_temporal_misma_entidad = dict_totales[ 't_reubicados_temporal_misma_entidad'] t_reubicados_temporal_mismo_organismo = dict_totales[ 't_reubicados_temporal_mismo_organismo'] t_reubicados_temporal_otro_organismo = dict_totales[ 't_reubicados_temporal_otro_organismo'] t_cobrando_garantia_salarial = dict_totales[ 't_cobrando_garantia_salarial'] t_sin_garantia_salarial = dict_totales['t_sin_garantia_salarial'] t_baja = dict_totales['t_baja'] t_propuesto_disponible = dict_totales['t_propuesto_disponible'] worksheet_data.write(inicio_fila + i, 0, organismo.siglas, formato_organismos) # organismo worksheet_data.write(inicio_fila + i, 1, t, formato5) # total worksheet_data.write(inicio_fila + i, 2, t_femeninos, formato5) # totales femeninos worksheet_data.write(inicio_fila + i, 3, t_jovenes, formato5) # totales jóvenes worksheet_data.write(inicio_fila + i, 4, t_hasta_treinta_dias, formato5) # menos de 30 dias worksheet_data.write(inicio_fila + i, 5, t_mas_treinta_menos_sesenta_dias, formato5) # entre 30 y 60 dias worksheet_data.write(inicio_fila + i, 6, t_mas_sesenta_dias_menos_un_anno, formato5) # entre 60 dias y un año worksheet_data.write(inicio_fila + i, 7, t_mas_un_anno, formato5) # mas de un año worksheet_data.write( inicio_fila + i, 8, t_reubicados_temporal_misma_entidad, formato5) # reubicado temporal dentro de la misma entidad worksheet_data.write( inicio_fila + i, 9, t_reubicados_temporal_mismo_organismo, formato5) # reubicado temporal dentro del mismo organismo worksheet_data.write( inicio_fila + i, 10, t_reubicados_temporal_otro_organismo, formato5) # reubicado temporal dentro de otro organismo worksheet_data.write(inicio_fila + i, 11, t_cobrando_garantia_salarial, formato5) # cobrando garantia salarial worksheet_data.write(inicio_fila + i, 12, t_sin_garantia_salarial, formato5) # sin garantia salarial worksheet_data.write(inicio_fila + i, 13, t_baja, formato5) # baja worksheet_data.write(inicio_fila + i, 14, t_propuesto_disponible, formato5) # propuesto a disponible totales += t totales_femeninos += t_femeninos totales_jovenes += t_jovenes totales_hasta_treinta_dias += t_hasta_treinta_dias totales_mas_treinta_menos_sesenta_dias += t_mas_treinta_menos_sesenta_dias totales_mas_sesenta_dias_menos_un_anno += t_mas_sesenta_dias_menos_un_anno totales_mas_un_anno += t_mas_un_anno totales_reubicados_temporal_misma_entidad += t_reubicados_temporal_misma_entidad totales_reubicados_temporal_mismo_organismo += t_reubicados_temporal_mismo_organismo totales_reubicados_temporal_otro_organismo += t_reubicados_temporal_otro_organismo totales_cobrando_garantia_salarial += t_cobrando_garantia_salarial totales_sin_garantia_salarial += t_sin_garantia_salarial totales_baja += t_baja totales_propuesto_disponible += t_propuesto_disponible i = i + 1 for interrupto in interruptos: if interrupto.organismo_id == organismo.id: worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad worksheet_data.write(inicio_fila + i, 1, total_interruptos_por_entidad(interrupto), formato5) # total worksheet_data.write( inicio_fila + i, 2, total_femeninos_interruptos_por_entidad(interrupto), formato5) # totales femeninos worksheet_data.write( inicio_fila + i, 3, total_jovenes_interruptos_por_entidad(interrupto), formato5) # totales jóvenes worksheet_data.write( inicio_fila + i, 4, interruptos_hasta_treinta_dias_por_entidad(interrupto), formato5) # menos de 30 dias worksheet_data.write( inicio_fila + i, 5, interruptos_mas_treinta_hasta_sesenta_por_entidad( interrupto), formato5) # entre 30 y 60 dias worksheet_data.write( inicio_fila + i, 6, interruptos_mas_sesenta_menos_un_anno_por_entidad( interrupto), formato5) # entre 60 dias y un año worksheet_data.write( inicio_fila + i, 7, interruptos_mas_un_anno_por_entidad(interrupto), formato5) # mas de un año worksheet_data.write( inicio_fila + i, 8, interruptos_reubicado_misma_entidad_por_entidad( interrupto), formato5) # reubicado temporal dentro de la misma entidad worksheet_data.write( inicio_fila + i, 9, interruptos_reubicado_mismo_organismo_por_entidad( interrupto), formato5) # reubicado temporal dentro del mismo organismo worksheet_data.write( inicio_fila + i, 10, interruptos_reubicado_otro_organismo_por_entidad( interrupto), formato5) # reubicado temporal dentro de otro organismo worksheet_data.write( inicio_fila + i, 11, interruptos_cobrando_garantia_salarial_por_entidad( interrupto), formato5) # cobrando garantia salarial worksheet_data.write( inicio_fila + i, 12, interruptos_sin_garantia_salarial_por_entidad(interrupto), formato5) # sin garantia salarial worksheet_data.write(inicio_fila + i, 13, interruptos_baja_por_entidad(interrupto), formato5) # baja worksheet_data.write( inicio_fila + i, 14, interruptos_propuesto_disponible_por_entidad(interrupto), formato5) # propuesto a disponible i = i + 1 # SUMAS # totales = '=SUM(%s)' % xl_range(inicio_fila, 1, inicio_fila + i - 1, 1) # totales_femeninos = '=SUM(%s)' % xl_range(inicio_fila, 2, inicio_fila + i - 1, 2) # totales_jovenes = '=SUM(%s)' % xl_range(inicio_fila, 3, inicio_fila + i - 1, 3) # totales_hasta_treinta_dias = '=SUM(%s)' % xl_range(inicio_fila, 4, inicio_fila + i - 1, 4) # totales_mas_treinta_menos_sesenta_dias = '=SUM(%s)' % xl_range(inicio_fila, 5, inicio_fila + i - 1, 5) # totales_mas_sesenta_dias_menos_un_anno = '=SUM(%s)' % xl_range(inicio_fila, 6, inicio_fila + i - 1, 6) # totales_mas_un_anno = '=SUM(%s)' % xl_range(inicio_fila, 7, inicio_fila + i - 1, 7) # totales_reubicados_temporal_misma_entidad = '=SUM(%s)' % xl_range(inicio_fila, 8, inicio_fila + i - 1, 8) # totales_reubicados_temporal_mismo_organismo = '=SUM(%s)' % xl_range(inicio_fila, 9, inicio_fila + i - 1, 9) # totales_reubicados_temporal_otro_organismo = '=SUM(%s)' % xl_range(inicio_fila, 10, inicio_fila + i - 1, 10) # totales_cobrando_garantia_salarial = '=SUM(%s)' % xl_range(inicio_fila, 11, inicio_fila + i - 1, 11) # totales_sin_garantia_salarial = '=SUM(%s)' % xl_range(inicio_fila, 12, inicio_fila + i - 1, 12) # totales_baja = '=SUM(%s)' % xl_range(inicio_fila, 13, inicio_fila + i - 1, 13) # totales_propuesto_disponible = '=SUM(%s)' % xl_range(inicio_fila, 14, inicio_fila + i - 1, 14) # TOTALES worksheet_data.write(inicio_fila + i, 0, "TOTALES", formato_organismos) worksheet_data.write(inicio_fila + i, 1, totales, formato_organismos) worksheet_data.write(inicio_fila + i, 2, totales_femeninos, formato_organismos) worksheet_data.write(inicio_fila + i, 3, totales_jovenes, formato_organismos) worksheet_data.write(inicio_fila + i, 4, totales_hasta_treinta_dias, formato_organismos) worksheet_data.write(inicio_fila + i, 5, totales_mas_treinta_menos_sesenta_dias, formato_organismos) worksheet_data.write(inicio_fila + i, 6, totales_mas_sesenta_dias_menos_un_anno, formato_organismos) worksheet_data.write(inicio_fila + i, 7, totales_mas_un_anno, formato_organismos) worksheet_data.write(inicio_fila + i, 8, totales_reubicados_temporal_misma_entidad, formato_organismos) worksheet_data.write(inicio_fila + i, 9, totales_reubicados_temporal_mismo_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 10, totales_reubicados_temporal_otro_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 11, totales_cobrando_garantia_salarial, formato_organismos) worksheet_data.write(inicio_fila + i, 12, totales_sin_garantia_salarial, formato_organismos) worksheet_data.write(inicio_fila + i, 13, totales_baja, formato_organismos) worksheet_data.write(inicio_fila + i, 14, totales_propuesto_disponible, formato_organismos) book.close() return response
def interruptos_por_actividades(request): anno_actual = datetime.today().year mes_actual = datetime.today().month categoria_usuario = request.user.perfil_usuario.categoria.nombre organismo = request.user.perfil_usuario.organismo nombre_organismo = organismo.nombre.encode('utf-8').strip() provincias = Provincia.objects.all() if request.method == 'POST': response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') if request.POST['anno']: if request.POST['mes']: if int(request.POST['mes']) == 12: anno_actual = int(request.POST['anno']) + 1 else: anno_actual = int(request.POST['anno']) if request.POST['mes']: mes = int(request.POST['mes']) if request.POST['provincia']: provincia = request.POST['provincia'] p = Provincia.objects.get(id=provincia) nombre_provincia = p.nombre.encode('utf-8').strip() if categoria_usuario == 'interrupto': response[ 'Content-Disposition'] = "attachment; filename=Interruptos_por_actividades_(%s)_(%s_%s)_(%s).xlsx" % ( str(nombre_organismo).replace(" ", "_"), obtener_mes(mes_actual), anno_actual, str(nombre_provincia).replace(" ", "_")) else: response['Content-Disposition'] = "attachment; filename=Interruptos_por_actividades_(%s_%s)_(%s).xlsx" % ( obtener_mes(mes_actual), anno_actual, str(nombre_provincia).replace(" ", "_")) else: if categoria_usuario == 'interrupto': response[ 'Content-Disposition'] = "attachment; filename=Interruptos_por_actividades_(%s)_(%s_%s).xlsx" % ( str(nombre_organismo).replace(" ", "_"), obtener_mes(mes_actual), anno_actual) else: response['Content-Disposition'] = "attachment; filename=Interruptos_por_actividades_(%s_%s).xlsx" % ( obtener_mes(mes_actual), anno_actual) book = Workbook(response, {'in_memory': True}) worksheet_data = book.add_worksheet("Interruptos por Provincias") formato = book.add_format({'bold': True, 'border': 1}) formato1 = book.add_format({'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1}) formato5 = book.add_format({'border': 1, 'text_wrap': True}) formato_organismos = book.add_format({'bold': True, 'border': 1}) worksheet_data.write("A1", "OACE-OSDE / Actividades", formato1) worksheet_data.set_column("A:A", 24) actividades = ActividadInterrupto.objects.all() totales = 0 lista_totales = [] for indice, a in enumerate(actividades): lista_totales.insert(indice, totales) worksheet_data.write(0, indice + 1, a.actividad, formato) if categoria_usuario == 'interrupto': if es_oace(organismo): osdes = obtener_osdes_de_un_oace(organismo) if osdes.__len__() > 0: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo__id__in=[osde.id for osde in osdes] ) else: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo=organismo ) organismos = Organismo.objects.filter(id=organismo.id) else: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo=organismo ) query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode(mes_actual) + """ AND date_part('year',t.fecha_registro)=""" + unicode(anno_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter(id__in=ids_interruptos) elif categoria_usuario == 'administrador': query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode(mes_actual) + """ AND date_part('year',t.fecha_registro)=""" + unicode(anno_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter(id__in=ids_interruptos) organismos = obtener_oaces() inicio_fila = 1 i = 0 if es_oace(organismo) or categoria_usuario == 'administrador': for oace in organismos: worksheet_data.write(inicio_fila + i, 0, oace.siglas, formato_organismos) # organismo for indice, actividad in enumerate(actividades): lista_totales[indice] = lista_totales[indice] + totales_interruptos_organismo_actividades(interruptos, oace, actividad) worksheet_data.write(inicio_fila + i, indice + 1, totales_interruptos_organismo_actividades(interruptos, oace, actividad), formato_organismos) i = i + 1 for interrupto in interruptos: if interrupto.organismo_id == oace.id: worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad for indice, actividad in enumerate(actividades): if interrupto.actividad == actividad: worksheet_data.write(inicio_fila + i, indice + 1, total_interruptos(interrupto), formato5) else: worksheet_data.write(inicio_fila + i, indice + 1, 0, formato5) i = i + 1 osdes = obtener_osdes_de_un_oace(oace) if obtener_osdes_de_un_oace(oace).__len__() > 0: for osde in osdes: worksheet_data.write(inicio_fila + i, 0, osde.siglas, formato_organismos) # osde for indice, actividad in enumerate(actividades): lista_totales[indice] = lista_totales[indice] + totales_interruptos_organismo_actividades(interruptos, osde, actividad) worksheet_data.write(inicio_fila + i, indice + 1, totales_interruptos_organismo_actividades(interruptos, osde, actividad), formato_organismos) i = i + 1 l_interruptos = interruptos.filter(organismo_id=osde) for interrupto in l_interruptos: worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad for indice, actividad in enumerate(actividades): if interrupto.actividad == actividad: worksheet_data.write(inicio_fila + i, indice + 1, total_interruptos(interrupto), formato5) else: worksheet_data.write(inicio_fila + i, indice + 1, 0, formato5) i = i + 1 if not es_oace(organismo): worksheet_data.write(inicio_fila + i, 0, organismo.siglas, formato_organismos) # organismo for indice, actividad in enumerate(actividades): lista_totales[indice] = lista_totales[indice] + totales_interruptos_organismo_actividades(interruptos, organismo, actividad) worksheet_data.write(inicio_fila + i, indice + 1, totales_interruptos_organismo_actividades(interruptos, organismo, actividad), formato_organismos) i = i + 1 interruptos = interruptos.filter(organismo__nombre=organismo) for interrupto in interruptos: worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad for indice, a in enumerate(actividades): if interrupto.actividad == a: worksheet_data.write(inicio_fila + i, indice + 1, total_interruptos(interrupto), formato5) else: worksheet_data.write(inicio_fila + i, indice + 1, 0, formato5) i = i + 1 worksheet_data.write(inicio_fila + i, 0, "TOTALES", formato_organismos) for indice, actividad in enumerate(actividades): worksheet_data.write(inicio_fila + i, indice + 1, lista_totales[indice], formato_organismos) book.close() return response context = {'provincias': provincias, 'titulo': 'Interruptos por actividades.'} return render(request, "Reportes/ReportesInterrupto/filtrar_interruptos.html", context)
def interruptos_situacion_duracion(request): anno_actual = datetime.today().year mes_actual = datetime.today().month categoria_usuario = request.user.perfil_usuario.categoria.nombre organismo = request.user.perfil_usuario.organismo nombre_organismo = organismo.nombre.encode('utf-8').strip() num_anno = anno_actual if mes_actual == 12: num_anno = anno_actual - 1 response = HttpResponse( content_type= 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') if categoria_usuario == 'interrupto' or categoria_usuario == 'interrupto': response[ 'Content-Disposition'] = "attachment; filename=Interruptos_reubicados_por_organismos_(%s)_(%s_%s).xlsx" % ( str(nombre_organismo).replace( " ", "_"), obtener_mes(mes_actual - 1), num_anno) else: response[ 'Content-Disposition'] = "attachment; filename=Interruptos_reubicados_por_organismos_(%s_%s).xlsx" % ( obtener_mes(mes_actual - 1), num_anno) book = Workbook(response, {'in_memory': True}) worksheet_data = book.add_worksheet("Interruptos por Organismos") formato1 = book.add_format({ 'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1 }) formato2 = book.add_format({ 'rotation': 45, 'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1, 'text_wrap': True }) formato3 = book.add_format({'align': 'center', 'bold': True, 'border': 1}) formato4 = book.add_format({ 'rotation': 90, 'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1, 'text_wrap': True }) formato5 = book.add_format({'border': 1, 'text_wrap': True}) formato_organismos = book.add_format({'bold': True, 'border': 1}) worksheet_data.merge_range('A1:A3', "OACE-OSDE", formato1) worksheet_data.merge_range( "B1:N1", "Interruptos - Reubicados Temporales: %s-%s" % (obtener_mes(mes_actual - 1), num_anno), formato3) worksheet_data.merge_range("B2:B3", "Total", formato2) worksheet_data.merge_range("C2:E2", "Hasta 30 dias", formato1) worksheet_data.merge_range("F2:H2", "Mas de 30 y hasta 60 dias", formato1) worksheet_data.merge_range("I2:K2", "Mas de 60 dias y hasta 1", formato1) worksheet_data.merge_range("L2:N2", "Mas de 1", formato1) # Hasta 30 dias worksheet_data.write("C3", "En la misma entidad", formato4) worksheet_data.write("D3", "En otra entidad del mismo organismo", formato4) worksheet_data.write("E3", "En una entidad de otro organismo", formato4) # Mas de 30 y hasta 60 dias worksheet_data.write("F3", "En la misma entidad", formato4) worksheet_data.write("G3", "En otra entidad del mismo organismo", formato4) worksheet_data.write("H3", "En una entidad de otro organismo", formato4) # Mas de 60 dias y hasta 1 anno worksheet_data.write("I3", "En la misma entidad", formato4) worksheet_data.write("J3", "En otra entidad del mismo organismo", formato4) worksheet_data.write("K3", "En una entidad de otro organismo", formato4) # Mas de 1 anno worksheet_data.write("L3", "En la misma entidad", formato4) worksheet_data.write("M3", "En otra entidad del mismo organismo", formato4) worksheet_data.write("N3", "En una entidad de otro organismo", formato4) worksheet_data.set_column("A:A", 20.58) if categoria_usuario == 'interrupto': if es_oace(organismo): osdes = obtener_osdes_de_un_oace(organismo) if osdes.__len__() > 0: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo__id__in=[osde.id for osde in osdes] ).values("hastatreintadias_reubicadostemporal_misma_entidad", "hastatreintadias_reubicadostemporal_mismo_organismo", "hastatreintadias_reubicadostemporal_otro_organismo", "entretreintaysesentadias_reubicadostemporal_misma_entidad", "entretreintaysesentadias_reubicadostemporal_mismo_organismo", "entretreintaysesentadias_reubicadostemporal_otro_organismo", "masdesesentayunanno_reubicadostemporal_misma_entidad", "masdesesentayunanno_reubicadostemporal_mismo_organismo", "masdesesentayunanno_reubicadostemporal_otro_organismo", "masdeunanno_reubicadostemporal_misma_entidad", "masdeunanno_reubicadostemporal_mismo_organismo", "masdeunanno_reubicadostemporal_otro_organismo", "total_interruptos_entidad") | \ Interruptos.objects.filter(organismo=organismo).values("hastatreintadias_reubicadostemporal_misma_entidad", "hastatreintadias_reubicadostemporal_mismo_organismo", "hastatreintadias_reubicadostemporal_otro_organismo", "entretreintaysesentadias_reubicadostemporal_misma_entidad", "entretreintaysesentadias_reubicadostemporal_mismo_organismo", "entretreintaysesentadias_reubicadostemporal_otro_organismo", "masdesesentayunanno_reubicadostemporal_misma_entidad", "masdesesentayunanno_reubicadostemporal_mismo_organismo", "masdesesentayunanno_reubicadostemporal_otro_organismo", "masdeunanno_reubicadostemporal_misma_entidad", "masdeunanno_reubicadostemporal_mismo_organismo", "masdeunanno_reubicadostemporal_otro_organismo", "total_interruptos_entidad") else: interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, organismo=organismo ).values( "hastatreintadias_reubicadostemporal_misma_entidad", "hastatreintadias_reubicadostemporal_mismo_organismo", "hastatreintadias_reubicadostemporal_otro_organismo", "entretreintaysesentadias_reubicadostemporal_misma_entidad", "entretreintaysesentadias_reubicadostemporal_mismo_organismo", "entretreintaysesentadias_reubicadostemporal_otro_organismo", "masdesesentayunanno_reubicadostemporal_misma_entidad", "masdesesentayunanno_reubicadostemporal_mismo_organismo", "masdesesentayunanno_reubicadostemporal_otro_organismo", "masdeunanno_reubicadostemporal_misma_entidad", "masdeunanno_reubicadostemporal_mismo_organismo", "masdeunanno_reubicadostemporal_otro_organismo", "total_interruptos_entidad") organismos = Organismo.objects.filter(id=organismo.id) else: interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, organismo=organismo ).values( "hastatreintadias_reubicadostemporal_misma_entidad", "hastatreintadias_reubicadostemporal_mismo_organismo", "hastatreintadias_reubicadostemporal_otro_organismo", "entretreintaysesentadias_reubicadostemporal_misma_entidad", "entretreintaysesentadias_reubicadostemporal_mismo_organismo", "entretreintaysesentadias_reubicadostemporal_otro_organismo", "masdesesentayunanno_reubicadostemporal_misma_entidad", "masdesesentayunanno_reubicadostemporal_mismo_organismo", "masdesesentayunanno_reubicadostemporal_otro_organismo", "masdeunanno_reubicadostemporal_misma_entidad", "masdeunanno_reubicadostemporal_mismo_organismo", "masdeunanno_reubicadostemporal_otro_organismo", "total_interruptos_entidad") query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode( mes_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = interruptos.filter(id__in=ids_interruptos) elif categoria_usuario == 'administrador': query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode( mes_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter( fecha_registro__year=anno_actual, id__in=ids_interruptos).values( "hastatreintadias_reubicadostemporal_misma_entidad", "hastatreintadias_reubicadostemporal_mismo_organismo", "hastatreintadias_reubicadostemporal_otro_organismo", "entretreintaysesentadias_reubicadostemporal_misma_entidad", "entretreintaysesentadias_reubicadostemporal_mismo_organismo", "entretreintaysesentadias_reubicadostemporal_otro_organismo", "masdesesentayunanno_reubicadostemporal_misma_entidad", "masdesesentayunanno_reubicadostemporal_mismo_organismo", "masdesesentayunanno_reubicadostemporal_otro_organismo", "masdeunanno_reubicadostemporal_misma_entidad", "masdeunanno_reubicadostemporal_mismo_organismo", "masdeunanno_reubicadostemporal_otro_organismo", "total_interruptos_entidad", "organismo_id", "entidad__e_nombre") organismos = obtener_oaces() inicio_fila = 3 i = 0 totales = 0 totales_hasta_treinta_dias_misma_entidad = 0 totales_hasta_treinta_dias_mismo_organismo = 0 totales_hasta_treinta_dias_otro_organismo = 0 totales_mas_treinta_misma_entidad = 0 totales_mas_treinta_mismo_organismo = 0 totales_mas_treinta_otro_organismo = 0 totales_mas_sesenta_misma_entidad = 0 totales_mas_sesenta_mismo_organismo = 0 totales_mas_sesenta_otro_organismo = 0 totales_mas_un_anno_misma_entidad = 0 totales_mas_un_anno_mismo_organismo = 0 totales_mas_un_anno_otro_organismo = 0 if es_oace(organismo) or categoria_usuario == 'administrador': for oace in organismos: INTERRUPTOS_ORGANISMOS = interruptos.filter(organismo=oace) dict_totales = totales_situacion_tiempo(INTERRUPTOS_ORGANISMOS) t_total = dict_totales['total'] t_hasta_treinta_dias_misma_entidad = dict_totales[ 'hasta_treinta_dias_misma_entidad'] t_hasta_treinta_dias_mismo_organismo = dict_totales[ 'hasta_treinta_dias_mismo_organismo'] t_hasta_treinta_dias_otro_organismo = dict_totales[ 'hasta_treinta_dias_otro_organismo'] t_mas_treinta_misma_entidad = dict_totales[ 'mas_treinta_misma_entidad'] t_mas_treinta_mismo_organismo = dict_totales[ 'mas_treinta_mismo_organismo'] t_mas_treinta_otro_organismo = dict_totales[ 'mas_treinta_otro_organismo'] t_mas_sesenta_misma_entidad = dict_totales[ 'mas_sesenta_misma_entidad'] t_mas_sesenta_mismo_organismo = dict_totales[ 'mas_sesenta_mismo_organismo'] t_mas_sesenta_otro_organismo = dict_totales[ 'mas_sesenta_otro_organismo'] t_mas_un_anno_misma_entidad = dict_totales[ 'mas_un_anno_misma_entidad'] t_mas_un_anno_mismo_organismo = dict_totales[ 'mas_un_anno_mismo_organismo'] t_mas_un_anno_otro_organismo = dict_totales[ 'mas_un_anno_otro_organismo'] worksheet_data.write(inicio_fila + i, 0, oace.siglas, formato_organismos) # organismo total = '=SUM(%s)' % xl_range(inicio_fila + i, 2, inicio_fila + i, 13) # worksheet_data.write(INICIO, cantidad_provincias + 1, total_tpcp, formato) worksheet_data.write(inicio_fila + i, 1, total, formato5) # total worksheet_data.write(inicio_fila + i, 2, t_hasta_treinta_dias_misma_entidad, formato5) # hasta_treinta_dias_misma_entidad worksheet_data.write( inicio_fila + i, 3, t_hasta_treinta_dias_mismo_organismo, formato5) # hasta_treinta_dias_mismo_organismo worksheet_data.write(inicio_fila + i, 4, t_hasta_treinta_dias_otro_organismo, formato5) # hasta_treinta_dias_otro_organismo worksheet_data.write(inicio_fila + i, 5, t_mas_treinta_misma_entidad, formato5) # mas_treinta_misma_entidad worksheet_data.write(inicio_fila + i, 6, t_mas_treinta_mismo_organismo, formato5) # mas_treinta_mismo_organismo worksheet_data.write(inicio_fila + i, 7, t_mas_treinta_otro_organismo, formato5) # mas_treinta_otro_organismo worksheet_data.write(inicio_fila + i, 8, t_mas_sesenta_misma_entidad, formato5) # mas_sesenta_misma_entidad worksheet_data.write(inicio_fila + i, 9, t_mas_sesenta_mismo_organismo, formato5) # mas_sesenta_mismo_organismo worksheet_data.write(inicio_fila + i, 10, t_mas_sesenta_otro_organismo, formato5) # mas_sesenta_otro_organismo worksheet_data.write(inicio_fila + i, 11, t_mas_un_anno_misma_entidad, formato5) # mas_un_anno_misma_entidad worksheet_data.write(inicio_fila + i, 12, t_mas_un_anno_mismo_organismo, formato5) # mas_un_anno_mismo_organismo worksheet_data.write(inicio_fila + i, 13, t_mas_un_anno_otro_organismo, formato5) # mas_un_anno_otro_organismo totales += t_total totales_hasta_treinta_dias_misma_entidad += t_hasta_treinta_dias_misma_entidad totales_hasta_treinta_dias_mismo_organismo += t_hasta_treinta_dias_mismo_organismo totales_hasta_treinta_dias_otro_organismo += t_hasta_treinta_dias_otro_organismo totales_mas_treinta_misma_entidad += t_mas_treinta_misma_entidad totales_mas_treinta_mismo_organismo += t_mas_treinta_mismo_organismo totales_mas_treinta_otro_organismo += t_mas_treinta_otro_organismo totales_mas_sesenta_misma_entidad += t_mas_sesenta_misma_entidad totales_mas_sesenta_mismo_organismo += t_mas_sesenta_mismo_organismo totales_mas_sesenta_otro_organismo += t_mas_sesenta_otro_organismo totales_mas_un_anno_misma_entidad += t_mas_un_anno_misma_entidad totales_mas_un_anno_mismo_organismo += t_mas_un_anno_mismo_organismo totales_mas_un_anno_otro_organismo += t_mas_un_anno_otro_organismo i = i + 1 L_INTERRUPTOS = interruptos.filter(organismo=oace) for interrupto in L_INTERRUPTOS: # if interrupto['organismo_id'] == oace.id: worksheet_data.write(inicio_fila + i, 0, interrupto['entidad__e_nombre'], formato5) # entidad total = '=SUM(%s)' % xl_range(inicio_fila + i, 2, inicio_fila + i, 13) worksheet_data.write(inicio_fila + i, 1, total, formato5) # total worksheet_data.write( inicio_fila + i, 2, interrupto[ 'hastatreintadias_reubicadostemporal_misma_entidad'], formato5) # hasta_treinta_dias_misma_entidad worksheet_data.write( inicio_fila + i, 3, interrupto[ 'hastatreintadias_reubicadostemporal_mismo_organismo'], formato5) # hasta_treinta_dias_mismo_organismo worksheet_data.write( inicio_fila + i, 4, interrupto[ 'hastatreintadias_reubicadostemporal_otro_organismo'], formato5) # hasta_treinta_dias_otro_organismo worksheet_data.write(inicio_fila + i, 5, interrupto[ 'entretreintaysesentadias_reubicadostemporal_misma_entidad'], formato5) # mas_treinta_misma_entidad worksheet_data.write(inicio_fila + i, 6, interrupto[ 'entretreintaysesentadias_reubicadostemporal_mismo_organismo'], formato5) # mas_treinta_mismo_organismo worksheet_data.write(inicio_fila + i, 7, interrupto[ 'entretreintaysesentadias_reubicadostemporal_otro_organismo'], formato5) # mas_treinta_otro_organismo worksheet_data.write(inicio_fila + i, 8, interrupto[ 'masdesesentayunanno_reubicadostemporal_misma_entidad'], formato5) # mas_sesenta_misma_entidad worksheet_data.write(inicio_fila + i, 9, interrupto[ 'masdesesentayunanno_reubicadostemporal_mismo_organismo'], formato5) # mas_sesenta_mismo_organismo worksheet_data.write(inicio_fila + i, 10, interrupto[ 'masdesesentayunanno_reubicadostemporal_otro_organismo'], formato5) # mas_sesenta_otro_organismo worksheet_data.write( inicio_fila + i, 11, interrupto['masdeunanno_reubicadostemporal_misma_entidad'], formato5) # mas_un_anno_misma_entidad worksheet_data.write(inicio_fila + i, 12, interrupto[ 'masdeunanno_reubicadostemporal_mismo_organismo'], formato5) # mas_un_anno_mismo_organismo worksheet_data.write(inicio_fila + i, 13, interrupto[ 'masdeunanno_reubicadostemporal_otro_organismo'], formato5) # mas_un_anno_otro_organismo i = i + 1 osdes = obtener_osdes_de_un_oace(oace) if osdes.__len__() > 0: for osde in osdes: INTERRUPTOS_ORGANISMOS = interruptos.filter(organismo=osde) dict_totales = totales_situacion_tiempo( INTERRUPTOS_ORGANISMOS) t_total = dict_totales['total'] t_hasta_treinta_dias_misma_entidad = dict_totales[ 'hasta_treinta_dias_misma_entidad'] t_hasta_treinta_dias_mismo_organismo = dict_totales[ 'hasta_treinta_dias_mismo_organismo'] t_hasta_treinta_dias_otro_organismo = dict_totales[ 'hasta_treinta_dias_otro_organismo'] t_mas_treinta_misma_entidad = dict_totales[ 'mas_treinta_misma_entidad'] t_mas_treinta_mismo_organismo = dict_totales[ 'mas_treinta_mismo_organismo'] t_mas_treinta_otro_organismo = dict_totales[ 'mas_treinta_otro_organismo'] t_mas_sesenta_misma_entidad = dict_totales[ 'mas_sesenta_misma_entidad'] t_mas_sesenta_mismo_organismo = dict_totales[ 'mas_sesenta_mismo_organismo'] t_mas_sesenta_otro_organismo = dict_totales[ 'mas_sesenta_otro_organismo'] t_mas_un_anno_misma_entidad = dict_totales[ 'mas_un_anno_misma_entidad'] t_mas_un_anno_mismo_organismo = dict_totales[ 'mas_un_anno_mismo_organismo'] t_mas_un_anno_otro_organismo = dict_totales[ 'mas_un_anno_otro_organismo'] worksheet_data.write(inicio_fila + i, 0, osde.siglas, formato_organismos) # osde total = '=SUM(%s)' % xl_range(inicio_fila + i, 2, inicio_fila + i, 13) worksheet_data.write(inicio_fila + i, 1, total, formato5) # total worksheet_data.write( inicio_fila + i, 2, t_hasta_treinta_dias_misma_entidad, formato5) # hasta_treinta_dias_misma_entidad worksheet_data.write( inicio_fila + i, 3, t_hasta_treinta_dias_mismo_organismo, formato5) # hasta_treinta_dias_mismo_organismo worksheet_data.write( inicio_fila + i, 4, t_hasta_treinta_dias_otro_organismo, formato5) # hasta_treinta_dias_otro_organismo worksheet_data.write(inicio_fila + i, 5, t_mas_treinta_misma_entidad, formato5) # mas_treinta_misma_entidad worksheet_data.write( inicio_fila + i, 6, t_mas_treinta_mismo_organismo, formato5) # mas_treinta_mismo_organismo worksheet_data.write( inicio_fila + i, 7, t_mas_treinta_otro_organismo, formato5) # mas_treinta_otro_organismo worksheet_data.write(inicio_fila + i, 8, t_mas_sesenta_misma_entidad, formato5) # mas_sesenta_misma_entidad worksheet_data.write( inicio_fila + i, 9, t_mas_sesenta_mismo_organismo, formato5) # mas_sesenta_mismo_organismo worksheet_data.write( inicio_fila + i, 10, t_mas_sesenta_otro_organismo, formato5) # mas_sesenta_otro_organismo worksheet_data.write(inicio_fila + i, 11, t_mas_un_anno_misma_entidad, formato5) # mas_un_anno_misma_entidad worksheet_data.write( inicio_fila + i, 12, t_mas_un_anno_mismo_organismo, formato5) # mas_un_anno_mismo_organismo worksheet_data.write( inicio_fila + i, 13, t_mas_un_anno_otro_organismo, formato5) # mas_un_anno_otro_organismo totales += t_total totales_hasta_treinta_dias_misma_entidad += t_hasta_treinta_dias_misma_entidad totales_hasta_treinta_dias_mismo_organismo += t_hasta_treinta_dias_mismo_organismo totales_hasta_treinta_dias_otro_organismo += t_hasta_treinta_dias_otro_organismo totales_mas_treinta_misma_entidad += t_mas_treinta_misma_entidad totales_mas_treinta_mismo_organismo += t_mas_treinta_mismo_organismo totales_mas_treinta_otro_organismo += t_mas_treinta_otro_organismo totales_mas_sesenta_misma_entidad += t_mas_sesenta_misma_entidad totales_mas_sesenta_mismo_organismo += t_mas_sesenta_mismo_organismo totales_mas_sesenta_otro_organismo += t_mas_sesenta_otro_organismo totales_mas_un_anno_misma_entidad += t_mas_un_anno_misma_entidad totales_mas_un_anno_mismo_organismo += t_mas_un_anno_mismo_organismo totales_mas_un_anno_otro_organismo += t_mas_un_anno_otro_organismo i = i + 1 L_INTERRUPTOS = interruptos.filter(organismo_id=osde) for interrupto in L_INTERRUPTOS: worksheet_data.write(inicio_fila + i, 0, interrupto['entidad__e_nombre'], formato5) # entidad total = '=SUM(%s)' % xl_range(inicio_fila + i, 2, inicio_fila + i, 13) worksheet_data.write(inicio_fila + i, 1, total, formato5) # total worksheet_data.write(inicio_fila + i, 2, interrupto[ 'hastatreintadias_reubicadostemporal_misma_entidad'], formato5 ) # hasta_treinta_dias_misma_entidad worksheet_data.write(inicio_fila + i, 3, interrupto[ 'hastatreintadias_reubicadostemporal_mismo_organismo'], formato5 ) # hasta_treinta_dias_mismo_organismo worksheet_data.write(inicio_fila + i, 4, interrupto[ 'hastatreintadias_reubicadostemporal_otro_organismo'], formato5 ) # hasta_treinta_dias_otro_organismo worksheet_data.write(inicio_fila + i, 5, interrupto[ 'entretreintaysesentadias_reubicadostemporal_misma_entidad'], formato5 ) # mas_treinta_misma_entidad worksheet_data.write(inicio_fila + i, 6, interrupto[ 'entretreintaysesentadias_reubicadostemporal_mismo_organismo'], formato5 ) # mas_treinta_mismo_organismo worksheet_data.write(inicio_fila + i, 7, interrupto[ 'entretreintaysesentadias_reubicadostemporal_otro_organismo'], formato5 ) # mas_treinta_otro_organismo worksheet_data.write(inicio_fila + i, 8, interrupto[ 'masdesesentayunanno_reubicadostemporal_misma_entidad'], formato5 ) # mas_sesenta_misma_entidad worksheet_data.write(inicio_fila + i, 9, interrupto[ 'masdesesentayunanno_reubicadostemporal_mismo_organismo'], formato5 ) # mas_sesenta_mismo_organismo worksheet_data.write(inicio_fila + i, 10, interrupto[ 'masdesesentayunanno_reubicadostemporal_otro_organismo'], formato5 ) # mas_sesenta_otro_organismo worksheet_data.write(inicio_fila + i, 11, interrupto[ 'masdeunanno_reubicadostemporal_misma_entidad'], formato5 ) # mas_un_anno_misma_entidad worksheet_data.write(inicio_fila + i, 12, interrupto[ 'masdeunanno_reubicadostemporal_mismo_organismo'], formato5 ) # mas_un_anno_mismo_organismo worksheet_data.write(inicio_fila + i, 13, interrupto[ 'masdeunanno_reubicadostemporal_otro_organismo'], formato5 ) # mas_un_anno_otro_organismo i = i + 1 # if not es_oace(organismo): # # org = interruptos.filter(organismo=organismo) # dict_totales = totales_por_organismo(org) # t = dict_totales['t'] # t_femeninos = dict_totales['t_femeninos'] # t_jovenes = dict_totales['t_jovenes'] # t_hasta_treinta_dias = dict_totales['t_hasta_treinta_dias'] # t_mas_treinta_menos_sesenta_dias = dict_totales['t_mas_treinta_menos_sesenta_dias'] # t_mas_sesenta_dias_menos_un_anno = dict_totales['t_mas_sesenta_dias_menos_un_anno'] # t_mas_un_anno = dict_totales['t_mas_un_anno'] # t_reubicados_temporal_misma_entidad = dict_totales['t_reubicados_temporal_misma_entidad'] # t_reubicados_temporal_mismo_organismo = dict_totales['t_reubicados_temporal_mismo_organismo'] # t_reubicados_temporal_otro_organismo = dict_totales['t_reubicados_temporal_otro_organismo'] # t_cobrando_garantia_salarial = dict_totales['t_cobrando_garantia_salarial'] # t_sin_garantia_salarial = dict_totales['t_sin_garantia_salarial'] # t_baja = dict_totales['t_baja'] # t_propuesto_disponible = dict_totales['t_propuesto_disponible'] # # worksheet_data.write(inicio_fila + i, 0, organismo.siglas, formato_organismos) # organismo # worksheet_data.write(inicio_fila + i, 1, t, formato5) # total # worksheet_data.write(inicio_fila + i, 2, t_femeninos, formato5) # totales femeninos # worksheet_data.write(inicio_fila + i, 3, t_jovenes, formato5) # totales jóvenes # worksheet_data.write(inicio_fila + i, 4, t_hasta_treinta_dias, formato5) # menos de 30 dias # worksheet_data.write(inicio_fila + i, 5, t_mas_treinta_menos_sesenta_dias, formato5) # entre 30 y 60 dias # worksheet_data.write(inicio_fila + i, 6, t_mas_sesenta_dias_menos_un_anno, formato5) # entre 60 dias y un año # worksheet_data.write(inicio_fila + i, 7, t_mas_un_anno, formato5) # mas de un año # worksheet_data.write(inicio_fila + i, 8, t_reubicados_temporal_misma_entidad, # formato5) # reubicado temporal dentro de la misma entidad # worksheet_data.write(inicio_fila + i, 9, t_reubicados_temporal_mismo_organismo, # formato5) # reubicado temporal dentro del mismo organismo # worksheet_data.write(inicio_fila + i, 10, t_reubicados_temporal_otro_organismo, # formato5) # reubicado temporal dentro de otro organismo # worksheet_data.write(inicio_fila + i, 11, t_cobrando_garantia_salarial, formato5) # cobrando garantia salarial # worksheet_data.write(inicio_fila + i, 12, t_sin_garantia_salarial, formato5) # sin garantia salarial # worksheet_data.write(inicio_fila + i, 13, t_baja, formato5) # baja # worksheet_data.write(inicio_fila + i, 14, t_propuesto_disponible, formato5) # propuesto a disponible # # totales += t # totales_hasta_treinta_dias += t_hasta_treinta_dias # totales_mas_treinta_menos_sesenta_dias += t_mas_treinta_menos_sesenta_dias # totales_mas_sesenta_dias_menos_un_anno += t_mas_sesenta_dias_menos_un_anno # totales_mas_un_anno += t_mas_un_anno # totales_reubicados_temporal_misma_entidad += t_reubicados_temporal_misma_entidad # totales_reubicados_temporal_mismo_organismo += t_reubicados_temporal_mismo_organismo # totales_reubicados_temporal_otro_organismo += t_reubicados_temporal_otro_organismo # totales_cobrando_garantia_salarial += t_cobrando_garantia_salarial # totales_sin_garantia_salarial += t_sin_garantia_salarial # totales_baja += t_baja # totales_propuesto_disponible += t_propuesto_disponible # # i = i + 1 # # for interrupto in interruptos: # if interrupto.organismo_id == organismo.id: # worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad # worksheet_data.write(inicio_fila + i, 1, total_interruptos_por_entidad(interrupto), formato5) # total # worksheet_data.write(inicio_fila + i, 2, total_femeninos_interruptos_por_entidad(interrupto), # formato5) # totales femeninos # worksheet_data.write(inicio_fila + i, 3, total_jovenes_interruptos_por_entidad(interrupto), # formato5) # totales jóvenes # worksheet_data.write(inicio_fila + i, 4, interruptos_hasta_treinta_dias_por_entidad(interrupto), # formato5) # menos de 30 dias # worksheet_data.write(inicio_fila + i, 5, interruptos_mas_treinta_hasta_sesenta_por_entidad(interrupto), # formato5) # entre 30 y 60 dias # worksheet_data.write(inicio_fila + i, 6, interruptos_mas_sesenta_menos_un_anno_por_entidad(interrupto), # formato5) # entre 60 dias y un año # worksheet_data.write(inicio_fila + i, 7, interruptos_mas_un_anno_por_entidad(interrupto), # formato5) # mas de un año # worksheet_data.write(inicio_fila + i, 8, interruptos_reubicado_misma_entidad_por_entidad(interrupto), # formato5) # reubicado temporal dentro de la misma entidad # worksheet_data.write(inicio_fila + i, 9, interruptos_reubicado_mismo_organismo_por_entidad(interrupto), # formato5) # reubicado temporal dentro del mismo organismo # worksheet_data.write(inicio_fila + i, 10, interruptos_reubicado_otro_organismo_por_entidad(interrupto), # formato5) # reubicado temporal dentro de otro organismo # worksheet_data.write(inicio_fila + i, 11, # interruptos_cobrando_garantia_salarial_por_entidad(interrupto), # formato5) # cobrando garantia salarial # worksheet_data.write(inicio_fila + i, 12, interruptos_sin_garantia_salarial_por_entidad(interrupto), # formato5) # sin garantia salarial # worksheet_data.write(inicio_fila + i, 13, interruptos_baja_por_entidad(interrupto), formato5) # baja # worksheet_data.write(inicio_fila + i, 14, interruptos_propuesto_disponible_por_entidad(interrupto), # formato5) # propuesto a disponible # i = i + 1 # SUMAS # totales = '=SUM(%s)' % xl_range(inicio_fila, 1, inicio_fila + i - 1, 1) # totales_femeninos = '=SUM(%s)' % xl_range(inicio_fila, 2, inicio_fila + i - 1, 2) # totales_jovenes = '=SUM(%s)' % xl_range(inicio_fila, 3, inicio_fila + i - 1, 3) # totales_hasta_treinta_dias = '=SUM(%s)' % xl_range(inicio_fila, 4, inicio_fila + i - 1, 4) # totales_mas_treinta_menos_sesenta_dias = '=SUM(%s)' % xl_range(inicio_fila, 5, inicio_fila + i - 1, 5) # totales_mas_sesenta_dias_menos_un_anno = '=SUM(%s)' % xl_range(inicio_fila, 6, inicio_fila + i - 1, 6) # totales_mas_un_anno = '=SUM(%s)' % xl_range(inicio_fila, 7, inicio_fila + i - 1, 7) # totales_reubicados_temporal_misma_entidad = '=SUM(%s)' % xl_range(inicio_fila, 8, inicio_fila + i - 1, 8) # totales_reubicados_temporal_mismo_organismo = '=SUM(%s)' % xl_range(inicio_fila, 9, inicio_fila + i - 1, 9) # totales_reubicados_temporal_otro_organismo = '=SUM(%s)' % xl_range(inicio_fila, 10, inicio_fila + i - 1, 10) # totales_cobrando_garantia_salarial = '=SUM(%s)' % xl_range(inicio_fila, 11, inicio_fila + i - 1, 11) # totales_sin_garantia_salarial = '=SUM(%s)' % xl_range(inicio_fila, 12, inicio_fila + i - 1, 12) # totales_baja = '=SUM(%s)' % xl_range(inicio_fila, 13, inicio_fila + i - 1, 13) # totales_propuesto_disponible = '=SUM(%s)' % xl_range(inicio_fila, 14, inicio_fila + i - 1, 14) # TOTALES worksheet_data.write(inicio_fila + i, 0, "TOTALES", formato_organismos) worksheet_data.write(inicio_fila + i, 1, totales, formato_organismos) worksheet_data.write(inicio_fila + i, 2, totales_hasta_treinta_dias_misma_entidad, formato_organismos) worksheet_data.write(inicio_fila + i, 3, totales_hasta_treinta_dias_mismo_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 4, totales_hasta_treinta_dias_otro_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 5, totales_mas_treinta_misma_entidad, formato_organismos) worksheet_data.write(inicio_fila + i, 6, totales_mas_treinta_mismo_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 7, totales_mas_treinta_otro_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 8, totales_mas_sesenta_misma_entidad, formato_organismos) worksheet_data.write(inicio_fila + i, 9, totales_mas_sesenta_mismo_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 10, totales_mas_sesenta_otro_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 11, totales_mas_un_anno_misma_entidad, formato_organismos) worksheet_data.write(inicio_fila + i, 12, totales_mas_un_anno_mismo_organismo, formato_organismos) worksheet_data.write(inicio_fila + i, 13, totales_mas_un_anno_otro_organismo, formato_organismos) book.close() return response
def interruptos_por_provincias_sin_entidades(request): anno_actual = datetime.today().year mes_actual = datetime.today().month categoria_usuario = request.user.perfil_usuario.categoria.nombre organismo = request.user.perfil_usuario.organismo nombre_organismo = organismo.nombre.encode('utf-8').strip() num_anno = anno_actual if mes_actual == 12: num_anno = anno_actual - 1 response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') if categoria_usuario == 'interrupto' or categoria_usuario == 'interrupto': response[ 'Content-Disposition'] = "attachment; filename=Interruptos_por_organismos_(%s)_(%s_%s).xlsx" % ( str(nombre_organismo).replace(" ", "_"), obtener_mes(mes_actual - 1), num_anno) else: response['Content-Disposition'] = "attachment; filename=Interruptos_por_provincias_(%s_%s).xlsx" % ( obtener_mes(mes_actual - 1), num_anno) book = Workbook(response, {'in_memory': True}) worksheet_data = book.add_worksheet("Interruptos por Provincias") formato1 = book.add_format({'align': 'center', 'valign': 'vcenter', 'bold': True, 'border': 1}) formato5 = book.add_format({'border': 1, 'text_wrap': True}) formato_organismos = book.add_format({'bold': True, 'border': 1}) worksheet_data.write("A1", "OACE-OSDE / Provincias", formato1) totales_provincias = dict() provincias = Provincia.objects.all() for indice, p in enumerate(provincias): worksheet_data.write(0, indice + 1, p.siglas, formato1) totales_provincias[p] = 0 worksheet_data.set_column("A:A", 24) if categoria_usuario == 'interrupto': if es_oace(organismo): osdes = obtener_osdes_de_un_oace(organismo) if osdes.__len__() > 0: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo__id__in=[osde.id for osde in osdes] ) else: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo=organismo ) organismos = Organismo.objects.filter(id=organismo.id) else: interruptos = Interruptos.objects.filter(fecha_registro__year=anno_actual, organismo=organismo ) query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode(mes_actual) + """ AND date_part('year',t.fecha_registro)=""" + unicode(anno_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter(id__in=ids_interruptos) elif categoria_usuario == 'administrador': query = """SELECT id FROM public."SGMGU_interruptos" t where date_part('month',t.fecha_registro)=""" + unicode(mes_actual) + """ AND date_part('year',t.fecha_registro)=""" + unicode(anno_actual) + """;""" resultado_query_interruptos = Interruptos.objects.raw(query) ids_interruptos = [interr.id for interr in resultado_query_interruptos] interruptos = Interruptos.objects.filter(id__in=ids_interruptos) organismos = obtener_oaces() inicio_fila = 1 i = 0 if es_oace(organismo) or categoria_usuario == 'administrador': for oace in organismos: worksheet_data.write(inicio_fila + i, 0, oace.siglas, formato_organismos) # organismo for indice, p in enumerate(provincias): t = totales_interruptos_organismo_provincia(interruptos, oace, p) worksheet_data.write(inicio_fila + i, indice + 1, t, formato5) totales_provincias[p] = totales_provincias[p] + t i = i + 1 # for interrupto in interruptos: # if interrupto.organismo_id == oace.id: # # worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad # # for indice, p in enumerate(provincias): # if interrupto.municipio.provincia == p: # worksheet_data.write(inicio_fila + i, indice + 1, total_interruptos(interrupto), formato5) # else: # worksheet_data.write(inicio_fila + i, indice + 1, 0, formato5) # # i = i + 1 osdes = obtener_osdes_de_un_oace(oace) if obtener_osdes_de_un_oace(oace).__len__() > 0: for osde in osdes: worksheet_data.write(inicio_fila + i, 0, osde.siglas, formato_organismos) # osde for indice, p in enumerate(provincias): t = totales_interruptos_organismo_provincia(interruptos, osde, p) worksheet_data.write(inicio_fila + i, indice + 1, t, formato5) totales_provincias[p] = totales_provincias[p] + t i = i + 1 # l_interruptos = interruptos.filter(organismo_id=osde) # # for interrupto in l_interruptos: # # worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad # # for indice, p in enumerate(provincias): # if interrupto.municipio.provincia == p: # worksheet_data.write(inicio_fila + i, indice + 1, total_interruptos(interrupto), formato5) # else: # worksheet_data.write(inicio_fila + i, indice + 1, 0, formato5) # # i = i + 1 if not es_oace(organismo): worksheet_data.write(inicio_fila + i, 0, organismo.siglas, formato_organismos) # organismo for indice, p in enumerate(provincias): t = totales_interruptos_organismo_provincia(interruptos, organismo, p) worksheet_data.write(inicio_fila + i, indice + 1, t, formato5) totales_provincias[p] = totales_provincias[p] + t i = i + 1 # interruptos = interruptos.filter(organismo__nombre=organismo) # # for interrupto in interruptos: # # worksheet_data.write(inicio_fila + i, 0, interrupto.entidad.e_nombre, formato5) # entidad # # for indice, p in enumerate(provincias): # if interrupto.municipio.provincia == p: # worksheet_data.write(inicio_fila + i, indice + 1, total_interruptos(interrupto), formato5) # else: # worksheet_data.write(inicio_fila + i, indice + 1, 0, formato5) # # i = i + 1 worksheet_data.write(inicio_fila + i, 0, "TOTALES", formato_organismos) for indice, x in enumerate(totales_provincias.values()): worksheet_data.write(inicio_fila + i, indice + 1, x, formato_organismos) book.close() return response
def total_personas_no_ubicadas_provincias(request): start_time = time.time() anno_actual = datetime.today().year mes_actual = datetime.today().month response = HttpResponse( content_type= 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') response[ 'Content-Disposition'] = "attachment; filename=Total_de_personas_no_ubicadas_por_provincias._(%s_%s).xlsx" % ( obtener_mes(mes_actual - 1), anno_actual) book = Workbook(response, {'in_memory': True}) worksheet_data = book.add_worksheet("Reporte 1") formato = book.add_format({'bold': True, 'border': 1}) formato2 = book.add_format({'border': 1}) worksheet_data.write("A1", "Provincias", formato) worksheet_data.write("B1", "Controlados", formato) worksheet_data.write("C1", "Mujeres controladas", formato) worksheet_data.write("D1", "Jovenes controlados", formato) worksheet_data.write("E1", "No ubicados", formato) worksheet_data.write("F1", "Mujeres no ubicadas", formato) worksheet_data.write("G1", "Jovenes no ubicados", formato) fuentes_procedencia = FuenteProcedencia.objects.filter( activo=True).order_by('id') cantidad_fuentes = fuentes_procedencia.count() indice = 7 total_arriba = indice + cantidad_fuentes worksheet_data.write(0, total_arriba, "Total", formato) for fuente in fuentes_procedencia: worksheet_data.write(0, indice, fuente.nombre, formato) indice = indice + 1 worksheet_data.set_column("A:A", 17) worksheet_data.set_column("B:B", 11) worksheet_data.set_column("C:C", 10) worksheet_data.set_column("D:D", 10) worksheet_data.set_column("E:E", 10) worksheet_data.set_column("F:F", 10) worksheet_data.set_column("G:G", 10) provincias = Provincia.objects.all() arr_provincias = [] for p in provincias: arr_provincias.append(p.nombre) worksheet_data.write_column(1, 0, arr_provincias, formato2) cantidad_provincias = arr_provincias.__len__() indice_total = cantidad_provincias + 1 worksheet_data.write(indice_total, 0, "Total", formato) licenciados_sma = LicenciadosSMA.objects.filter(activo=True) egresados_ep = EgresadosEstablecimientosPenitenciarios.objects.filter( fuente_procedencia_id=2, activo=True) sancionados = EgresadosEstablecimientosPenitenciarios.objects.filter( fuente_procedencia_id=3, activo=True) desvinculados = Desvinculado.objects.filter(activo=True) tecnicos_medio = TMedioOCalificadoEOficio.objects.filter( fuente_procedencia_id=6, activo=True) obreros_calificados = TMedioOCalificadoEOficio.objects.filter( fuente_procedencia_id=7, activo=True) escuelas_oficio = TMedioOCalificadoEOficio.objects.filter( fuente_procedencia_id=8, activo=True) egresados_escuelas_especiales = EgresadosEscuelasEspeciales.objects.filter( activo=True) egresados_escuelas_conducta = EgresadosEscuelasConducta.objects.filter( activo=True) egresados_efi = EgresadosEFI.objects.filter(activo=True) menores_incapacitados = Menores.objects.filter(fuente_procedencia_id=12, activo=True) menores_desvinculados = Menores.objects.filter(fuente_procedencia_id=13, activo=True) menores_dictamen = Menores.objects.filter(fuente_procedencia_id=14, activo=True) discapacitados = Discapacitados.objects.filter(activo=True) mujeres_riesgo_pnr = PersonasRiesgo.objects.filter( fuente_procedencia_id=17, activo=True) hombres_riesgo_pnr = PersonasRiesgo.objects.filter( fuente_procedencia_id=18, activo=True) proxenetas = PersonasRiesgo.objects.filter(fuente_procedencia_id=19, activo=True) total_controlados_provincia = [] total_mujeres_controladas_provincia = [] total_jovenes_controlados_provincia = [] total_ubicados_provincia = [] total_mujeres_ubicadas_provincia = [] total_jovenes_ubicados_provincia = [] total_egresados_ep_provincias = [] total_sancionados_provincias = [] total_desvinculados_provincias = [] total_tecnicos_medio_provincias = [] total_obreros_calificados_provincias = [] total_escuela_oficio_provincias = [] total_egresados_esc_especiales_provincias = [] total_egresados_esc_conducta_provincias = [] total_egresados_efi_provincias = [] total_menores_incapacitados_provincias = [] total_menores_desvinculados_provincias = [] total_menores_dictamen_provincias = [] total_discapacitados_provincias = [] total_mueres_riesgo_pnr_provincias = [] total_hombres_riesgo_pnr_provincias = [] total_proxenetas_riesgo_pnr_provincias = [] cero = [] for provincia in provincias: cero.append(0) # CONTROLADOS licenciados_sma_controlados = licenciados_sma.filter( municipio_residencia__provincia=provincia).count() egresados_ep_controlados = egresados_ep.filter( municipio_solicita_empleo__provincia=provincia).count() sancionados_controlados = sancionados.filter( municipio_solicita_empleo__provincia=provincia).count() desvinculados_controlados = desvinculados.filter( municipio_solicita_empleo__provincia=provincia).count() tecnicos_medio_controlados = tecnicos_medio.filter( municipio_solicita_empleo__provincia=provincia).count() obreros_calificados_controlados = obreros_calificados.filter( municipio_solicita_empleo__provincia=provincia).count() escuelas_oficio_controlados = escuelas_oficio.filter( municipio_solicita_empleo__provincia=provincia).count() egresados_escuelas_especiales_controlados = egresados_escuelas_especiales.filter( municipio_solicita_empleo__provincia=provincia).count() egresados_escuelas_conducta_controlados = egresados_escuelas_conducta.filter( municipio_solicita_empleo__provincia=provincia).count() egresados_efi_controlados = egresados_efi.filter( municipio_solicita_empleo__provincia=provincia).count() menores_incapacitados_controlados = menores_incapacitados.filter( municipio_solicita_empleo__provincia=provincia).count() menores_desvinculados_controlados = menores_desvinculados.filter( municipio_solicita_empleo__provincia=provincia).count() menores_dictamen_controlados = menores_dictamen.filter( municipio_solicita_empleo__provincia=provincia).count() discapacitados_controlados = discapacitados.filter( municipio_solicita_empleo__provincia=provincia).count() mujeres_riesgo_pnr_controlados = mujeres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia).count() hombres_riesgo_pnr_controlados = hombres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia).count() proxenetas_controlados = proxenetas.filter( municipio_solicita_empleo__provincia=provincia).count() total = (licenciados_sma_controlados + egresados_ep_controlados + sancionados_controlados + desvinculados_controlados + tecnicos_medio_controlados + obreros_calificados_controlados + escuelas_oficio_controlados + egresados_escuelas_especiales_controlados + egresados_escuelas_conducta_controlados + egresados_efi_controlados + menores_incapacitados_controlados + menores_desvinculados_controlados + menores_dictamen_controlados + discapacitados_controlados + mujeres_riesgo_pnr_controlados + hombres_riesgo_pnr_controlados + proxenetas_controlados) total_controlados_provincia.append(total) # MUJERES CONTROLADAS licenciados_sma_controlados = licenciados_sma.filter( municipio_residencia__provincia=provincia, sexo='F').count() egresados_ep_controlados = egresados_ep.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() sancionados_controlados = sancionados.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() desvinculados_controlados = desvinculados.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() tecnicos_medio_controlados = tecnicos_medio.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() obreros_calificados_controlados = obreros_calificados.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() escuelas_oficio_controlados = escuelas_oficio.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() egresados_escuelas_especiales_controlados = egresados_escuelas_especiales.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() egresados_escuelas_conducta_controlados = egresados_escuelas_conducta.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() egresados_efi_controlados = egresados_efi.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() menores_incapacitados_controlados = menores_incapacitados.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() menores_desvinculados_controlados = menores_desvinculados.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() menores_dictamen_controlados = menores_dictamen.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() discapacitados_controlados = discapacitados.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() mujeres_riesgo_pnr_controlados = mujeres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() hombres_riesgo_pnr_controlados = hombres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() proxenetas_controlados = proxenetas.filter( municipio_solicita_empleo__provincia=provincia, sexo='F').count() total = (licenciados_sma_controlados + egresados_ep_controlados + sancionados_controlados + desvinculados_controlados + tecnicos_medio_controlados + obreros_calificados_controlados + escuelas_oficio_controlados + egresados_escuelas_especiales_controlados + egresados_escuelas_conducta_controlados + egresados_efi_controlados + menores_incapacitados_controlados + menores_desvinculados_controlados + menores_dictamen_controlados + discapacitados_controlados + mujeres_riesgo_pnr_controlados + hombres_riesgo_pnr_controlados + proxenetas_controlados) total_mujeres_controladas_provincia.append(total) # JOVENES CONTROLADOS licenciados_sma_controlados = licenciados_sma.filter( municipio_residencia__provincia=provincia, edad__lte=35).count() egresados_ep_controlados = egresados_ep.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() sancionados_controlados = sancionados.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() desvinculados_controlados = desvinculados.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() tecnicos_medio_controlados = tecnicos_medio.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() obreros_calificados_controlados = obreros_calificados.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() escuelas_oficio_controlados = escuelas_oficio.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() egresados_escuelas_especiales_controlados = egresados_escuelas_especiales.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() egresados_escuelas_conducta_controlados = egresados_escuelas_conducta.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() egresados_efi_controlados = egresados_efi.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() menores_incapacitados_controlados = menores_incapacitados.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() menores_desvinculados_controlados = menores_desvinculados.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() menores_dictamen_controlados = menores_dictamen.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() discapacitados_controlados = discapacitados.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() mujeres_riesgo_pnr_controlados = mujeres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() hombres_riesgo_pnr_controlados = hombres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() proxenetas_controlados = proxenetas.filter( municipio_solicita_empleo__provincia=provincia, edad__lte=35).count() total = (licenciados_sma_controlados + egresados_ep_controlados + sancionados_controlados + desvinculados_controlados + tecnicos_medio_controlados + obreros_calificados_controlados + escuelas_oficio_controlados + egresados_escuelas_especiales_controlados + egresados_escuelas_conducta_controlados + egresados_efi_controlados + menores_incapacitados_controlados + menores_desvinculados_controlados + menores_dictamen_controlados + discapacitados_controlados + mujeres_riesgo_pnr_controlados + hombres_riesgo_pnr_controlados + proxenetas_controlados) total_jovenes_controlados_provincia.append(total) # NO UBICADOS egresados_ep_controlados = egresados_ep.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() sancionados_controlados = sancionados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() desvinculados_controlados = desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() tecnicos_medio_controlados = tecnicos_medio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() obreros_calificados_controlados = obreros_calificados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() escuelas_oficio_controlados = escuelas_oficio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() egresados_escuelas_especiales_controlados = egresados_escuelas_especiales.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() egresados_escuelas_conducta_controlados = egresados_escuelas_conducta.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() egresados_efi_controlados = egresados_efi.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() menores_incapacitados_controlados = menores_incapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() menores_desvinculados_controlados = menores_desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() menores_dictamen_controlados = menores_dictamen.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() discapacitados_controlados = discapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() mujeres_riesgo_pnr_controlados = mujeres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() hombres_riesgo_pnr_controlados = hombres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() proxenetas_controlados = proxenetas.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count() total = ( egresados_ep_controlados + sancionados_controlados + desvinculados_controlados + tecnicos_medio_controlados + obreros_calificados_controlados + escuelas_oficio_controlados + egresados_escuelas_especiales_controlados + egresados_escuelas_conducta_controlados + egresados_efi_controlados + menores_incapacitados_controlados + menores_desvinculados_controlados + menores_dictamen_controlados + discapacitados_controlados + mujeres_riesgo_pnr_controlados + hombres_riesgo_pnr_controlados + proxenetas_controlados) total_ubicados_provincia.append(total) # MUJERES NO UBICADAS egresados_ep_controlados = egresados_ep.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() sancionados_controlados = sancionados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() desvinculados_controlados = desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() tecnicos_medio_controlados = tecnicos_medio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() obreros_calificados_controlados = obreros_calificados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() escuelas_oficio_controlados = escuelas_oficio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() egresados_escuelas_especiales_controlados = egresados_escuelas_especiales.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() egresados_escuelas_conducta_controlados = egresados_escuelas_conducta.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() egresados_efi_controlados = egresados_efi.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() menores_incapacitados_controlados = menores_incapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() menores_desvinculados_controlados = menores_desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() menores_dictamen_controlados = menores_dictamen.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() discapacitados_controlados = discapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() mujeres_riesgo_pnr_controlados = mujeres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() hombres_riesgo_pnr_controlados = hombres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() proxenetas_controlados = proxenetas.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, sexo='F').count() total = ( egresados_ep_controlados + sancionados_controlados + desvinculados_controlados + tecnicos_medio_controlados + obreros_calificados_controlados + escuelas_oficio_controlados + egresados_escuelas_especiales_controlados + egresados_escuelas_conducta_controlados + egresados_efi_controlados + menores_incapacitados_controlados + menores_desvinculados_controlados + menores_dictamen_controlados + discapacitados_controlados + mujeres_riesgo_pnr_controlados + hombres_riesgo_pnr_controlados + proxenetas_controlados) total_mujeres_ubicadas_provincia.append(total) # JOVENES NO UBICADOS egresados_ep_controlados = egresados_ep.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() sancionados_controlados = sancionados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() desvinculados_controlados = desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() tecnicos_medio_controlados = tecnicos_medio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() obreros_calificados_controlados = obreros_calificados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() escuelas_oficio_controlados = escuelas_oficio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() egresados_escuelas_especiales_controlados = egresados_escuelas_especiales.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() egresados_escuelas_conducta_controlados = egresados_escuelas_conducta.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() egresados_efi_controlados = egresados_efi.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() menores_incapacitados_controlados = menores_incapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() menores_desvinculados_controlados = menores_desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() menores_dictamen_controlados = menores_dictamen.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() discapacitados_controlados = discapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() mujeres_riesgo_pnr_controlados = mujeres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() hombres_riesgo_pnr_controlados = hombres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() proxenetas_controlados = proxenetas.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False, edad__lte=35).count() total = ( egresados_ep_controlados + sancionados_controlados + desvinculados_controlados + tecnicos_medio_controlados + obreros_calificados_controlados + escuelas_oficio_controlados + egresados_escuelas_especiales_controlados + egresados_escuelas_conducta_controlados + egresados_efi_controlados + menores_incapacitados_controlados + menores_desvinculados_controlados + menores_dictamen_controlados + discapacitados_controlados + mujeres_riesgo_pnr_controlados + hombres_riesgo_pnr_controlados + proxenetas_controlados) total_jovenes_ubicados_provincia.append(total) # NO UBICADOS: Egresados de establecimientos penitenciarios total_egresados_ep_provincias.append( egresados_ep.filter(municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: SANCIONADOS total_sancionados_provincias.append( sancionados.filter(municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: DESVINCULADOS total_desvinculados_provincias.append( desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Tecnicos medios total_tecnicos_medio_provincias.append( tecnicos_medio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Egresados obreros calificados total_obreros_calificados_provincias.append( obreros_calificados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Egresados escuelas de oficio total_escuela_oficio_provincias.append( escuelas_oficio.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Egresados de escuelas especiales total_egresados_esc_especiales_provincias.append( egresados_escuelas_especiales.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Egresados de escuelas de conducta total_egresados_esc_conducta_provincias.append( egresados_escuelas_conducta.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Egresados de la EFI total_egresados_efi_provincias.append( egresados_efi.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Menores incapacitados para el estudio por dictamen médico total_menores_incapacitados_provincias.append( menores_incapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Menores desvinculados del SNE por bajo rendimiento total_menores_desvinculados_provincias.append( menores_desvinculados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Menores con dictamen del CDO-MININT total_menores_dictamen_provincias.append( menores_dictamen.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # NO UBICADOS: Personas con discapacidad total_discapacitados_provincias.append( discapacitados.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # UBICADOS: Mujeres de riesgo controladas por al PNR total_mueres_riesgo_pnr_provincias.append( mujeres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # UBICADOS: Hombres de riesgo controlados por al PNR total_hombres_riesgo_pnr_provincias.append( hombres_riesgo_pnr.filter( municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) # UBICADOS: Proxenetas de riesgo controlados por la PNR total_proxenetas_riesgo_pnr_provincias.append( proxenetas.filter(municipio_solicita_empleo__provincia=provincia, ubicado=False).count()) worksheet_data.write_column(1, 1, total_controlados_provincia, formato2) worksheet_data.write_column(1, 2, total_mujeres_controladas_provincia, formato2) worksheet_data.write_column(1, 3, total_jovenes_controlados_provincia, formato2) worksheet_data.write_column(1, 4, total_ubicados_provincia, formato2) worksheet_data.write_column(1, 5, total_mujeres_ubicadas_provincia, formato2) worksheet_data.write_column(1, 6, total_jovenes_ubicados_provincia, formato2) worksheet_data.write_column(1, 7, cero, formato2) # NO UBICADOS: LICENCIADOS DEL SMA worksheet_data.write_column(1, 8, total_egresados_ep_provincias, formato2) worksheet_data.write_column(1, 9, total_sancionados_provincias, formato2) worksheet_data.write_column(1, 10, total_desvinculados_provincias, formato2) worksheet_data.write_column(1, 11, cero, formato2) # UBICADOS: Egresados Universitarios worksheet_data.write_column(1, 12, total_tecnicos_medio_provincias, formato2) worksheet_data.write_column(1, 13, total_obreros_calificados_provincias, formato2) worksheet_data.write_column(1, 14, total_escuela_oficio_provincias, formato2) worksheet_data.write_column(1, 15, total_egresados_esc_especiales_provincias, formato2) worksheet_data.write_column(1, 16, total_egresados_esc_conducta_provincias, formato2) worksheet_data.write_column(1, 17, total_egresados_efi_provincias, formato2) worksheet_data.write_column(1, 18, total_menores_incapacitados_provincias, formato2) worksheet_data.write_column(1, 19, total_menores_desvinculados_provincias, formato2) worksheet_data.write_column(1, 20, total_menores_dictamen_provincias, formato2) worksheet_data.write_column(1, 21, total_discapacitados_provincias, formato2) worksheet_data.write_column(1, 22, total_mueres_riesgo_pnr_provincias, formato2) worksheet_data.write_column(1, 23, total_hombres_riesgo_pnr_provincias, formato2) worksheet_data.write_column(1, 24, total_proxenetas_riesgo_pnr_provincias, formato2) # ------------ SUMAS ABAJO------------------- sumas = [] for a in range(1, 25): total = '=SUM(%s)' % xl_range(1, a, cantidad_provincias, a) sumas.append(total) indice_sumas = 1 for suma in sumas: worksheet_data.write(17, indice_sumas, suma, formato2) indice_sumas = indice_sumas + 1 # ------------ SUMAS ARRIBA------------------- sumas2 = [] inicio = 7 cant = cantidad_provincias + 1 posicion1 = cantidad_fuentes + inicio - 1 for i in range(1, cant): total2 = '=SUM(%s)' % xl_range(i, inicio, i, posicion1) sumas2.append(total2) indice_sumas = 1 posicion2 = inicio + cantidad_fuentes for suma in sumas2: worksheet_data.write(indice_sumas, posicion2, suma, formato2) indice_sumas = indice_sumas + 1 book.close() elapsed_time = time.time() - start_time print("Tiempo transcurrido: %.10f segundos." % elapsed_time) # print("Tiempo transcurrido: % segundos." % elapsed_time) return response