Coverage for app/__init__.py: 66%

74 statements  

« prev     ^ index     » next       coverage.py v7.2.5, created at 2023-05-24 14:13 +0000

1import os 

2import pprint 

3 

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 

8 

9# Initialize our application 

10app = Flask(__name__, template_folder="templates") 

11 

12# Set the correct configuration according to the environment 

13load_config_files(app, get_env()) 

14 

15# set the secret key after configuration is set up 

16app.secret_key = app.config['secret_key'] 

17 

18# These imports must happen after configuration 

19from app.models.term import Term 

20from app.models.user import User 

21 

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 

29 

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 

35 

36 

37######### Blueprints ############# 

38from app.controllers.admin import admin_bp as admin_bp 

39app.register_blueprint(admin_bp) 

40 

41from app.controllers.events import events_bp as events_bp 

42app.register_blueprint(events_bp) 

43 

44from app.controllers.main import main_bp as main_bp 

45app.register_blueprint(main_bp) 

46 

47from app.controllers.serviceLearning import serviceLearning_bp as serviceLearning_bp 

48app.register_blueprint(serviceLearning_bp) 

49################################## 

50 

51# Make 'ENV' a variable everywhere 

52@app.context_processor 

53def inject_environment(): 

54 return dict( env=get_env() ) 

55 

56from flask import session 

57@app.before_request 

58def queryCount(): 

59 if session: 

60 session['querycount'] = 0 

61 

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 

73 

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 

84 

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""" 

95 

96supportContactEmail = app.config["support_email_contact"] 

97 

98@app.errorhandler(403) 

99def handle_bad_request(e): 

100 return render_template("/errors/403error.html", 

101 supportEmail = supportContactEmail) 

102 

103@app.errorhandler(404) 

104def handle_bad_request(e): 

105 return render_template("/errors/404error.html", 

106 supportEmail = supportContactEmail) 

107 

108@app.errorhandler(500) 

109def handle_bad_request(e): 

110 return render_template("/errors/500error.html", 

111 supportEmail = supportContactEmail)