| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- from flask import Blueprint, render_template, request, redirect, url_for
- from models import db, CatalogoPaneles, DatosSolaresCiudad, ProyectosUsuario, Casa
- main = Blueprint('main', __name__)
- @main.route('/')
- def index():
- # Ahora la página principal lista las casas
- casas = Casa.query.all()
- ciudades = DatosSolaresCiudad.query.all()
-
- return render_template('casas.html', casas=casas, ciudades=ciudades)
- @main.route('/casa/nueva', methods=['POST'])
- def nueva_casa():
- nombre = request.form.get('nombre')
- area_techo = float(request.form.get('area_techo'))
- id_ciudad = request.form.get('id_ciudad')
-
- casa = Casa(nombre=nombre, area_techo=area_techo, id_ciudad=id_ciudad)
- db.session.add(casa)
- db.session.commit()
-
- return redirect(url_for('main.index'))
- @main.route('/simular/<int:id_casa>')
- def simular(id_casa):
- casa = Casa.query.get_or_404(id_casa)
- paneles = CatalogoPaneles.query.all()
-
- return render_template('simulation.html', casa=casa, paneles=paneles)
- @main.route('/calculate', methods=['POST'])
- def calculate():
- id_casa = request.form.get('id_casa')
- id_panel = request.form.get('id_panel')
- cantidad = int(request.form.get('cantidad'))
- precio_kwh = float(request.form.get('precio_kwh', 0.15))
-
- casa = Casa.query.get(id_casa)
- ciudad = casa.ciudad
- panel = CatalogoPaneles.query.get(id_panel)
-
- # E = A * r * H * PR
- # Monthly E = (A_panel * quantity) * r * H * 30 * 0.75
-
- area_total = panel.area_m2 * cantidad
- pr = 0.75
- days = 30
-
- energia_mensual = area_total * panel.eficiencia_r * ciudad.irradiacion_h_promedio * days * pr
-
- # Bonus: ROI
- ahorro_mensual = energia_mensual * precio_kwh
- costo_total = panel.precio_unitario * cantidad
- tiempo_recuperacion = (costo_total / ahorro_mensual / 12) if ahorro_mensual > 0 else 0 # Years
-
- # Bonus: CO2
- co2_evitado = energia_mensual * 0.4
-
- return render_template('results.html',
- energia=round(energia_mensual, 2),
- ahorro=round(ahorro_mensual, 2),
- recuperacion=round(tiempo_recuperacion, 1),
- co2=round(co2_evitado, 2),
- ciudad=ciudad,
- panel=panel,
- cantidad=cantidad,
- costo_total=costo_total,
- casa=casa)
- @main.route('/save', methods=['POST'])
- def save():
- nombre_cliente = request.form.get('nombre_cliente')
- id_casa = request.form.get('id_casa')
- id_panel = request.form.get('id_panel')
- cantidad = request.form.get('cantidad')
- energia = request.form.get('energia')
- ahorro = request.form.get('ahorro')
-
- casa = Casa.query.get(id_casa)
-
- proyecto = ProyectosUsuario(
- nombre_cliente=nombre_cliente,
- id_casa=id_casa,
- id_ciudad=casa.id_ciudad,
- id_panel=id_panel,
- cantidad_paneles=cantidad,
- energia_estimada_mensual=energia,
- ahorro_estimado=ahorro
- )
-
- db.session.add(proyecto)
- db.session.commit()
-
- return redirect(url_for('main.index'))
|