def grabarDetalleBD(datos_contrato, detalles): # comprueba si existe el estado de licitación. Si es así lee el Id, si no... lo crea try: id_estado = PceEstado.get(PceEstado.descripcion == detalles.estadoLic).id_estado except PceEstado.DoesNotExist: estado = PceEstado.create(descripcion=detalles.estadoLic) id_estado = estado.id_estado # comprueba si existe el procedimiento de licitación. Si es así lee el Id, si no... lo crea try: id_tipo_procedimiento = PceTipoProcedimiento.get( PceTipoProcedimiento.descripcion == detalles.procedimiento ).id_tipo_procedimiento except PceTipoProcedimiento.DoesNotExist: procedimiento = PceTipoProcedimiento.create(descripcion=detalles.procedimiento) id_tipo_procedimiento = procedimiento.id_tipo_procedimiento # actualiza documentos for docs in detalles.Documento.keys(): documento, created = PceDocumento.get_or_create( id_licitacion=datos_contrato.id_licitacion, tipo_documento=docs, defaults={"fecha": detalles.Documento[docs][0], "documento": detalles.Documento[docs][1]}, ) # actualiza registro q = PceExpediente.update( id_estado=id_estado, id_tipo_procedimiento=id_tipo_procedimiento, importe_adj=detalles.impadjudicacion, enlacelic=detalles.enlacelic, codigocpv=detalles.codigocpv, resultado=detalles.resultado, adjudicatario=detalles.adjudicatario, numlicitadores=detalles.numlicitadores, ).where(PceExpediente.id_licitacion == datos_contrato.id_licitacion) n = q.execute() return n