Persano commited on
Commit
089575f
·
verified ·
1 Parent(s): f33735d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -10
app.py CHANGED
@@ -1,5 +1,7 @@
1
  import os
2
 
 
 
3
  # Corrige problema fontconfig (necessário para WeasyPrint em alguns ambientes)
4
  os.environ['FONTCONFIG_PATH'] = '/tmp/fontconfig'
5
  os.makedirs('/tmp/fontconfig', exist_ok=True)
@@ -11,7 +13,6 @@ import io
11
  import base64
12
  from weasyprint import HTML
13
 
14
-
15
  app = Flask(__name__)
16
 
17
  def gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, renda_fixa, anos=10, inflacao=4.5):
@@ -28,7 +29,6 @@ def gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, r
28
  renda_valor = cap_renda
29
  franquia_valor = cap_franquia
30
  else:
31
- # Renda de aluguel anual (studio_ret é mensal)
32
  renda_aluguel = cap_studio * (studio_ret / 100) * 12
33
  cap_studio += renda_aluguel
34
  cap_studio *= (1 + valorizacao / 100)
@@ -38,7 +38,6 @@ def gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, r
38
  cap_acoes *= (1 + acoes_ret / 100)
39
  cap_renda *= (1 + renda_fixa / 100)
40
 
41
- # Ajusta pela inflação anual
42
  cap_studio /= (1 + inflacao / 100)
43
  cap_acoes /= (1 + inflacao / 100)
44
  cap_renda /= (1 + inflacao / 100)
@@ -85,6 +84,8 @@ def plotar_grafico(df):
85
  def index():
86
  grafico = None
87
  df = None
 
 
88
  if request.method == 'POST':
89
  try:
90
  capital = float(request.form['capital'])
@@ -100,10 +101,11 @@ def index():
100
 
101
  return render_template('index.html', grafico=grafico, tabela=df.to_html(classes="table table-striped table-hover", index=False),
102
  capital=capital, studio_ret=studio_ret, valorizacao=valorizacao, franquia_ret=franquia_ret,
103
- acoes_ret=acoes_ret, renda_fixa=renda_fixa, inflacao=inflacao)
 
104
  except Exception as e:
105
  return f"Erro: {e}"
106
- return render_template('index.html')
107
 
108
  @app.route('/download_excel', methods=['POST'])
109
  def download_excel():
@@ -143,12 +145,11 @@ def download_pdf():
143
  df = gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, renda_fixa, inflacao=inflacao)
144
  grafico = plotar_grafico(df)
145
 
146
- # Calcula o investimento mais valorizado para o destaque do relatório
147
- valores_finais = df.iloc[-1, 1:] # pega a última linha, exceto a coluna 'Ano'
148
  investimento_mais_valorizado = valores_finais.idxmax()
149
  valor_mais_alto = valores_finais.max()
150
 
151
- html_content = render_template('relatorio.html',
152
  tabela=df.to_html(classes="table table-striped table-hover", index=False),
153
  grafico=grafico,
154
  capital=capital,
@@ -158,9 +159,10 @@ def download_pdf():
158
  acoes_ret=acoes_ret,
159
  renda_fixa=renda_fixa,
160
  inflacao=inflacao,
161
- df=df,
162
  investimento_mais_valorizado=investimento_mais_valorizado,
163
- valor_mais_alto=valor_mais_alto)
 
 
164
  pdf = HTML(string=html_content).write_pdf()
165
 
166
  response = make_response(pdf)
@@ -172,3 +174,4 @@ def download_pdf():
172
 
173
  if __name__ == '__main__':
174
  app.run(host='0.0.0.0', port=7860, debug=True)
 
 
1
  import os
2
 
3
+ import os
4
+
5
  # Corrige problema fontconfig (necessário para WeasyPrint em alguns ambientes)
6
  os.environ['FONTCONFIG_PATH'] = '/tmp/fontconfig'
7
  os.makedirs('/tmp/fontconfig', exist_ok=True)
 
13
  import base64
14
  from weasyprint import HTML
15
 
 
16
  app = Flask(__name__)
17
 
18
  def gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, renda_fixa, anos=10, inflacao=4.5):
 
29
  renda_valor = cap_renda
30
  franquia_valor = cap_franquia
31
  else:
 
32
  renda_aluguel = cap_studio * (studio_ret / 100) * 12
33
  cap_studio += renda_aluguel
34
  cap_studio *= (1 + valorizacao / 100)
 
38
  cap_acoes *= (1 + acoes_ret / 100)
39
  cap_renda *= (1 + renda_fixa / 100)
40
 
 
41
  cap_studio /= (1 + inflacao / 100)
42
  cap_acoes /= (1 + inflacao / 100)
43
  cap_renda /= (1 + inflacao / 100)
 
84
  def index():
85
  grafico = None
86
  df = None
87
+ gerar_pdf = False # Flag para template
88
+
89
  if request.method == 'POST':
90
  try:
91
  capital = float(request.form['capital'])
 
101
 
102
  return render_template('index.html', grafico=grafico, tabela=df.to_html(classes="table table-striped table-hover", index=False),
103
  capital=capital, studio_ret=studio_ret, valorizacao=valorizacao, franquia_ret=franquia_ret,
104
+ acoes_ret=acoes_ret, renda_fixa=renda_fixa, inflacao=inflacao,
105
+ gerar_pdf=gerar_pdf)
106
  except Exception as e:
107
  return f"Erro: {e}"
108
+ return render_template('index.html', gerar_pdf=gerar_pdf)
109
 
110
  @app.route('/download_excel', methods=['POST'])
111
  def download_excel():
 
145
  df = gerar_simulacao(capital, studio_ret, valorizacao, franquia_ret, acoes_ret, renda_fixa, inflacao=inflacao)
146
  grafico = plotar_grafico(df)
147
 
148
+ valores_finais = df.iloc[-1, 1:]
 
149
  investimento_mais_valorizado = valores_finais.idxmax()
150
  valor_mais_alto = valores_finais.max()
151
 
152
+ html_content = render_template('index.html',
153
  tabela=df.to_html(classes="table table-striped table-hover", index=False),
154
  grafico=grafico,
155
  capital=capital,
 
159
  acoes_ret=acoes_ret,
160
  renda_fixa=renda_fixa,
161
  inflacao=inflacao,
 
162
  investimento_mais_valorizado=investimento_mais_valorizado,
163
+ valor_mais_alto=valor_mais_alto,
164
+ gerar_pdf=True) # Passa a flag para ocultar botão no PDF
165
+
166
  pdf = HTML(string=html_content).write_pdf()
167
 
168
  response = make_response(pdf)
 
174
 
175
  if __name__ == '__main__':
176
  app.run(host='0.0.0.0', port=7860, debug=True)
177
+