diff --git a/sapl/utils_template.py b/sapl/utils_template.py index 37e63b3fd..49d60486b 100644 --- a/sapl/utils_template.py +++ b/sapl/utils_template.py @@ -51,38 +51,48 @@ def criar_documento_com_template(tipo_conteudo, tipo_especifico, dados): logger.error(f"Erro ao carregar template {template.pk}: {e}") return None - # Limpa o corpo do documento mantendo cabeçalho e rodapé - # Remove todos os parágrafos existentes - for paragraph in doc.paragraphs: - p = paragraph._element - p.getparent().remove(p) - - # Remove todas as tabelas existentes - for table in doc.tables: - t = table._element - t.getparent().remove(t) - - # Adiciona o conteúdo inicial do novo documento + # Substitui placeholders no corpo do documento + # Placeholders suportados: {titulo}, {ementa}, {descricao}, {tipo}, {data} titulo = dados.get('titulo', 'Documento') descricao = dados.get('descricao', '') tipo_display = dados.get('tipo_display', tipo_conteudo.title()) - # Adiciona título - doc.add_heading(titulo, level=0) + from datetime import date + data_atual = date.today().strftime('%d/%m/%Y') - # Adiciona informações do documento - if descricao: - if tipo_conteudo in ['proposicao', 'materia', 'norma']: - doc.add_paragraph(f'Ementa: {descricao}') - else: - doc.add_paragraph(f'Assunto: {descricao}') + placeholders = { + '{titulo}': titulo, + '{ementa}': descricao, + '{descricao}': descricao, + '{tipo}': tipo_display, + '{data}': data_atual, + } - doc.add_paragraph('') + # Substitui placeholders nos parágrafos + for paragraph in doc.paragraphs: + for placeholder, valor in placeholders.items(): + if placeholder in paragraph.text: + paragraph.text = paragraph.text.replace(placeholder, valor) - # Texto orientativo - doc.add_paragraph(f'Digite o texto do documento abaixo:') - doc.add_paragraph('') - doc.add_paragraph('') + # Substitui placeholders nas tabelas + for table in doc.tables: + for row in table.rows: + for cell in row.cells: + for paragraph in cell.paragraphs: + for placeholder, valor in placeholders.items(): + if placeholder in paragraph.text: + paragraph.text = paragraph.text.replace(placeholder, valor) + + # Substitui placeholders no cabeçalho e rodapé + for section in doc.sections: + for header_para in section.header.paragraphs: + for placeholder, valor in placeholders.items(): + if placeholder in header_para.text: + header_para.text = header_para.text.replace(placeholder, valor) + for footer_para in section.footer.paragraphs: + for placeholder, valor in placeholders.items(): + if placeholder in footer_para.text: + footer_para.text = footer_para.text.replace(placeholder, valor) # Salva em memória file_stream = BytesIO()