Coverage for app/__init__.py: 66%
74 statements
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-24 14:13 +0000
« prev ^ index » next coverage.py v7.2.5, created at 2023-05-24 14:13 +0000
1import os
2import pprint
4from flask import Flask, render_template
5from flask.helpers import get_env
6from playhouse.shortcuts import model_to_dict, dict_to_model
7from app.logic.config import load_config_files
9# Initialize our application
10app = Flask(__name__, template_folder="templates")
12# Set the correct configuration according to the environment
13load_config_files(app, get_env())
15# set the secret key after configuration is set up
16app.secret_key = app.config['secret_key']
18# These imports must happen after configuration
19from app.models.term import Term
20from app.models.user import User
22from peewee import BaseQuery
23if app.config['show_queries']:
24 old_execute = BaseQuery.execute
25 def new_execute(*args, **kwargs):
26 if session:
27 if 'querycount' not in session:
28 session['querycount'] = 0
30 session['querycount'] += 1
31 print("**Running query {}**".format(session['querycount']))
32 print(args[0])
33 return old_execute(*args, **kwargs)
34 BaseQuery.execute = new_execute
37######### Blueprints #############
38from app.controllers.admin import admin_bp as admin_bp
39app.register_blueprint(admin_bp)
41from app.controllers.events import events_bp as events_bp
42app.register_blueprint(events_bp)
44from app.controllers.main import main_bp as main_bp
45app.register_blueprint(main_bp)
47from app.controllers.serviceLearning import serviceLearning_bp as serviceLearning_bp
48app.register_blueprint(serviceLearning_bp)
49##################################
51# Make 'ENV' a variable everywhere
52@app.context_processor
53def inject_environment():
54 return dict( env=get_env() )
56from flask import session
57@app.before_request
58def queryCount():
59 if session:
60 session['querycount'] = 0
62from app.logic.loginManager import getLoginUser
63from flask import g
64@app.before_request
65def load_user():
66 # An exception handles both current_user not being set and a mismatch between models
67 try:
68 g.current_user = dict_to_model(User,session['current_user'])
69 except Exception as e:
70 user = getLoginUser()
71 session['current_user'] = model_to_dict(user)
72 g.current_user = user
74from app.logic.loginManager import getCurrentTerm
75@app.before_request
76def load_currentTerm():
77 # An exception handles both current_term not being set and a mismatch between models
78 try:
79 g.current_term = dict_to_model(Term, session['current_term'])
80 except Exception as e:
81 term = getCurrentTerm()
82 session['current_term'] = model_to_dict(term)
83 g.current_term = term
85from flask import request
86@app.context_processor
87def load_visibleAccordion():
88 acc = request.args.get("accordion", default = False)
89 return {"visibleAccordion": acc}
90"""
91Error handling for all 403, 404, 500 errors. Works by rendering a customm html
92file located at templates/errors. All abort calls are automatically routed here
93to be handled.
94"""
96supportContactEmail = app.config["support_email_contact"]
98@app.errorhandler(403)
99def handle_bad_request(e):
100 return render_template("/errors/403error.html",
101 supportEmail = supportContactEmail)
103@app.errorhandler(404)
104def handle_bad_request(e):
105 return render_template("/errors/404error.html",
106 supportEmail = supportContactEmail)
108@app.errorhandler(500)
109def handle_bad_request(e):
110 return render_template("/errors/500error.html",
111 supportEmail = supportContactEmail)