80 lines
2.1 KiB
Python
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
|