@ -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 ( )