fschwartzer commited on
Commit
c493438
·
verified ·
1 Parent(s): be500fb

Update src/app.py

Browse files
Files changed (1) hide show
  1. src/app.py +14 -54
src/app.py CHANGED
@@ -16,8 +16,6 @@ from docx.shared import Inches, Pt, Cm
16
  from docx.enum.text import WD_ALIGN_PARAGRAPH
17
  from io import BytesIO
18
  import os
19
- from datetime import date
20
-
21
 
22
  # =================================================================================
23
  # FUNÇÃO DE GERAÇÃO DE PDF (MODIFICADA PARA ACEITAR DADOS E RETORNAR BYTES)
@@ -170,8 +168,10 @@ def create_pdf_report(user_data):
170
  def create_docx_report(user_data):
171
  doc = Document()
172
 
173
- # --- Criar uma tabela de 1 linha e 3 colunas para o cabeçalho ---
174
- table = doc.add_table(rows=1, cols=3)
 
 
175
  table.autofit = False
176
  widths = [Inches(2), Inches(2), Inches(4)] # Ajustar larguras das colunas
177
  for i, width in enumerate(widths):
@@ -202,19 +202,18 @@ def create_docx_report(user_data):
202
  font.bold = True
203
  paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
204
 
205
- # --- Adicionar um parágrafo vazio para dar espaço após os logos e o cabeçalho ---
206
- doc.add_paragraph()
207
-
208
- # Número do processo (abaixo do cabeçalho)
209
- p_proc = doc.add_paragraph(f"PROCESSO {user_data.get('processo_numero','')}")
210
- p_proc.alignment = WD_ALIGN_PARAGRAPH.RIGHT
211
- run_proc = p_proc.runs[0]
212
  run_proc.font.size = Pt(10)
213
  run_proc.font.bold = True
 
214
 
215
- doc.add_paragraph() # espaço
 
216
 
217
- # --- Função auxiliar para criar tabelas simples ---
218
  def add_table_from_data(data, col_widths_cm=[4.5, 10]):
219
  table = doc.add_table(rows=0, cols=2)
220
  table.style = 'Table Grid'
@@ -239,9 +238,7 @@ def create_docx_report(user_data):
239
  doc.add_paragraph() # espaço depois da tabela
240
  return table
241
 
242
- from docx.shared import Cm # para centímetros
243
-
244
- # --- Conteúdo do relatório ---
245
 
246
  # Título principal centralizado
247
  title = doc.add_paragraph(f"INFORMAÇÃO TÉCNICA\nIT_{user_data.get('it_numero','')}")
@@ -257,44 +254,7 @@ def create_docx_report(user_data):
257
  ]
258
  add_table_from_data(solicitacao_data)
259
 
260
- # Imóvel objeto
261
- doc.add_heading("• IMÓVEL OBJETO", level=2)
262
- imovel_data = [
263
- ('Endereço - SMF:', user_data.get('endereco_smf','')),
264
- ('Bairro (Setor/Quarteirão) - SMF:', user_data.get('bairro_smf','')),
265
- ('Lote Fiscal / Inscrição - SMF:', user_data.get('lote_fiscal','')),
266
- ('Registro imóvel nº - SMF:', user_data.get('registro_imovel','')),
267
- ('Finalidade Imóvel - SMF:', user_data.get('finalidade_imovel','')),
268
- ('Área Territorial - SMF:', user_data.get('area_territorial','')),
269
- ('Área construída – SMF:', user_data.get('area_construida','')),
270
- ('Exercícios em análise:', user_data.get('exercicios_analise','')),
271
- ('Valores Venais Guias IPTU (Exercícios):', user_data.get('valores_venais',''))
272
- ]
273
- add_table_from_data(imovel_data)
274
-
275
- # Página 2 - Análise técnica preliminar
276
- doc.add_heading("• ANÁLISE TÉCNICA PRELIMINAR", level=2)
277
- analise_data = [
278
- ('Unidade responsável:', user_data.get('unidade_responsavel','')),
279
- ('Técnico responsável:', user_data.get('tecnico_responsavel','')),
280
- ('Método de Avaliação (ABNT NBR 14.653-2):', user_data.get('metodo_avaliacao',''))
281
- ]
282
- add_table_from_data(analise_data)
283
-
284
- # Conclusão técnica
285
- doc.add_heading("• CONCLUSÃO TÉCNICA", level=2)
286
- conclusao_data = [
287
- ('Características particularmente\ndesvalorizantes:', user_data.get('caracteristicas_desvalorizantes','')),
288
- ('Conclusão:', user_data.get('conclusao_preliminar',''))
289
- ]
290
- add_table_from_data(conclusao_data)
291
-
292
- # Textos longos
293
- doc.add_heading("1. CONSIDERAÇÕES INICIAIS", level=2)
294
- doc.add_paragraph(user_data.get('texto_consideracoes',''))
295
-
296
- doc.add_heading("2. ANÁLISE TÉCNICA PRELIMINAR", level=2)
297
- doc.add_paragraph(user_data.get('texto_analise',''))
298
 
299
  # Data final
300
  today = date.today()
 
16
  from docx.enum.text import WD_ALIGN_PARAGRAPH
17
  from io import BytesIO
18
  import os
 
 
19
 
20
  # =================================================================================
21
  # FUNÇÃO DE GERAÇÃO DE PDF (MODIFICADA PARA ACEITAR DADOS E RETORNAR BYTES)
 
168
  def create_docx_report(user_data):
169
  doc = Document()
170
 
171
+ # --- Adicionar o cabeçalho que se repetirá em cada página ---
172
+ section = doc.sections[0]
173
+ header = section.header
174
+ table = header.add_table(rows=1, cols=3)
175
  table.autofit = False
176
  widths = [Inches(2), Inches(2), Inches(4)] # Ajustar larguras das colunas
177
  for i, width in enumerate(widths):
 
202
  font.bold = True
203
  paragraph.alignment = WD_ALIGN_PARAGRAPH.RIGHT
204
 
205
+ # --- Número do processo no cabeçalho ---
206
+ cell_proc = table.cell(0, 2) # Número do processo na terceira coluna
207
+ paragraph_proc = cell_proc.paragraphs[0]
208
+ run_proc = paragraph_proc.add_run(f"PROCESSO {user_data.get('processo_numero', '')}")
 
 
 
209
  run_proc.font.size = Pt(10)
210
  run_proc.font.bold = True
211
+ paragraph_proc.alignment = WD_ALIGN_PARAGRAPH.RIGHT
212
 
213
+ # --- Adicionar um parágrafo vazio para dar espaço após os logos e o cabeçalho ---
214
+ doc.add_paragraph()
215
 
216
+ # Função auxiliar para criar tabelas simples
217
  def add_table_from_data(data, col_widths_cm=[4.5, 10]):
218
  table = doc.add_table(rows=0, cols=2)
219
  table.style = 'Table Grid'
 
238
  doc.add_paragraph() # espaço depois da tabela
239
  return table
240
 
241
+ # --- Continue com o resto do conteúdo do relatório ---
 
 
242
 
243
  # Título principal centralizado
244
  title = doc.add_paragraph(f"INFORMAÇÃO TÉCNICA\nIT_{user_data.get('it_numero','')}")
 
254
  ]
255
  add_table_from_data(solicitacao_data)
256
 
257
+ # Continue com as outras páginas conforme sua necessidade...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
 
259
  # Data final
260
  today = date.today()