def build_tabla_contenido(dic_material, lineas_ensayo, dic_peticion): """ Devuelve una lista de párrafos y líneas horizontales con las cuatro filas de material, ensayos, observaciones y persona que recogió el pedido. Extrae los datos que necesita de los diccionarios recibidos. """ linea = LineaHorizontal(ANCHO)# - MARGEN_IZQUIERDO - MARGEN_IZQUIERDO - 1*cm) # Para que la última línea de "recibido" esté pegada al fondo de la página # hay que meter espacio en observaciones (dejando, de paso, espacio para # anotaciones a boli). Como la página se construye dinámicamente, tengo # que estimar el espacio que falta en función a la información escrita # hasta ahora. #restante = 2*cm # TODO: Empiezo con una estimación al azar. Ya afinaré o acabaré # metiendo la línea "Recibido" como pie de página igual que hice con # los totales de factura_multipag. #espacio = Spacer(ANCHO, restante) estilos["Normal"].leading = 8 estilos["Normal"].leftIndent = 10 estilos["BodyText"].leftIndent = 30 #estilos["Normal"].fontSize -= 2 material0 = Paragraph("<u>MATERIAL A ENSAYAR:</u>", estilos["Normal"]) material1 = Paragraph(escribe(dic_material["material"]), estilos["BodyText"]) #material = Table([[material0], [material1]], hAlign = enums.TA_LEFT, # colWidths = (ANCHO)) #material.setStyle(TableStyle([ # ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), # ('LINEABOVE', (0, 0), (-1, 0), 1, colors.black), # ('LINEBELOW', (0, 1), (-1, 1), 1, colors.black), # ])) ensayos0 = Paragraph("<u>ENSAYOS SOLICITADOS:</u>", estilos["Normal"]) ensayos1 = [] # Después se "aplanará" if not lineas_ensayo: lineas_ensayo = [""] # Que haya al menos un huequín que haga bonito. for ensayo in lineas_ensayo: ensayos1.append(Paragraph(escribe(ensayo), estilos["BodyText"])) observaciones0 = Paragraph("<u>OBSERVACIONES:</u>", estilos["Normal"]) observaciones1 = Paragraph(escribe(dic_peticion["observaciones"]), estilos["BodyText"]) recibido0 = Paragraph("Recibido por:", estilos["Normal"]) recibido1 = Paragraph(escribe(dic_peticion["recibido por"]), estilos["BodyText"]) res = [linea, Spacer(1, 0.05*cm), material0, material1, Spacer(1, 0.2*cm), linea, Spacer(1, 0.05*cm), ensayos0, ensayos1, Spacer(1, 0.2*cm), linea, Spacer(1, 0.05*cm), observaciones0, observaciones1] # , espacio, linea, recibido0, # recibido1, Spacer(1, 0.2*cm), linea] recibido = TablaFija(MARGEN_IZQUIERDO + 4*cm, 1*cm, [[recibido0], [recibido1]], hAlign = enums.TA_LEFT, colWidths = (ANCHO) ) recibido.setStyle(TableStyle([ ("VALIGN", (0, 0), (-1, -1), "MIDDLE"), ('LINEABOVE', (0, 0), (-1, 0), 1, colors.black), ('LINEBELOW', (0, 1), (-1, 1), 1, colors.black), ])) res.append(recibido) return res
def build_datos_cliente(dobra, dpedido): """ Escribe los datos de los diccionarios recibidos en una lista de párrafos. """ estilos["h4"].spaceAfter = 0 estilos["h4"].spaceBefore = 2 #estilos["h4"].fontSize -= 2 cliente = Paragraph(escribe("CLIENTE: {cliente}".format(**dobra)), estilos["h4"]) obra = Paragraph(escribe("OBRA: {obra}".format(**dobra)), estilos["h4"]) solicitante = Paragraph(escribe( "SOLICITANTE: {solicitante}".format(**dobra)), estilos["h4"]) contacto = Paragraph(escribe( "PERSONA DE CONTACTO: {persona de contacto}".format(**dobra)), estilos["h4"]) fecha = Paragraph("FECHA: {fecha recogida}".format(**dpedido), estilos["h4"]) res = [cliente, obra, solicitante, contacto, fecha] return res