MRE_APP/apps/home/routes.py
2025-03-14 13:37:08 -06:00

80 lines
2.1 KiB
Python

# -*- encoding: utf-8 -*-
"""
Copyright (c) 2019 - present AppSeed.us
"""
from apps.home import blueprint
from apps.home.forms import MREForm
from apps.MRE import compute_mre, ConsumerNotEligibleError
from flask import render_template, request, flash, jsonify
from flask_login import login_required
from jinja2 import TemplateNotFound
@blueprint.route('/')
@blueprint.route('/index')
def index():
mre_form = MREForm(request.form)
# if request.method == 'POST' and mre_form.validate_on_submit():
# try:
# mre = compute_mre(mre_form.home_value, mre_form.down_payment_percent, mre_form.consumer_fico)
# return render_template('home/mre.html', form=mre_form)
#
# except ConsumerNotEligibleError as ex:
# flash(f'Error: {ex.reason}')
return render_template('home/mre.html', form=mre_form)
@blueprint.route('/compute_mre', methods=['GET'])
def ajax_compute_mre():
home_value = float(request.args.get('home_value').replace(',', ''))
consumer_fico = int(request.args.get('consumer_fico'))
down_payment_percent = float(request.args.get('down_payment_percent'))
try:
result = compute_mre(home_value, down_payment_percent, consumer_fico)
except ConsumerNotEligibleError as ex:
return jsonify({'error': ex.reason})
print(f'Computed MRE: {result}')
return jsonify({'computed_mre': result})
@blueprint.route('/<template>')
@login_required
def route_template(template):
try:
if not template.endswith('.html'):
template += '.html'
# Detect the current page
segment = get_segment(request)
# Serve the file (if exists) from app/templates/home/FILE.html
return render_template("home/" + template, segment=segment)
except TemplateNotFound:
return render_template('home/page-404.html'), 404
except:
return render_template('home/page-500.html'), 500
# Helper - Extract current page name from request
def get_segment(request):
try:
segment = request.path.split('/')[-1]
if segment == '':
segment = 'index'
return segment
except:
return None