def test_init_govuk_frontend(app): init_govuk_frontend(app) env = app.jinja_env assert (env.undefined == govuk_frontend_jinja.templates.NunjucksUndefined) assert ("govuk_frontend_jinja.templates.NunjucksExtension" in env.extensions)
def create_app(config_name): application = Flask(__name__, static_folder='static/', static_url_path=configs[config_name].STATIC_URL_PATH) # allow using govuk-frontend Nunjucks templates init_govuk_frontend(application) init_app( application, configs[config_name], data_api_client=data_api_client, login_manager=login_manager, ) # replace placeholder _content_loader_factory with properly initialized one global _content_loader_factory _content_loader_factory = _make_content_loader_factory( application, data_api_client.find_frameworks().get('frameworks'), ) from .metrics import metrics as metrics_blueprint, gds_metrics from .main import main as main_blueprint from .main import public as public_blueprint from .status import status as status_blueprint from dmutils.external import external as external_blueprint application.register_blueprint(metrics_blueprint, url_prefix='/admin') application.register_blueprint(status_blueprint, url_prefix='/admin') application.register_blueprint(main_blueprint, url_prefix='/admin') application.register_blueprint(public_blueprint, url_prefix='/admin') # Must be registered last so that any routes declared in the app are registered first (i.e. take precedence over # the external NotImplemented routes in the dm-utils external blueprint). application.register_blueprint(external_blueprint) login_manager.login_message = None # don't flash message to user login_manager.login_view = '/user/login' main_blueprint.config = application.config.copy() # Should be incorporated into digitalmarketplace-utils as well gds_metrics.init_app(application) csrf.init_app(application) @application.before_request def remove_trailing_slash(): if request.path != '/' and request.path.endswith('/'): return redirect(request.path[:-1], code=301) @application.before_request def refresh_session(): session.permanent = True session.modified = True application.add_template_filter(parse_document_upload_time) return application
def create_app(config_name): application = Flask(__name__, static_folder='static/', static_url_path=configs[config_name].STATIC_URL_PATH) # allow using govuk-frontend Nunjucks templates init_govuk_frontend(application) init_app( application, configs[config_name], data_api_client=data_api_client, login_manager=login_manager, ) from .metrics import metrics as metrics_blueprint, gds_metrics from .create_buyer.views.create_buyer import create_buyer as create_buyer_blueprint from .main import dos as dos_blueprint from dmutils.external import external as external_blueprint from .main import main as main_blueprint from .status import status as status_blueprint application.register_blueprint(metrics_blueprint, url_prefix='/buyers') application.register_blueprint(create_buyer_blueprint, url_prefix='/buyers') application.register_blueprint(dos_blueprint, url_prefix='/buyers') application.register_blueprint(main_blueprint, url_prefix='/buyers') application.register_blueprint(status_blueprint, url_prefix='/buyers') # Must be registered last so that any routes declared in the app are registered first (i.e. take precedence over # the external NotImplemented routes in the dm-utils external blueprint). application.register_blueprint(external_blueprint) login_manager.login_view = 'external.render_login' login_manager.login_message = None # don't flash message to user gds_metrics.init_app(application) csrf.init_app(application) # We want to be able to access this function from within all templates application.jinja_env.globals["render_question"] = ( dmcontent.govuk_frontend.render_question) @application.before_request def remove_trailing_slash(): if request.path != '/' and request.path.endswith('/'): if request.query_string: return redirect('{}?{}'.format( request.path[:-1], request.query_string.decode('utf-8')), code=301) else: return redirect(request.path[:-1], code=301) @application.before_request def refresh_session(): session.permanent = True session.modified = True return application
def create_app(config_name): application = Flask(__name__, static_folder='static/', static_url_path=configs[config_name].STATIC_URL_PATH) # allow using govuk-frontend Nunjucks templates init_govuk_frontend(application) init_app( application, configs[config_name], data_api_client=data_api_client, login_manager=login_manager, ) from .main import main as main_blueprint from .main import public as public_blueprint from .status import status as status_blueprint from .metrics import metrics as metrics_blueprint, gds_metrics application.register_blueprint(status_blueprint, url_prefix='/suppliers/opportunities') application.register_blueprint(metrics_blueprint, url_prefix='/suppliers/opportunities') application.register_blueprint(main_blueprint, url_prefix='/suppliers/opportunities') application.register_blueprint(public_blueprint, url_prefix='/suppliers/opportunities') # Must be registered last so that any routes declared in the app are registered first (i.e. take precedence over # the external NotImplemented routes in the dm-utils external blueprint). application.register_blueprint(external_blueprint) login_manager.login_message = None # don't flash message to user login_manager.login_view = 'external.render_login' main_blueprint.config = application.config.copy() # Metrics initialisation is required to be above CSRF initialisation. See # https://github.com/alphagov/gds_metrics_python/issues/4 gds_metrics.init_app(application) csrf.init_app(application) # We want to be able to access this function from within all templates application.jinja_env.globals["render_question"] = ( dmcontent.govuk_frontend.render_question) @application.before_request def remove_trailing_slash(): if request.path.endswith('/'): return redirect(request.path[:-1], code=301) @application.before_request def refresh_session(): session.permanent = True session.modified = True return application
def create_app(config_name): application = Flask(__name__, static_folder='static/', static_url_path=configs[config_name].STATIC_URL_PATH) # allow using govuk-frontend Nunjucks templates init_govuk_frontend(application) init_app( application, configs[config_name], data_api_client=data_api_client, login_manager=login_manager, ) from .metrics import metrics as metrics_blueprint, gds_metrics from .main import main as main_blueprint application.register_blueprint(metrics_blueprint, url_prefix='/user') application.register_blueprint(main_blueprint, url_prefix='/user') # Must be registered last so that any routes declared in the app are registered first (i.e. take precedence over # the external NotImplemented routes in the dm-utils external blueprint). application.register_blueprint(external_blueprint) login_manager.login_view = 'main.render_login' login_manager.login_message_category = "must_login" gds_metrics.init_app(application) csrf.init_app(application) @application.before_request def remove_trailing_slash(): if request.path != '/' and request.path.endswith('/'): if request.query_string: return redirect( '{}?{}'.format( request.path[:-1], request.query_string.decode('utf-8') ), code=301 ) else: return redirect(request.path[:-1], code=301) @application.before_request def refresh_session(): session.permanent = True session.modified = True return application
def create_app(config_name): application = Flask(__name__, static_folder='static/', static_url_path=configs[config_name].STATIC_URL_PATH) # Allow using GOV.UK Frontend Nunjucks templates init_govuk_frontend(application) init_app( application, configs[config_name], data_api_client=data_api_client, login_manager=login_manager, ) from .metrics import metrics as metrics_blueprint, gds_metrics from .main import main as main_blueprint from .status import status as status_blueprint from dmutils.external import external as external_blueprint application.register_blueprint(metrics_blueprint, url_prefix='/suppliers') application.register_blueprint(main_blueprint, url_prefix='/suppliers') application.register_blueprint(status_blueprint, url_prefix='/suppliers') # Must be registered last so that any routes declared in the app are registered first (i.e. take precedence over # the external NotImplemented routes in the dm-utils external blueprint). application.register_blueprint(external_blueprint) login_manager.login_message = None # don't flash message to user main_blueprint.config = application.config.copy() gds_metrics.init_app(application) csrf.init_app(application) @application.before_request def remove_trailing_slash(): if request.path.endswith('/'): return redirect(request.path[:-1], code=301) @application.before_request def refresh_session(): session.permanent = True session.modified = True application.add_template_filter(question_references) application.add_template_filter(parse_document_upload_time) return application
def create_app(application): application.config.from_object(configs[application.env]) application.url_map.converters['base64_uuid'] = Base64UUIDConverter init_app(application) init_govuk_frontend(application) init_jinja(application) statsd_client.init_app(application) logging.init_app(application, statsd_client) csrf.init_app(application) request_helper.init_app(application) from app.main import main as main_blueprint application.register_blueprint(main_blueprint) # from .status import status as status_blueprint # application.register_blueprint(status_blueprint) # add_template_filters(application) register_errorhandlers(application) service_api_client.init_app(application)
def test_render_template(app, loader): init_govuk_frontend(app) app.jinja_loader = loader with app.app_context(): flask.render_template("template.njk")
def create_app(application): setup_commands(application) notify_environment = os.environ['NOTIFY_ENVIRONMENT'] application.config.from_object(configs[notify_environment]) asset_fingerprinter._asset_root = application.config['ASSET_PATH'] init_app(application) init_govuk_frontend(application) init_jinja(application) for client in ( # Gubbins # Note, metrics purposefully first so we start measuring response times as early as possible before any # other `app.before_request` handlers (introduced by any of these clients) are processed (which would # otherwise mean we aren't measuring the full response time) metrics, csrf, login_manager, proxy_fix, request_helper, # API clients api_key_api_client, billing_api_client, broadcast_message_api_client, contact_list_api_client, complaint_api_client, email_branding_client, events_api_client, inbound_number_client, invite_api_client, job_api_client, letter_branding_client, letter_jobs_client, notification_api_client, org_invite_api_client, organisations_client, platform_stats_api_client, provider_client, service_api_client, status_api_client, template_folder_api_client, template_statistics_client, upload_api_client, user_api_client, # External API clients antivirus_client, redis_client, zendesk_client, ): client.init_app(application) logging.init_app(application) login_manager.login_view = 'main.sign_in' login_manager.login_message_category = 'default' login_manager.session_protection = None login_manager.anonymous_user = AnonymousUser # make sure we handle unicode correctly redis_client.redis_store.decode_responses = True setup_blueprints(application) add_template_filters(application) register_errorhandlers(application) setup_event_handlers()
app.register_blueprint(dashboard, ) app.register_blueprint( services, url_prefix='/services', ) app.register_blueprint( transactions, url_prefix='/transactions', ) app.register_blueprint( pay, url_prefix='/pay', ) app.register_blueprint( settings, url_prefix='/settings', ) app.register_blueprint( payment_links, url_prefix='/payment-links', ) repo_root = os.path.abspath(os.path.join(os.path.dirname(__file__))) app.jinja_loader = jinja2.FileSystemLoader([ os.path.join(repo_root, 'templates/vendor/govuk'), os.path.join(repo_root, 'templates'), ]) init_govuk_frontend(app) app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
def create_app(config_name): application = Flask(__name__) # allow using govuk-frontend Nunjucks templates init_govuk_frontend(application) init_app( application, configs[config_name], data_api_client=data_api_client, login_manager=login_manager, search_api_client=search_api_client, ) # replace placeholder _content_loader_factory with properly initialized one global _content_loader_factory _content_loader_factory = _make_content_loader_factory( application, data_api_client.find_frameworks().get('frameworks'), ) from .metrics import metrics as metrics_blueprint, gds_metrics from .main import main as main_blueprint from .main import direct_award as direct_award_blueprint from .main import direct_award_public as direct_award_public_blueprint from .status import status as status_blueprint application.register_blueprint(metrics_blueprint) application.register_blueprint(status_blueprint) application.register_blueprint(main_blueprint) application.register_blueprint(direct_award_blueprint) # direct_award_blueprint and direct_award_public_blueprint cover the same url prefix - direct_award_blueprint takes # precedence application.register_blueprint(direct_award_public_blueprint) # Must be registered last so that any routes declared in the app are registered first (i.e. take precedence over # the external NotImplemented routes in the dm-utils external blueprint). application.register_blueprint(external_blueprint) login_manager.login_view = '/user/login' login_manager.login_message = None # don't flash message to user gds_metrics.init_app(application) csrf.init_app(application) @application.before_request def remove_trailing_slash(): if request.path != '/' and request.path.endswith('/'): if request.query_string: return redirect( '{}?{}'.format( request.path[:-1], request.query_string.decode('utf-8') ), code=301 ) else: return redirect(request.path[:-1], code=301) @application.before_request def refresh_session(): session.permanent = True session.modified = True @application.context_processor def inject_saved_search_temp_message_statuses(): return {state.name: state.value for state in SavedSearchStateEnum} return application
def create_app(application): setup_commands(application) notify_environment = os.environ['NOTIFY_ENVIRONMENT'] application.config.from_object(configs[notify_environment]) asset_fingerprinter._asset_root = application.config['ASSET_PATH'] init_app(application) init_govuk_frontend(application) init_jinja(application) for client in ( # Gubbins csrf, login_manager, proxy_fix, request_helper, # API clients api_key_api_client, billing_api_client, complaint_api_client, email_branding_client, events_api_client, inbound_number_client, invite_api_client, job_api_client, letter_branding_client, letter_jobs_client, notification_api_client, org_invite_api_client, organisations_client, platform_stats_api_client, provider_client, service_api_client, status_api_client, template_folder_api_client, template_statistics_client, user_api_client, # External API clients antivirus_client, statsd_client, zendesk_client, redis_client): client.init_app(application) logging.init_app(application, statsd_client) login_manager.login_view = 'main.sign_in' login_manager.login_message_category = 'default' login_manager.session_protection = None login_manager.anonymous_user = AnonymousUser # make sure we handle unicode correctly redis_client.redis_store.decode_responses = True from app.main import main as main_blueprint application.register_blueprint(main_blueprint) from .status import status as status_blueprint application.register_blueprint(status_blueprint) add_template_filters(application) register_errorhandlers(application) setup_event_handlers()
def app(loader): app = flask.Flask("test_flask_ext") init_govuk_frontend(app) app.jinja_loader = loader return app