Merge branch 'master' into platform-admin

Conflicts:
	app/__init__.py
	app/main/views/add_service.py
	app/main/views/jobs.py
	app/templates/main_nav.html
	tests/app/main/views/test_dashboard.py
	tests/conftest.py
This commit is contained in:
Rebecca Law
2016-03-18 16:32:10 +00:00
66 changed files with 1356 additions and 597 deletions

View File

@@ -2,7 +2,8 @@ import os
import re
import dateutil
from flask import (Flask, session, Markup, escape, render_template, make_response)
import urllib
from flask import (Flask, session, Markup, escape, render_template, make_response, current_app)
from flask._compat import string_types
from flask_login import LoginManager
from flask_wtf import CsrfProtect
@@ -19,6 +20,7 @@ from app.notify_client.job_api_client import JobApiClient
from app.notify_client.notification_api_client import NotificationApiClient
from app.notify_client.status_api_client import StatusApiClient
from app.notify_client.invite_api_client import InviteApiClient
from app.notify_client.statistics_api_client import StatisticsApiClient
from app.its_dangerous_session import ItsdangerousSessionInterface
from app.asset_fingerprinter import AssetFingerprinter
from utils.recipients import validate_phone_number, InvalidPhoneError
@@ -36,15 +38,16 @@ job_api_client = JobApiClient()
notification_api_client = NotificationApiClient()
status_api_client = StatusApiClient()
invite_api_client = InviteApiClient()
statistics_api_client = StatisticsApiClient()
asset_fingerprinter = AssetFingerprinter()
def create_app(config_name, config_overrides=None):
def create_app():
application = Flask(__name__)
application.config['NOTIFY_ADMIN_ENVIRONMENT'] = config_name
application.config.from_object(configs[config_name])
init_app(application, config_overrides)
application.config.from_object(os.environ['NOTIFY_ADMIN_ENVIRONMENT'])
init_app(application)
logging.init_app(application)
init_csrf(application)
@@ -55,6 +58,7 @@ def create_app(config_name, config_overrides=None):
notification_api_client.init_app(application)
status_api_client.init_app(application)
invite_api_client.init_app(application)
statistics_api_client.init_app(application)
login_manager.init_app(application)
login_manager.login_view = 'main.sign_in'
@@ -75,6 +79,7 @@ def create_app(config_name, config_overrides=None):
application.add_template_filter(format_time)
application.add_template_filter(syntax_highlight_json)
application.add_template_filter(valid_phone_number)
application.add_template_filter(linkable_name)
application.after_request(useful_headers_after_request)
register_errorhandlers(application)
@@ -101,22 +106,12 @@ def init_csrf(application):
abort(400, reason)
def init_app(app, config_overrides):
if config_overrides:
for key in app.config.keys():
if key in config_overrides:
app.config[key] = config_overrides[key]
for key, value in app.config.items():
if key in os.environ:
app.config[key] = convert_to_boolean(os.environ[key])
@app.context_processor
def init_app(application):
@application.context_processor
def inject_global_template_variables():
return {
'asset_path': '/static/',
'header_colour': app.config['HEADER_COLOUR'],
'header_colour': application.config['HEADER_COLOUR'],
'asset_url': asset_fingerprinter.get_url
}
@@ -139,6 +134,10 @@ def nl2br(value):
return Markup(result)
def linkable_name(value):
return urllib.parse.quote_plus(value)
def syntax_highlight_json(code):
return Markup(highlight(code, JavascriptLexer(), HtmlFormatter(noclasses=True)))
@@ -203,7 +202,7 @@ def register_errorhandlers(application):
@application.errorhandler(Exception)
def handle_bad_request(error):
from flask import current_app
if current_app.config.get('DEBUG'):
print(error)
# We want the Flask in browser stacktrace
if current_app.config.get('DEBUG', None):
raise error
return _error_response(500)