# -*-coding: utf-8-*- from openpyxl import load_workbook from openpyxl.styles import Alignment, Font from openpyxl.styles.borders import Border, Side from openpyxl.styles import PatternFill from openpyxl import drawing from Generales import settings import win32com.client import os import string import xlsxwriter conn = settings.conectionDB_pymmsql() thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin')) titleFill = PatternFill(start_color='D9D9D9', end_color='D9D9D9', fill_type='solid') def pasajeRural(id): informacion = [] if len(id) == 20: cursor = conn.cursor() cursor.execute( "SELECT COSTO_EMP FROM TB_PEA_RURAL_EMP WHERE IDEMP = '{}'".format(
def Listado003ccppSeccion(ubigeos, WorkSpace, VW_DISTRITO, SEGM_R_RUTAS, SEGM_R_CCPPRUTAS, EscudoNacional, LogoInei): # CREADO ESTILOS DE TEXTO h1 = PS( name='Heading1', fontSize=7, leading=8 ) h3 = PS( name='Normal', fontSize=6.5, leading=10, alignment=TA_CENTER ) h4 = PS( name='Normal', fontSize=6.5, leading=10, alignment=TA_LEFT ) h5 = PS( name='Heading1', fontSize=7, leading=8, alignment=TA_RIGHT ) h_sub_tile = PS( name='Heading1', fontSize=10, leading=14, alignment=TA_CENTER ) h_sub_tile_2 = PS( name='Heading1', fontSize=11, leading=14, alignment=TA_CENTER ) for ubigeo in [x for x in arcpy.da.SearchCursor(VW_DISTRITO, ["UBIGEO", "DEPARTAMENTO", "PROVINCIA", "DISTRITO"], "UBIGEO = '{}'".format(ubigeos))]: departamento = ubigeo[1] coddep = ubigeo[0][0:2] provincia = ubigeo[2] codprov = ubigeo[0][2:4] distrito = ubigeo[3] coddist = ubigeo[0][4:6] conn = settings.conectionDB_pymmsql() cursorsql = conn.cursor() cursorsql.execute("DELETE FROM SEGM_R_SCR WHERE UBIGEO = '{}'".format(ubigeo[0])) # FLUJO NORMAL # cursorsql.execute("DELETE FROM SEGM_R_SCR WHERE UBIGEO = '{}' AND FLAG_NUEVO = 1".format(ubigeo[0])) # CON CCPP NUEVOS conn.commit() for seccion in list(set([x[0]for x in arcpy.da.SearchCursor(SEGM_R_RUTAS, ["IDSCR"], "UBIGEO = '{}' AND FLAG_NUEVO = 1".format(ubigeo[0]))])): scr = seccion[11:14] infoscr = [x[0] for x in arcpy.da.SearchCursor(SEGM_R_CCPPRUTAS, ["VIV_CCPP"], "IDSCR = '{}'".format(seccion))] ccppscr = len(infoscr) vivscr = sum(infoscr) # cursorsql.execute("INSERT INTO SEGM_R_SCR (UBIGEO, IDSCR, SCR, EST_IMP, FLAG_LEGAJO, VIV_SCR, CCPP_SCR) VALUES ('{}', '{}', '{}', '0', '0', {}, {})".format(ubigeo[0], seccion, scr, vivscr, ccppscr)) # FLUJO NORMAL cursorsql.execute("INSERT INTO SEGM_R_SCR (UBIGEO, IDSCR, SCR, EST_IMP, FLAG_LEGAJO, VIV_SCR, CCPP_SCR, FLAG_NUEVO) VALUES ('{}', '{}', '{}', '0', '0', {}, {}, '1')".format(ubigeo[0], seccion, scr, vivscr, ccppscr)) # CON CCPP NUEVOS conn.commit() # LISTA QUE CONTIENE LOS ELEMENTOS A GRAFICAR EN EL PDF Elementos = [] # AGREGANDO IMAGENES, TITULOS Y SUBTITULOS Titulo = Paragraph(u'CENSOS NACIONALES 2017: XII DE POBLACIÓN, VII DE VIVIENDA Y III DE COMUNIDADES INDÍGENAS', h_sub_tile) Titulo2 = Paragraph(u'III Censo de Comunidades Nativas y I Censo de Comunidades Campesinas', h_sub_tile) SubTitulo = Paragraph(u'<strong>LISTADO DE CENTROS POBLADOS DE LA SECCIÓN CENSAL RURAL</strong>', h_sub_tile_2) CabeceraPrincipal = [[Titulo, '', ''], [Image(EscudoNacional, width=50, height=50), Titulo2, Image(LogoInei, width=50, height=50)], ['', SubTitulo, '']] Tabla0 = Table(CabeceraPrincipal, colWidths=[2 * cm, 14 * cm, 2 * cm]) Tabla0.setStyle(TableStyle([ ('GRID', (0, 0), (-1, -1), 1, colors.white), ('SPAN', (0, 1), (0, 2)), ('SPAN', (2, 1), (2, 2)), ('SPAN', (0, 0), (2, 0)), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE') ])) Elementos.append(Tabla0) Elementos.append(Spacer(0,10)) # CREACION DE LAS TABLAS PARA LA ORGANIZACION DEL TEXTO # Se debe cargar la informacion en aquellos espacios donde se encuentra el texto 'R' Filas = [ ['', '', '', '', Paragraph('<b>Doc.CPV.03.78</b>', h5), '', ''], [Paragraph('<b>A. UBICACIÓN GEOGRÁFICA</b>', h1), '', '', '', Paragraph('<b>B. UBICACIÓN CENSAL</b>', h1), '', ''], [Paragraph('<b>DEPARTAMENTO</b>', h1), u'{}'.format(coddep), u'{}'.format(departamento), '', Paragraph(u'<b>SECCIÓN Nº</b>', h1), '{}'.format(scr), ''], [Paragraph('<b>PROVINCIA</b>', h1), u'{}'.format(codprov),u'{}'.format(provincia), '', '','', ''], [Paragraph('<b>DISTRITO</b>', h1), u'{}'.format(coddist), u'{}'.format(distrito),'', Paragraph('<b>C. TOTAL DE VIVIENDAS DE LA SECCIÓN.</b>', h1), '', '{}'.format(vivscr)], ['', '', '','', '',''] ] # Permite el ajuste del ancho de la tabla Tabla1 = Table(Filas, colWidths=[3.7 * cm, 1 * cm, 7.1 * cm, 0.3 * cm, 3.7 * cm, 1.5 * cm, 1.5 * cm]) # Se cargan los estilos, como bordes, alineaciones, fondos, etc Tabla1.setStyle(TableStyle([ ('FONTSIZE', (0, 0), (-1, -1), 7), ('TEXTCOLOR', (0, 0), (6, 0), colors.white), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (5, 2), (6, 2), 'CENTER'), ('ALIGN', (6, 4), (6, 5), 'CENTER'), ('ALIGN', (1, 2), (1, 4), 'CENTER'), ('GRID', (0, 1), (2, 4), 1, colors.black), ('GRID', (4, 4), (5, 5), 1, colors.black), ('GRID', (4, 1), (6, 2), 1, colors.black), ('GRID', (4, 4), (6, 5), 1, colors.black), ('SPAN', (0, 1), (2, 1)), ('SPAN', (4, 4), (5, 5)), ('SPAN', (6, 4), (6, 5)), ('SPAN', (4, 1), (6, 1)), ('SPAN', (5, 2), (6, 2)), ('SPAN', (4, 0), (6, 0)), ('BACKGROUND', (0, 1), (2, 1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (4, 1), (6, 1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (0, 2), (0, 4), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (4, 2), (4, 2), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (4, 4), (5, 5), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)) ])) # AGREGANDO LAS TABLAS A LA LISTA DE ELEMENTOS DEL PDF Elementos.append(Tabla1) Elementos.append(Spacer(0,10)) # AGREGANDO CABECERA N° 2 Filas2 = [ [Paragraph(e, h3) for e in [u"<strong>D. INFORMACIÓN DE CENTROS POBLADOS Y VIVIENDAS</strong>", "", "", "", "", ""]], [Paragraph(e, h3) for e in [u"<strong>AER Nº</strong>", "", u"<strong>CENTRO POBLADO</strong>", "", "", u"<strong>N° DE VIVIENDAS</strong>"]], [Paragraph(e, h3) for e in [u"<strong>INICIAL</strong>", u"<strong>FINAL</strong>", u"<strong>CÓDIGO</strong>", u"<strong>NOMBRE</strong>", u"<strong>CATEGORÍA</strong>", ""]], ] Tabla2 = Table(Filas2, colWidths = [1.3 * cm, 1.3 * cm, 1.7 * cm, 9 * cm, 3.5 * cm, 2 * cm], repeatRows=1) Tabla2.setStyle(TableStyle( [ ('GRID', (1, 1), (-2, -2), 1, colors.black), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('FONTSIZE', (0, 0), (-1, -1), 7), ('BACKGROUND', (0, 0), (-1, 0), colors.Color(220.0/255, 220.0/255, 220.0/255)), ('BACKGROUND', (0, 0), (-1, -1), colors.Color(220.0/255, 220.0/255, 220.0/255)), ('SPAN', (0, 0), (5, 0)), ('SPAN', (0, 1), (1, 1)), ('SPAN', (2, 1), (4, 1)), ('SPAN', (5, 1), (5, 2)), ('LINEBELOW', (0, 0), (-1, 0), 1, colors.black), ('BACKGROUND', (0, 0), (-1, 0), colors.Color(220.0/255, 220.0/255, 220.0/255)), ] )) Elementos.append(Tabla2) #CUERPO QUE CONTIENE LOS LA INFORMACION A MOSTRAR nrows = len([x[0] for x in arcpy.da.SearchCursor(SEGM_R_CCPPRUTAS, ["CODCCPP"], "IDSCR = '{}'".format(seccion))]) cursor = [x for x in arcpy.da.SearchCursor(SEGM_R_CCPPRUTAS, ["AER_INI", "AER_FIN", "CODCCPP", "NOMCCPP", "CAT_CCPP", "VIV_CCPP"] , "IDSCR = '{}'".format(seccion))] cursor.sort(key = lambda n:(n[0], n[2])) if nrows > 27: SeccionesRegistros = registros(nrows) SeccionesRegistros.append((0, 27)) SeccionesRegistros.sort(key = lambda n:n[0]) for rangos in SeccionesRegistros: for ccpp in cursor[rangos[0]:rangos[1]]: aeriniccpp = ccpp[0] aerfinccpp = ccpp[1] codccpp = ccpp[2] nomccpp = ccpp[3] categoriaccpp = ccpp[4] numviv = ccpp[5] Filas3 = [[u'{}'.format(aeriniccpp), u'{}'.format(aerfinccpp), u'{}'.format(codccpp), Paragraph(u'{}'.format(nomccpp), h4), Paragraph(u'{}'.format(categoriaccpp), h4), u'{}'.format(numviv)]] # Filas3 = [[u'{}'.format(contador), u'{}'.format(codccpp), Paragraph(u'{}'.format(nomccpp), h4), Paragraph(u'{}'.format(catccpp), h4), Paragraph(u'{}'.format(nomci), h4), Paragraph(u'{}'.format(tipoci), h4), u'{}'.format(vivccpp)]] RegistrosIngresados = Table(Filas3, colWidths = [1.3 * cm, 1.3 * cm, 1.7 * cm, 9 * cm, 3.5 * cm, 2 * cm], rowHeights=[0.7 * cm]) RegistrosIngresados.setStyle(TableStyle( [ ('GRID', (1, 1), (-2, -2), 1, colors.black), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('GRID', (0, 0), (-1, -1), 1, colors.black), ('FONTSIZE', (0, 0), (5, 0), 7), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (5, 0), (5, 0), 'CENTER'), ('ALIGN', (0, 0), (2, 0), 'CENTER'), ] )) Elementos.append(RegistrosIngresados) Elementos.append(PageBreak()) Elementos.append(Tabla2) del Elementos[-1] del Elementos[-1] else: for ccpp in cursor: aeriniccpp = ccpp[0] aerfinccpp = ccpp[1] codccpp = ccpp[2] nomccpp = ccpp[3] categoriaccpp = ccpp[4] numviv = ccpp[5] Filas3= [[u'{}'.format(aeriniccpp), u'{}'.format(aerfinccpp), u'{}'.format(codccpp), Paragraph(u'{}'.format(nomccpp), h4), Paragraph(u'{}'.format(categoriaccpp), h4), u'{}'.format(numviv)]] RegistrosIngresados = Table(Filas3, colWidths = [1.3 * cm, 1.3 * cm, 1.7 * cm, 9 * cm, 3.5 * cm, 2 * cm], rowHeights=[0.7 * cm]) RegistrosIngresados.setStyle(TableStyle([ ('GRID', (0, 0), (-1, -1), 1, colors.black), ('FONTSIZE', (0, 0), (5, 0), 7), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (5, 0), (5, 0), 'CENTER'), ('ALIGN', (0, 0), (2, 0), 'CENTER'),])) Elementos.append(RegistrosIngresados) # COMPROBAR SI TIENE CCP CON ESTADO -1 ccppFuera1 = ccppFuera(ubigeos) scr = [x[0] for x in ccppFuera1] if seccion in scr: infoccppFuera = ccppFueraVal(seccion) # AGREGANDO CABECERA N° 3 Filas4 = [[Paragraph(u"<strong>E. OBSERVACIONES:</strong>", h3)]] ObservacionesCabecera = Table(Filas4, colWidths=[19.8 * cm], style=[('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('BACKGROUND', (0, 0), (-1, -1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ]) Elementos.append(Spacer(0, 20)) Elementos.append(ObservacionesCabecera) # CUERPO QUE CONTIENE OBSERVACION REFERENTE A LOS CCPP CON ESTADO -1 if len(infoccppFuera) == 1: nota = u"EL CENTRO POBLADO {} NO FIGURA EN EL DOC.CPV.03.25 LISTADO DE CENTROS POBLADOS Y VIVIENDAS DEL ÁREA DE EMPADRONAMIENTO RURAL. ".format(infoccppFuera[0]) + "<br/>" + u"CONTROLE EL EMPADRONAMIENTO DE LAS VIVIENDAS Y PERSONAS DEL CENTRO POBLADO DE ACUERDO A LA PROGRAMACIÓN DE RUTAS ESTABLECIDA." # ACEPTA 302 CARACTERES Filas5 = [[Paragraph(u"<strong>{}</strong>".format(nota), h4)]] NotaEmpadronador = Table(Filas5, colWidths=[19.8 * cm], rowHeights=[1.5 * cm], style=[('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE')]) Elementos.append(NotaEmpadronador) elif len(infoccppFuera) >= 1: nota = u"LOS CENTROS POBLADOS {} NO FIGURAN EN EL DOC.CPV.03.25 LISTADO DE CENTROS POBLADOS Y VIVIENDAS DEL ÁREA DE EMPADRONAMIENTO RURAL.".format(', '.join(infoccppFuera)) + "<br/>" + u"CONTROLE EL EMPADONAMIENTO DE LAS VIVIENDAS Y PERSONAS DE LOS CENTROS POBLADOS DE ACUERDO A LA PROGRAMACIÓN DE RUTAS ESTABLECIDA." # ACEPTA 302 CARACTERES Filas5 = [[Paragraph(u"<strong>{}</strong>".format(nota), h4)]] NotaEmpadronador = Table(Filas5, colWidths=[19.8 * cm], rowHeights=[1.5 * cm], style=[('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE')]) Elementos.append(NotaEmpadronador) # SE DETERMINAN LAS CARACTERISTICAS DEL PDF (RUTA DE ALMACENAJE, TAMAÑO DE LA HOJA, ETC) PathPDFsec = r"{}\Rural\{}\{}.pdf".format(WorkSpace, ubigeo[0], seccion) print PathPDFsec pdfsec = SimpleDocTemplate(PathPDFsec, pagesize = A4, rightMargin=65, leftMargin=65, topMargin=0.5 *cm, bottomMargin=0.5 *cm,) # GENERACION DEL PDF FISICO pdfsec.build(Elementos) # IMPRESION DE FINALIZADO cursorsql.close() conn.close() finalizado = "Finalizado" return finalizado
def listado005ComunidadesIndigenas(ubigeos, WorkSpace, VW_DISTRITO, SEGM_R_CCPPRUTA, SEGM_R_EMP, SEGM_R_AER, EscudoNacional, LogoInei): settings.conectionDB_arcpy() # CREADO ESTILOS DE TEXTO h1 = PS(name='Heading1', fontSize=7, leading=8) h3 = PS(name='Normal', fontSize=6.5, leading=10, alignment=TA_CENTER) h4 = PS(name='Normal', fontSize=6.5, leading=10, alignment=TA_LEFT) h5 = PS(name='Heading1', fontSize=7, leading=8, alignment=TA_RIGHT) h_sub_tile = PS(name='Heading1', fontSize=10, leading=14, alignment=TA_CENTER) h_sub_tile_2 = PS(name='Heading1', fontSize=11, leading=14, alignment=TA_CENTER) for ubigeo in [ x for x in arcpy.da.SearchCursor(VW_DISTRITO, [ "UBIGEO", "DEPARTAMENTO", "PROVINCIA", "DISTRITO" ], "UBIGEO = '{}'".format(ubigeos)) ]: conexion = settings.conectionDB_pymmsql() cursor1 = conexion.cursor() cursor1.execute("EXEC ACTUALIZAR_CCPP_INDIGENAS '{}'".format( ubigeo[0])) conexion.commit() cursor = conexion.cursor() cursor.execute("EXEC USP_ACTUALIZA_COMIND '{}'".format(ubigeo[0])) conexion.commit() coddep = ubigeo[0][0:2] departamento = ubigeo[1] codprov = ubigeo[0][2:4] provincia = ubigeo[2] coddist = ubigeo[0][4:6] distrito = ubigeo[3] contadorci = 0 orderbyci = (None, 'ORDER BY OR_CCPP ASC') for ci in [ x for x in arcpy.da.SearchCursor( SEGM_R_CCPPRUTA, ["IDCCPP"], "UBIGEO = {} AND (COD_CC IS NOT NULL OR COD_CN IS NOT NULL OR NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL)" .format(ubigeo[0]), None, False, orderbyci) ]: contadorci = contadorci + 1 orci = str(contadorci).zfill(3) idci = "{}{}".format(ci[0], orci) cursor.execute( "UPDATE SEGM_R_CCPPRUTA SET OR_CI = '{}', IDCI = '{}' WHERE IDCCPP = '{}'" .format(orci, idci, ci[0])) conexion.commit() orderby = (None, 'ORDER BY EMP ASC') for emp in [ x for x in arcpy.da.SearchCursor( SEGM_R_EMP, ["IDSCR", "EMP", "IDRUTA"], "UBIGEO = '{}' AND FLAG_COMIND = 1".format( ubigeo[0]), None, False, orderby) ]: scr = emp[0][11:14] empadronador = emp[1] aersruta = list( set([ x[0] for x in arcpy.da.SearchCursor( SEGM_R_CCPPRUTA, ["IDAER"], "IDRUTA = '{}' AND (NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL) " .format(emp[2])) ])) for aer in aersruta: viviendas = sum([ x[0] for x in arcpy.da.SearchCursor( SEGM_R_CCPPRUTA, ["VIV_CCPP"], "IDRUTA = '{}' AND (NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL) AND IDAER = '{}'" .format(emp[2], aer)) ]) aerini = aer[6:9] aerfin = aer[9:12] # LISTA QUE CONTIENE LOS ELEMENTOS A GRAFICAR EN EL PDF Elementos = [] # AGREGANDO IMAGENES, TITULOS Y SUBTITULOS Titulo = Paragraph( u'CENSOS NACIONALES 2017: XII DE POBLACIÓN, VII DE VIVIENDA Y III DE COMUNIDADES INDÍGENAS', h_sub_tile) Titulo2 = Paragraph( u'III Censo de Comunidades Nativas y I Censo de Comunidades Campesinas', h_sub_tile) SubTitulo = Paragraph( u'<strong>LISTADO DE CENTROS POBLADOS DONDE SE REALIZA EL EMPADRONAMIENTO DEL CENSO A COMUNIDADES NATIVAS Y CAMPESINAS DEL ÁREA DE EMPADRONAMIENTO RURAL</strong>', h_sub_tile_2) CabeceraPrincipal = [[Titulo, '', ''], [ Image(EscudoNacional, width=50, height=50), Titulo2, Image(LogoInei, width=50, height=50) ], ['', SubTitulo, '']] Tabla0 = Table(CabeceraPrincipal, colWidths=[2 * cm, 14 * cm, 2 * cm]) Tabla0.setStyle( TableStyle([('GRID', (0, 0), (-1, -1), 1, colors.white), ('SPAN', (0, 1), (0, 2)), ('SPAN', (2, 1), (2, 2)), ('SPAN', (0, 0), (2, 0)), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE')])) Elementos.append(Tabla0) Elementos.append(Spacer(0, 10)) # CREACION DE LAS TABLAS PARA LA ORGANIZACION DEL TEXTO # Se debe cargar la informacion en aquellos espacios donde se encuentra el texto 'R' Filas = [[ '', '', '', '', '', Paragraph(u'<b>Doc.CPV.03.25B</b>', h5) ], [ Paragraph(u'<b>A. UBICACIÓN GEOGRÁFICA</b>', h1), '', '', '', Paragraph(u'<b>B. UBICACIÓN CENSAL</b>', h1), '' ], [ Paragraph(u'<b>DEPARTAMENTO</b>', h1), u'{}'.format(coddep), u'{}'.format(departamento), '', Paragraph(u'<b>SECCIÓN Nº</b>', h1), u'{}'.format(scr) ], [ Paragraph(u'<b>PROVINCIA</b>', h1), u'{}'.format(codprov), u'{}'.format(provincia), '', Paragraph(u'<b>A.E.R. Nº</b>', h1), u'DEL {} AL {}'.format(aerini, aerfin) ], [ Paragraph(u'<b>DISTRITO</b>', h1), u'{}'.format(coddist), u'{}'.format(distrito), '', Paragraph(u'<b>EMPADRONADOR N°</b>', h1), u'{}'.format(empadronador) ], [ '', '', '', '', Paragraph(u'<b>C. TOTAL DE VIVIENDAS</b>', h1), u'{}'.format(viviendas) ]] # Permite el ajuste del ancho de la tabla Tabla1 = Table(Filas, colWidths=[ 3.7 * cm, 1 * cm, 7.1 * cm, 0.3 * cm, 5 * cm, 2.7 * cm ]) # Se cargan los estilos, como bordes, alineaciones, fondos, etc Tabla1.setStyle( TableStyle([ ('TEXTCOLOR', (0, 0), (5, 0), colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (1, 2), (1, 4), 'CENTER'), ('ALIGN', (5, 2), (5, 5), 'CENTER'), ('ALIGN', (0, 1), (2, 1), 'CENTER'), ('ALIGN', (4, 1), (5, 1), 'CENTER'), ('FONTSIZE', (0, 0), (-1, -1), 7), ('GRID', (0, 1), (2, 4), 1, colors.black), ('GRID', (4, 1), (5, 5), 1, colors.black), ('SPAN', (0, 1), (2, 1)), ('SPAN', (4, 1), (5, 1)), ('BACKGROUND', (0, 1), (2, 1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (0, 2), (0, 4), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (4, 1), (5, 1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (4, 2), (4, 5), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)) ])) # AGREGANDO LAS TABLAS A LA LISTA DE ELEMENTOS DEL PDF Elementos.append(Tabla1) Elementos.append(Spacer(0, 10)) Filas2 = [ [ Paragraph(e, h3) for e in [ u"<strong>D. INFORMACIÓN DE LA COMUNIDAD NATIVA Y/O CAMPESINA</strong>", "", "", "", "", "", "" ] ], [ Paragraph(e, h3) for e in [ u"<strong>Nº</strong>", u"<strong>Centro Poblado</strong>", "", "", u"<strong>Nombre de la Comunidad</strong>", u"<strong>TIPO DE<br/>COMUNIDAD</strong>", u"<strong>N° de<br/>viviendas</strong>" ] ], [ Paragraph(e, h3) for e in [ "", u"<strong>Código</strong>", u"<strong>Nombre</strong>", u"<strong>Categoría</strong>", "", "", "" ] ], ] Tabla2 = Table(Filas2, colWidths=[ 0.8 * cm, 1.5 * cm, 5.7 * cm, 2 * cm, 5.7 * cm, 2.5 * cm, 1.6 * cm ]) Tabla2.setStyle( TableStyle([ ('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'CENTER'), ('BACKGROUND', (0, 0), (-1, -1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('SPAN', (0, 0), (6, 0)), ('SPAN', (0, 1), (0, 2)), ('SPAN', (1, 1), (3, 1)), ('SPAN', (4, 1), (4, 2)), ('SPAN', (5, 1), (5, 2)), ('SPAN', (6, 1), (6, 2)), ])) Elementos.append(Tabla2) contador = 0 for ci in [ x for x in arcpy.da.SearchCursor( SEGM_R_CCPPRUTA, [ "CODCCPP", "NOMCCPP", "CAT_CCPP", "NOM_CC", "NOM_CN", "VIV_CCPP" ], "IDAER = '{}' AND IDRUTA = '{}' AND (NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL)" .format(aer, emp[2])) ]: contador = contador + 1 codccpp = ci[0] nomccpp = ci[1] catccpp = ci[2] nomci = ci[4] if ci[3] is None else ci[3] # tipoci = 'NATIVA' if ci[3] is None else 'CAMPESINA' if (ci[3] is not None) and (ci[4] is not None): tipoci = 'NATIVA / CAMPESINA' elif (ci[3] is not None) and (ci[4] is None): tipoci = 'CAMPESINA' elif (ci[4] is not None) and (ci[3] is None): tipoci = 'NATIVA' vivccpp = ci[5] Filas3 = [[ u'{}'.format(contador), u'{}'.format(codccpp), Paragraph(u'{}'.format(nomccpp), h4), Paragraph(u'{}'.format(catccpp), h4), Paragraph(u'{}'.format(nomci), h4), Paragraph(u'{}'.format(tipoci), h4), u'{}'.format(vivccpp) ]] RegistrosIngresados = Table(Filas3, colWidths=[ 0.8 * cm, 1.5 * cm, 5.7 * cm, 2 * cm, 5.7 * cm, 2.5 * cm, 1.6 * cm ], rowHeights=[1 * cm]) RegistrosIngresados.setStyle( TableStyle([ ('GRID', (0, 0), (-1, -1), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 6.5), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (0, 0), (1, 0), 'CENTER'), ('ALIGN', (6, 0), (6, 0), 'CENTER'), ])) Elementos.append(RegistrosIngresados) Elementos.append(Spacer(0, 10)) Filas4 = [[ Paragraph(u"<strong>E. OBSERVACIONES:</strong>", h3) ]] Observaciones = Table( Filas4, colWidths=[19.8 * cm], style=[ ('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('BACKGROUND', (0, 0), (-1, -1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ]) Elementos.append(Observaciones) nota = u"<strong>{}</strong>".format( '.' * 909) # ACEPTA 302 CARACTERES Filas5 = [[Paragraph(u"<strong>{}</strong>".format(nota), h4)]] NotaEmpadronador = Table(Filas5, colWidths=[19.8 * cm], rowHeights=[1.5 * cm], style=[('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE')]) Elementos.append(NotaEmpadronador) num = ([ x[0] for x in arcpy.da.SearchCursor( SEGM_R_AER, ["AER_POS"], "IDAER = '{}'".format(aer)) ])[0] PathPDF = r"{}\Rural\{}\{}{}{}-CI.pdf".format( WorkSpace, ubigeo[0], emp[2], empadronador, num) print PathPDF pdf = SimpleDocTemplate( PathPDF, pagesize=A4, rightMargin=65, leftMargin=65, topMargin=0.5 * cm, bottomMargin=0.5 * cm, ) # GENERACION DEL PDF FISICO pdf.build(Elementos)
def SegmentacionRural(carpeta, DIST_FC_ORIG, Coneccion_SDE, ConexionGDB, SEGM_R_AER, SEGM_R_CCPP, SEGM_R_VIV, SEGM_R_AER_POST): conexion = settings.conectionDB_pymmsql() cursor = conexion.cursor() cursor.execute( "update CPV_SEGMENTACION_GDB.sde.TB_VIVIENDA_R set IDVIV = ubigeo + codccpp + right('000' + CAST(isnull (id_reg_or, 0) as varchar(4)), 4)" ) conexion.commit() cursor.execute( "update CPV_SEGMENTACION_GDB.sde.TB_CPV0301_VIVIENDA_R set IDVIV = ubigeo + codccpp + right('000' + CAST(isnull (id_reg_or, 0) as varchar(4)), 4)" ) conexion.commit() # SELECCION DE UBIGEOS A PROCESAR ubigeos_originales = [ x[0] for x in arcpy.da.SearchCursor(DIST_FC_ORIG, ["UBIGEO"]) ] ActualizarJefeHogar(ubigeos_originales, conexion) sql = Expresion(ubigeos_originales, "#", "UBIGEO") AER_FC_ORIG_mfl_0 = arcpy.MakeQueryLayer_management( Coneccion_SDE, 'AER_mfl', "SELECT * FROM CPV_SEGMENTACION_GDB.sde.TB_AER where {}".format(sql), 'UBIGEO;AER_INI;AER_FIN', 'POLYGON', '4326', arcpy.SpatialReference(4326)) CCPP_FC_ORIG_mfl_0 = arcpy.MakeQueryLayer_management( Coneccion_SDE, "CCPP_mfl", "SELECT * FROM CPV_SEGMENTACION_GDB.sde.TB_CCPP where {}".format(sql), 'LLAVE_CCPP', 'POINT', '4326', arcpy.SpatialReference(4326)) VIV_FC_ORIG_mfl_0 = arcpy.MakeQueryLayer_management( Coneccion_SDE, 'VIV_mfl', "SELECT * FROM VW_R_VIV where {}".format(sql), 'IDVIV', 'POINT', '4326', arcpy.SpatialReference(4326)) ubigeo_aer = list( set([ x[0] for x in arcpy.da.SearchCursor(AER_FC_ORIG_mfl_0, ["UBIGEO"]) ])) ubigeo_ccpp = list( set([ x[0] for x in arcpy.da.SearchCursor(CCPP_FC_ORIG_mfl_0, ["UBIGEO"]) ])) ubigeo_viv = list( set([ x[0] for x in arcpy.da.SearchCursor(VIV_FC_ORIG_mfl_0, ["UBIGEO"]) ])) longitudes = [[ubigeo_aer, len(ubigeo_aer)], [ubigeo_ccpp, len(ubigeo_ccpp)], [ubigeo_viv, len(ubigeo_viv)]] if 0 not in [x[1] for x in longitudes]: longitudes.sort(key=lambda minimo: minimo[1], reverse=False) for ubigeo in longitudes[0][0]: if ubigeo in longitudes[1][0] and ubigeo in longitudes[2][0]: continue else: (longitudes[0][0]).remove(ubigeo) UbigeosParaProcesar = longitudes[0][0] sql2 = Expresion(UbigeosParaProcesar, "#", "UBIGEO") print sql2 DIST_FC_ORIG_mfl = arcpy.MakeFeatureLayer_management( DIST_FC_ORIG, "distrito", sql2) AER_FC_ORIG_mfl = arcpy.MakeFeatureLayer_management( AER_FC_ORIG_mfl_0, "aer", sql2) CCPP_FC_ORIG_mfl = arcpy.MakeFeatureLayer_management( CCPP_FC_ORIG_mfl_0, "ccpp", sql2) VIV_FC_ORIG_mfl = arcpy.MakeFeatureLayer_management( VIV_FC_ORIG_mfl_0, "vivienda", sql2) # ------------------------------------------------------------------------------------------------------------------------ # ------------------------------------------------------------------------------------------------------------------------ DIST_FC_ORIG_copy = arcpy.CopyFeatures_management( DIST_FC_ORIG_mfl, carpeta + '\DistBD.shp') CCPP_FC_ORIG_copy = arcpy.CopyFeatures_management( CCPP_FC_ORIG_mfl, carpeta + '\CcppBD.shp') AER_FC_ORIG_copy = arcpy.CopyFeatures_management( AER_FC_ORIG_mfl, carpeta + '\\' + 'AersBD.shp') VIV_FC_ORIG_copy = arcpy.CopyFeatures_management( VIV_FC_ORIG_mfl, carpeta + '\\' + 'VivsBD.shp') # areaSecciones_copy = arcpy.CopyFeatures_management(areaSecciones, carpeta + '\\' + 'SeccBD.shp') #Asociando informacion a la GDB generada lista = Plantillas_TMP(carpeta) distritos = arcpy.Describe(lista[0]) areasempadronamiento = arcpy.Describe(lista[1]) centrospoblados = arcpy.Describe(lista[2]) viviendas = arcpy.Describe(lista[3]) #Declarando el espacio de trabajo arcpy.env.workspace = distritos.path arcpy.env.overwriteOutput = True arcpy.Append_management(DIST_FC_ORIG_copy, distritos.path + "\\" + distritos.name, "NO_TEST") arcpy.Append_management( AER_FC_ORIG_copy, areasempadronamiento.path + "\\" + areasempadronamiento.name, "NO_TEST") arcpy.Append_management( CCPP_FC_ORIG_copy, centrospoblados.path + "\\" + centrospoblados.name, "NO_TEST") arcpy.Append_management(VIV_FC_ORIG_copy, viviendas.path + "\\" + viviendas.name, "NO_TEST") # Rutas de feature class extraidas DIST_FC = distritos.path + "\\" + distritos.name AER_FC = areasempadronamiento.path + "\\" + areasempadronamiento.name CCPP_FC = centrospoblados.path + "\\" + centrospoblados.name VIV_FC = viviendas.path + "\\" + viviendas.name for ubigeo in UbigeosParaProcesar: print ubigeo # CCPPRutas = arcpy.MakeQueryLayer_management(Coneccion_SDE, 'CCPPRutas2', "SELECT * FROM SEGM_R_CCPPRUTA WHERE UBIGEO = '{}' AND FLAG_NUEVO = 1".format(ubigeo)) # FLUJO CON CCPP NUEVOS CCPPRutas = arcpy.MakeQueryLayer_management( Coneccion_SDE, 'CCPPRutas2', "SELECT * FROM SEGM_R_CCPPRUTA WHERE UBIGEO = '{}'".format( ubigeo)) # FLUJO NORMAL # Rutas = arcpy.MakeQueryLayer_management(Coneccion_SDE, 'Rutas', "SELECT * FROM SEGM_R_RUTA WHERE UBIGEO = '{}' AND FLAG_NUEVO = 1".format(ubigeo)) # FLUJO CON CCPP NUEVOS Rutas = arcpy.MakeQueryLayer_management( Coneccion_SDE, 'Rutas', "SELECT * FROM SEGM_R_RUTA WHERE UBIGEO = '{}'".format( ubigeo)) # FLUJO NORMAL correlativo = 0 with arcpy.da.UpdateCursor(AER_FC, [ "IDAER", "CCPP_AER", "VIV_AER", "AER_POS", "AER_INI", "AER_FIN" ], "UBIGEO = '{}'".format(ubigeo)) as cursorUC: for aer in cursorUC: infoRuta = [ ccpp[0] for ccpp in arcpy.da.SearchCursor( CCPPRutas, ["VIV_CCPP"], "IDAER = '{}'".format( aer[0])) ] aer[0] = ubigeo + aer[4] + aer[5] aer[1] = len(infoRuta) aer[2] = sum(infoRuta) aer[3] = (str(correlativo + 1)).zfill(2) correlativo = correlativo + 1 cursorUC.updateRow(aer) del cursorUC with arcpy.da.UpdateCursor( CCPP_FC, ["IDCCPP", "CODCCPP", "IDSCR", "IDRUTA"], "UBIGEO = '{}'".format(ubigeo)) as cursorUC: for ccpp in cursorUC: if ccpp[1] in [ codccpp[0] for codccpp in arcpy.da.SearchCursor( CCPPRutas, ["CODCCPP"], "UBIGEO = '{}'".format( ubigeo)) ]: idccpp = "{}{}".format(ubigeo, ccpp[1]) ccpp[0] = "{}".format(idccpp) ccpp[2] = ([ idscr[0] for idscr in arcpy.da.SearchCursor( CCPPRutas, ["IDSCR"], "IDCCPP = '{}'".format( idccpp)) ])[0] ccpp[3] = ([ idruta[0] for idruta in arcpy.da.SearchCursor( CCPPRutas, ["IDRUTA"], "IDCCPP = '{}'".format( idccpp)) ])[0] cursorUC.updateRow(ccpp) del cursorUC for ccpp in arcpy.da.SearchCursor( CCPPRutas, ["IDCCPP", "CODCCPP", "IDSCR", "IDAER", "IDRUTA", "OR_CCPP"]): with arcpy.da.UpdateCursor( VIV_FC, ["IDCCPP", "IDSCR", "IDAER", "IDRUTA", "OR_CCPP_DIST"], "UBIGEO = '{}' AND CODCCPP = '{}'".format( ubigeo, ccpp[1])) as cursorUC: for viv in cursorUC: viv[0] = ccpp[0] viv[1] = ccpp[2] viv[2] = ccpp[3] viv[3] = ccpp[4] viv[4] = ccpp[5] cursorUC.updateRow(viv) del cursorUC # print len(CCPPRutas) orderby = (None, 'ORDER BY {}, {} ASC'.format('OR_CCPP_DIST', 'ID_REG_OR')) for ccpp in arcpy.da.SearchCursor(CCPPRutas, ["IDCCPP"]): contador = 0 with arcpy.da.UpdateCursor( VIV_FC, [ "OR_VIV_RUTA" ], "IDCCPP = '{}' AND ([P29] = 1 OR [P29] = 3 OR ( [P29] = 6 AND ( [P29M] =1 OR [P29M] =3 )))" .format(ccpp[0]), None, False, orderby) as cursorUC: for row in cursorUC: row[0] = contador + 1 contador = contador + 1 cursorUC.updateRow(row) del cursorUC AER_tmp = arcpy.MakeFeatureLayer_management(SEGM_R_AER, "AER_tmp_1", sql2) CCPP_tmp = arcpy.MakeFeatureLayer_management(SEGM_R_CCPP, "CCPP_tmp_1", sql2) VIV_tmp = arcpy.MakeFeatureLayer_management(SEGM_R_VIV, "VIV_tmp_1", sql2) for eliminar in [AER_tmp, CCPP_tmp, VIV_tmp]: arcpy.DeleteRows_management(eliminar) arcpy.Append_management(AER_FC, SEGM_R_AER, "NO_TEST") arcpy.Append_management(CCPP_FC, SEGM_R_CCPP, "NO_TEST") arcpy.Append_management(VIV_FC, SEGM_R_VIV, "NO_TEST") with arcpy.da.UpdateCursor(SEGM_R_AER, [ 'EST_SEG', 'EST_CROQUIS', 'EST_CONT', 'CONT_RUR_ERROR_01', 'CONT_RUR_ERROR_02', 'CONT_RUR_ERROR_03', 'CONT_RUR_ERROR_04' ], sql2) as cursorUC: for x in cursorUC: x[0], x[1], x[2], x[3], x[4], x[5], x[6] = 4, 0, 0, 0, 0, 0, 0 cursorUC.updateRow(x) del cursorUC conexion = settings.conectionDB_pymmsql() cursor = conexion.cursor() for eliminar in UbigeosParaProcesar: cursor.execute( "DELETE FROM SEGM_R_AER_POST WHERE UBIGEO = '{}'".format( eliminar)) conexion.commit() TableAER = arcpy.TableToTable_conversion(SEGM_R_AER, 'in_memory', 'TableAER') sql3 = Expresion_DB(UbigeosParaProcesar, "#", "A.UBIGEO") arcpy.Append_management(TableAER, SEGM_R_AER_POST, "NO_TEST") SQL_ProcAlm_CCPP = """UPDATE A SET A.VIV_CCPP = B.VIV_CCPP, A.IDSCR = B.IDSCR, A.IDAER = B.IDAER, A.IDRUTA = B.IDRUTA FROM CPV_SEGMENTACION_GDB.sde.TB_CCPP A INNER JOIN CPV_SEGMENTACION_GDB.sde.SEGM_R_CCPP_TMP B ON A.LLAVE_CCPP COLLATE DATABASE_DEFAULT = B.IDCCPP COLLATE DATABASE_DEFAULT WHERE {}""".format( sql3) SQL_ProcAlm_VIV = """UPDATE A SET A.OR_CCPP_DIST = B.OR_CCPP_DIST, A.IDSCR = B.IDSCR, A.IDAER = B.IDAER, A.IDRUTA = B.IDRUTA, A.OR_VIV_RUTA = B.OR_VIV_RUTA from CPV_SEGMENTACION_GDB.sde.TB_VIVIENDA_R A INNER JOIN CPV_SEGMENTACION_GDB.sde.SEGM_R_VIV_TMP B ON A.IDVIV COLLATE DATABASE_DEFAULT = B.IDVIV COLLATE DATABASE_DEFAULT WHERE {}""".format( sql3) cursor.execute(SQL_ProcAlm_CCPP) conexion.commit() cursor.execute(SQL_ProcAlm_VIV) conexion.commit() cursor.close() conexion.close() return sql2
def listado006ComunidadesIndigenasDistrital(ubigeos, WorkSpace, VW_DISTRITO, SEGM_R_CCPPRUTA, CCPP_INDIGENAS, SEGM_R_EMP, SEGM_R_AER, EscudoNacional, LogoInei): settings.conectionDB_arcpy() # CREADO ESTILOS DE TEXTO h1 = PS( name='Heading1', fontSize=7, leading=8 ) h3 = PS( name='Normal', fontSize=6.5, leading=10, alignment=TA_CENTER ) h4 = PS( name='Normal', fontSize=6.5, leading=10, alignment=TA_LEFT ) h5 = PS( name='Heading1', fontSize=7, leading=8, alignment=TA_RIGHT ) h_sub_tile = PS( name='Heading1', fontSize=10, leading=14, alignment=TA_CENTER ) h_sub_tile_2 = PS( name='Heading1', fontSize=11, leading=14, alignment=TA_CENTER ) for ubigeo in [x for x in arcpy.da.SearchCursor(VW_DISTRITO, ["UBIGEO", "DEPARTAMENTO", "PROVINCIA", "DISTRITO"], "UBIGEO = '{}'".format(ubigeos))]: conexion = settings.conectionDB_pymmsql() cursor = conexion.cursor() cursor.execute("EXEC USP_ACTUALIZA_COMIND '{}'".format(ubigeo[0])) conexion.commit() coddep = ubigeo[0][0:2] departamento = ubigeo[1] codprov = ubigeo[0][2:4] provincia = ubigeo[2] coddist = ubigeo[0][4:6] distrito = ubigeo[3] contadorci = 0 orderbyci = (None, 'ORDER BY OR_CCPP ASC') for ci in [x for x in arcpy.da.SearchCursor(SEGM_R_CCPPRUTA, ["IDCCPP"], "UBIGEO = {} AND (COD_CC IS NOT NULL OR COD_CN IS NOT NULL OR NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL)".format(ubigeo[0]), None, False, orderbyci)]: contadorci = contadorci + 1 orci = str(contadorci).zfill(2) idci = "{}{}".format(ci[0], orci) cursor.execute("UPDATE SEGM_R_CCPPRUTA SET OR_CI = '{}', IDCI = '{}' WHERE IDCCPP = '{}'".format(orci, idci, ci[0])) conexion.commit() # Extraer Emp viviendas_r = sum([x[0] for x in arcpy.da.SearchCursor(SEGM_R_CCPPRUTA, ["VIV_CCPP"], "UBIGEO = '{}' AND (NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL)".format(ubigeos))]) viviendas_u = sum([x[0] for x in arcpy.da.SearchCursor(CCPP_INDIGENAS, ["AREA"], "UBIGEO = '{}' AND (NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL) AND AREA = '1'".format(ubigeos))]) viviendas_existentes = viviendas_r + viviendas_u viviendas = viviendas_r Elementos = [] # AGREGANDO IMAGENES, TITULOS Y SUBTITULOS Titulo = Paragraph(u'CENSOS NACIONALES 2017: XII DE POBLACIÓN, VII DE VIVIENDA Y III DE COMUNIDADES INDÍGENAS', h_sub_tile) Titulo2 = Paragraph(u'III Censo de Comunidades Nativas y I Censo de Comunidades Campesinas', h_sub_tile) SubTitulo = Paragraph(u'<strong>LISTADO DE CENTROS POBLADOS DONDE SE REALIZA EL EMPADRONAMIENTO DEL CENSO A COMUNIDADES NATIVAS Y CAMPESINAS DEL DISTRITO</strong>', h_sub_tile_2) CabeceraPrincipal = [[Titulo, '', ''], [Image(EscudoNacional, width=50, height=50), Titulo2, Image(LogoInei, width=50, height=50)], ['', SubTitulo, '']] Tabla0 = Table(CabeceraPrincipal, colWidths=[2 * cm, 14 * cm, 2 * cm]) Tabla0.setStyle(TableStyle([ ('GRID', (0, 0), (-1, -1), 1, colors.white), ('SPAN', (0, 1), (0, 2)), ('SPAN', (2, 1), (2, 2)), ('SPAN', (0, 0), (2, 0)), ('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE') ])) Elementos.append(Tabla0) Elementos.append(Spacer(0, 10)) # CREACION DE LAS TABLAS PARA LA ORGANIZACION DEL TEXTO # Se debe cargar la informacion en aquellos espacios donde se encuentra el texto 'R' Filas = [ ['', '', '', '', '', Paragraph(u'<b>Doc.CPV.03.25C</b>', h5)], [Paragraph(u'<b>A. UBICACIÓN GEOGRÁFICA</b>', h1), '', '', '', Paragraph(u'<b>B. TOTAL DE VIVIENDAS</b>', h1), u'{}'.format(viviendas)], [Paragraph(u'<b>DEPARTAMENTO</b>', h1), u'{}'.format(coddep), u'{}'.format(departamento), '', '', ''], [Paragraph(u'<b>PROVINCIA</b>', h1), u'{}'.format(codprov), u'{}'.format(provincia), '', '', ''], [Paragraph(u'<b>DISTRITO</b>', h1), u'{}'.format(coddist), u'{}'.format(distrito), '', '', ''], # ['', '', '', '', Paragraph(u'<b>C. TOTAL DE VIVIENDAS</b>', h1), u'{}'.format(viviendas)] ] # Permite el ajuste del ancho de la tabla Tabla1 = Table(Filas, colWidths=[3.7 * cm, 1 * cm, 7.1 * cm, 0.3 * cm, 5 * cm, 2.7 * cm]) Tabla1.setStyle(TableStyle([ ('TEXTCOLOR', (0, 0), (4, 0), colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (1, 2), (1, 4), 'CENTER'), ('ALIGN', (4, 2), (4, 4), 'CENTER'), ('ALIGN', (0, 1), (2, 1), 'CENTER'), ('ALIGN', (4, 1), (4, 1), 'CENTER'), ('ALIGN', (5, 1), (5, 1), 'CENTER'), ('FONTSIZE', (0, 0), (-1, -1), 7), ('GRID', (0, 1), (2, 4), 1, colors.black), ('GRID', (4, 1), (5, 1), 1, colors.black), ('SPAN', (0, 1), (2, 1)), ('SPAN', (4, 1), (4, 1)), ('BACKGROUND', (0, 1), (2, 1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (0, 2), (0, 4), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('BACKGROUND', (4, 1), (4, 1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)) # ('BACKGROUND', (4, 2), (4, 4), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ])) # AGREGANDO LAS TABLAS A LA LISTA DE ELEMENTOS DEL PDF Elementos.append(Tabla1) Elementos.append(Spacer(0, 10)) Filas2 = [ [Paragraph(e, h3) for e in [u"<strong>C. INFORMACIÓN DE LA COMUNIDAD NATIVA Y/O CAMPESINA</strong>", "", "", "", "", "", "", "", "", "", ""]], [Paragraph(e, h3) for e in [u"<strong>Nº</strong>", u"<strong>Centro Poblado</strong>", "", "", "", "", "", "", u"<strong>Nombre de la Comunidad</strong>", u"<strong>Tipo de<br/>Comunidad</strong>", u"<strong>N° de<br/>viviendas</strong>"]], [Paragraph(e, h3) for e in["", u"<strong>Área</strong>", u"<strong>Sección</strong>", u"<strong>Aer INI</strong>", u"<strong>Aer FIN</strong>", u"<strong>Código</strong>", u"<strong>Nombre</strong>", u"<strong>Categoría</strong>", "", "", ""]], ] Tabla2 = Table(Filas2, colWidths=[0.7 * cm, 1.5 * cm, 1.4 * cm, 1.1 * cm, 1.1 * cm, 1.3 * cm, 3.9 * cm, 1.6 * cm, 3.9 * cm, 1.8 * cm, 1.5 * cm]) Tabla2.setStyle(TableStyle([ ('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'CENTER'), ('BACKGROUND', (0, 0), (-1, -1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ('SPAN', (0, 0), (10, 0)), ('SPAN', (0, 1), (0, 2)), ('SPAN', (8, 1), (8, 2)), ('SPAN', (1, 1), (7, 1)), ('SPAN', (9, 1), (9, 2)), ('SPAN', (10, 1), (10, 2)) ])) Elementos.append(Tabla2) contador = 0 listaCC_Urbano = [x for x in arcpy.da.SearchCursor(CCPP_INDIGENAS, ["CODCCPP", "NOMCCPP", "CATEGORIA", "NOM_CC", "VIV_CCPP", "VIV_CCPP", "VIV_CCPP", "VIV_CCPP", "VIV_CCPP"], "UBIGEO = '{}' AND (NOM_CC IS NOT NULL) AND AREA = '1'".format(ubigeos))] listaCN_Urbano = [x for x in arcpy.da.SearchCursor(CCPP_INDIGENAS, ["CODCCPP", "NOMCCPP", "CATEGORIA", "VIV_CCPP", "NOM_CN", "VIV_CCPP", "VIV_CCPP", "VIV_CCPP", "VIV_CCPP"], "UBIGEO = '{}' AND (NOM_CN IS NOT NULL) AND AREA = '1'".format(ubigeos))] listaCCPPindigenasRural = [x for x in arcpy.da.SearchCursor(SEGM_R_CCPPRUTA, ["CODCCPP", "NOMCCPP", "CAT_CCPP", "NOM_CC", "NOM_CN", "VIV_CCPP", "SCR", "AER_INI", "AER_FIN"], "UBIGEO = '{}' AND (NOM_CC IS NOT NULL OR NOM_CN IS NOT NULL)".format(ubigeos))] listaCCPPindigenas = listaCC_Urbano + listaCN_Urbano + listaCCPPindigenasRural for ci in listaCCPPindigenas: contador = contador + 1 codccpp = ci[0] nomccpp = ci[1] catccpp = ci[2] if (ci[3] is not None) and (ci[4] is not None): nomci = ci[4] + ' / ' + ci[3] elif (ci[3] is not None) and (ci[4] is None): nomci = ci[3] elif (ci[4] is not None) and (ci[3] is None): nomci = ci[4] if (ci[3] is not None) and (ci[4] is not None): tipoci = 'NATIVA / CAMPESINA' elif (ci[3] is not None) and (ci[4] is None): tipoci = 'CAMPESINA' elif (ci[4] is not None) and (ci[3] is None): tipoci = 'NATIVA' # tipoci = 'NATIVA' if ci[3] is None else 'CAMPESINA' vivccpp = '' if ci[5] is None else ci[5] area = 'URBANO' if ci[6] is None else 'RURAL' seccion = '' if ci[6] is None else ci[6] aeriniccpp = '' if ci[7] is None else ci[7] aerfinccpp = '' if ci[8] is None else ci[8] Filas3 = [[u'{}'.format(contador), Paragraph(u'{}'.format(area), h4), u'{}'.format(seccion), u'{}'.format(aeriniccpp), u'{}'.format(aerfinccpp), u'{}'.format(codccpp), Paragraph(u'{}'.format(nomccpp), h4), Paragraph(u'{}'.format(catccpp), h4), Paragraph(u'{}'.format(nomci), h4), Paragraph(u'{}'.format(tipoci), h4), u'{}'.format(vivccpp)]] RegistrosIngresados = Table(Filas3, colWidths=[0.7 * cm, 1.5 * cm, 1.4 * cm, 1.1 * cm, 1.1 * cm, 1.3 * cm, 3.9 * cm, 1.6 * cm, 3.9 * cm, 1.8 * cm, 1.5 * cm], rowHeights=[1 * cm]) RegistrosIngresados.setStyle(TableStyle([ ('GRID', (0, 0), (-1, -1), 1, colors.black), ('FONTSIZE', (0, 0), (-1, -1), 6.5), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('ALIGN', (0, 0), (1, 0), 'CENTER'), ('ALIGN', (10, 0), (10, 0), 'CENTER'), ])) Elementos.append(RegistrosIngresados) Elementos.append(Spacer(0, 10)) Filas4 = [[Paragraph(u"<strong>D. OBSERVACIONES:</strong>", h3)]] Observaciones = Table(Filas4, colWidths=[19.8 * cm], style=[('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), ('BACKGROUND', (0, 0), (-1, -1), colors.Color(220.0 / 255, 220.0 / 255, 220.0 / 255)), ]) Elementos.append(Observaciones) nota = u"<strong>{}</strong>".format('.'*909) # ACEPTA 302 CARACTERES Filas5 = [[Paragraph(u"<strong>{}</strong>".format(nota), h4)]] NotaEmpadronador = Table(Filas5, colWidths=[19.8 * cm], rowHeights=[1.5 * cm], style=[('GRID', (0, 0), (-1, -1), 1, colors.black), ('VALIGN', (0, 0), (-1, -1), 'MIDDLE')]) Elementos.append(NotaEmpadronador) PathPDF = r"{}\Rural\{}\{}-CI.pdf".format(WorkSpace, ubigeo[0], ubigeo[0]) print PathPDF pdf = SimpleDocTemplate(PathPDF, pagesize=A4, rightMargin=65, leftMargin=65, topMargin=0.5 * cm, bottomMargin=0.5 * cm, ) # GENERACION DEL PDF FISICO if viviendas_existentes != 0: pdf.build(Elementos)