histlearn commited on
Commit
c2fd37f
·
verified ·
1 Parent(s): f4e50d4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -9
app.py CHANGED
@@ -7,6 +7,7 @@ from fpdf import FPDF
7
  import tempfile
8
  import os
9
  import matplotlib
 
10
  matplotlib.use('Agg')
11
 
12
  def extrair_tabelas_pdf(pdf_path):
@@ -193,16 +194,26 @@ def processar_boletim(file):
193
  # Verificar se o arquivo é válido
194
  if file is None:
195
  return None, "Nenhum arquivo foi fornecido."
196
-
197
  # Criar diretório temporário
198
  temp_dir = tempfile.mkdtemp()
199
  print(f"Diretório temporário criado: {temp_dir}")
200
 
201
- # Salvar o PDF enviado
 
 
 
 
 
 
 
202
  temp_pdf = os.path.join(temp_dir, 'boletim.pdf')
203
- with open(temp_pdf, 'wb') as f:
204
- f.write(file.read())
205
- print(f"PDF salvo em: {temp_pdf}")
 
 
 
206
 
207
  # Extrair tabelas do PDF
208
  print("Iniciando extração das tabelas...")
@@ -211,7 +222,17 @@ def processar_boletim(file):
211
 
212
  # Verificar se o DataFrame foi criado corretamente
213
  if df is None or df.empty:
214
- raise ValueError("Não foi possível extrair dados do PDF.")
 
 
 
 
 
 
 
 
 
 
215
 
216
  # Processar notas
217
  colunas_notas = ['Nota B1', 'Nota B2', 'Nota B3', 'Nota B4']
@@ -231,9 +252,16 @@ def processar_boletim(file):
231
  pdf_path = gerar_relatorio_pdf(df, grafico1_path, grafico2_path)
232
  print("Relatório PDF gerado")
233
 
 
 
 
 
234
  # Ler PDF gerado
235
  with open(pdf_path, 'rb') as f:
236
  pdf_content = f.read()
 
 
 
237
 
238
  return pdf_content, "Relatório gerado com sucesso!"
239
 
@@ -245,9 +273,7 @@ def processar_boletim(file):
245
  # Limpar arquivos temporários
246
  if temp_dir and os.path.exists(temp_dir):
247
  try:
248
- for file in os.listdir(temp_dir):
249
- os.remove(os.path.join(temp_dir, file))
250
- os.rmdir(temp_dir)
251
  print("Arquivos temporários limpos")
252
  except Exception as e:
253
  print(f"Erro ao limpar arquivos temporários: {str(e)}")
 
7
  import tempfile
8
  import os
9
  import matplotlib
10
+ import shutil
11
  matplotlib.use('Agg')
12
 
13
  def extrair_tabelas_pdf(pdf_path):
 
194
  # Verificar se o arquivo é válido
195
  if file is None:
196
  return None, "Nenhum arquivo foi fornecido."
197
+
198
  # Criar diretório temporário
199
  temp_dir = tempfile.mkdtemp()
200
  print(f"Diretório temporário criado: {temp_dir}")
201
 
202
+ # Verificar se o arquivo tem conteúdo
203
+ if not hasattr(file, 'name') or not os.path.exists(file.name):
204
+ return None, "Arquivo inválido ou corrompido."
205
+
206
+ if os.path.getsize(file.name) == 0:
207
+ return None, "O arquivo está vazio."
208
+
209
+ # Copiar o arquivo para o diretório temporário
210
  temp_pdf = os.path.join(temp_dir, 'boletim.pdf')
211
+ shutil.copy2(file.name, temp_pdf)
212
+ print(f"PDF copiado para: {temp_pdf}")
213
+
214
+ # Verificar se a cópia foi bem sucedida
215
+ if not os.path.exists(temp_pdf) or os.path.getsize(temp_pdf) == 0:
216
+ return None, "Erro ao copiar o arquivo."
217
 
218
  # Extrair tabelas do PDF
219
  print("Iniciando extração das tabelas...")
 
222
 
223
  # Verificar se o DataFrame foi criado corretamente
224
  if df is None or df.empty:
225
+ return None, "Não foi possível extrair dados do PDF."
226
+
227
+ try:
228
+ # Renomear colunas
229
+ df.columns = ['Disciplina', 'Nota B1', 'Freq B1', '%Freq B1', 'AC B1',
230
+ 'Nota B2', 'Freq B2', '%Freq B2', 'AC B2',
231
+ 'Nota B3', 'Freq B3', '%Freq B3', 'AC B3',
232
+ 'Nota B4', 'Freq B4', '%Freq B4', 'AC B4',
233
+ 'CF', 'Nota Final', 'Freq Final', 'AC Final']
234
+ except:
235
+ return None, "O formato do PDF não corresponde ao esperado."
236
 
237
  # Processar notas
238
  colunas_notas = ['Nota B1', 'Nota B2', 'Nota B3', 'Nota B4']
 
252
  pdf_path = gerar_relatorio_pdf(df, grafico1_path, grafico2_path)
253
  print("Relatório PDF gerado")
254
 
255
+ # Verificar se o PDF foi gerado
256
+ if not os.path.exists(pdf_path) or os.path.getsize(pdf_path) == 0:
257
+ return None, "Erro ao gerar o relatório PDF."
258
+
259
  # Ler PDF gerado
260
  with open(pdf_path, 'rb') as f:
261
  pdf_content = f.read()
262
+
263
+ if not pdf_content:
264
+ return None, "O relatório PDF gerado está vazio."
265
 
266
  return pdf_content, "Relatório gerado com sucesso!"
267
 
 
273
  # Limpar arquivos temporários
274
  if temp_dir and os.path.exists(temp_dir):
275
  try:
276
+ shutil.rmtree(temp_dir)
 
 
277
  print("Arquivos temporários limpos")
278
  except Exception as e:
279
  print(f"Erro ao limpar arquivos temporários: {str(e)}")