def test_basic_module(self): app = flask.Flask(__name__) admin = flask.Module(__name__, 'admin', url_prefix='/admin') @admin.route('/') def admin_index(): return 'admin index' @admin.route('/login') def admin_login(): return 'admin login' @admin.route('/logout') def admin_logout(): return 'admin logout' @app.route('/') def index(): return 'the index' app.register_module(admin) c = app.test_client() self.assert_equal(c.get('/').data, b'the index') self.assert_equal(c.get('/admin/').data, b'admin index') self.assert_equal(c.get('/admin/login').data, b'admin login') self.assert_equal(c.get('/admin/logout').data, b'admin logout')
def test_context_processors(self): app = flask.Flask(__name__) admin = flask.Module(__name__, 'admin', url_prefix='/admin') @app.context_processor def inject_all_regular(): return {'a': 1} @admin.context_processor def inject_admin(): return {'b': 2} @admin.app_context_processor def inject_all_module(): return {'c': 3} @app.route('/') def index(): return flask.render_template_string('{{ a }}{{ b }}{{ c }}') @admin.route('/') def admin_index(): return flask.render_template_string('{{ a }}{{ b }}{{ c }}') app.register_module(admin) c = app.test_client() self.assert_equal(c.get('/').data, b'13') self.assert_equal(c.get('/admin/').data, b'123')
def test_error_handling(self): app = flask.Flask(__name__) admin = flask.Module(__name__, 'admin') @admin.app_errorhandler(404) def not_found(e): return 'not found', 404 @admin.app_errorhandler(500) def internal_server_error(e): return 'internal server error', 500 @admin.route('/') def index(): flask.abort(404) @admin.route('/error') def error(): 1 // 0 app.register_module(admin) c = app.test_client() rv = c.get('/') self.assert_equal(rv.status_code, 404) self.assert_equal(rv.data, b'not found') rv = c.get('/error') self.assert_equal(rv.status_code, 500) self.assert_equal(b'internal server error', rv.data)
def test_request_processing(self): catched = [] app = flask.Flask(__name__) admin = flask.Module(__name__, 'admin', url_prefix='/admin') @admin.before_request def before_admin_request(): catched.append('before-admin') @admin.after_request def after_admin_request(response): catched.append('after-admin') return response @admin.route('/') def admin_index(): return 'the admin' @app.before_request def before_request(): catched.append('before-app') @app.after_request def after_request(response): catched.append('after-app') return response @app.route('/') def index(): return 'the index' app.register_module(admin) c = app.test_client() self.assert_equal(c.get('/').data, b'the index') self.assert_equal(catched, ['before-app', 'after-app']) del catched[:] self.assert_equal(c.get('/admin/').data, b'the admin') self.assert_equal(catched, ['before-app', 'before-admin', 'after-admin', 'after-app'])
def test_late_binding(self): app = flask.Flask(__name__) admin = flask.Module(__name__, 'admin') @admin.route('/') def index(): return '42' app.register_module(admin, url_prefix='/admin') self.assert_equal(app.test_client().get('/admin/').data, b'42')
def test_default_endpoint_name(self): app = flask.Flask(__name__) mod = flask.Module(__name__, 'frontend') def index(): return 'Awesome' mod.add_url_rule('/', view_func=index) app.register_module(mod) rv = app.test_client().get('/') self.assert_equal(rv.data, b'Awesome') with app.test_request_context(): self.assert_equal(flask.url_for('frontend.index'), '/')
def test_module_subdomain_support(self): app = flask.Flask(__name__) mod = flask.Module(__name__, 'test', subdomain='testing') app.config['SERVER_NAME'] = 'localhost' @mod.route('/test') def test(): return 'Test' @mod.route('/outside', subdomain='xtesting') def bar(): return 'Outside' app.register_module(mod) c = app.test_client() rv = c.get('/test', 'http://testing.localhost/') self.assert_equal(rv.data, b'Test') rv = c.get('/outside', 'http://xtesting.localhost/') self.assert_equal(rv.data, b'Outside')
import flask from flask import abort from flask import jsonify from flask import redirect from flask import render_template from flask import request from flask import session from flask import url_for from flask import current_app ci = flask.Module(__name__, url_prefix='/ci', name='ci') from llvmlab import util @ci.route('/') def dashboard(): return render_template("dashboard.html", ci_config=current_app.config.summary.config) @ci.route('/phase/<int:index>/<source_stamp>') def phase_popup(index, source_stamp): cfg = current_app.config.summary.config # Validate the phase. if index >= len(cfg.phases): abort(404) # Get the phase. phase = cfg.phases[index] # Lookup the latest builds associated with this revision. phased_builds = dict(
import flask from flask import abort from flask import current_app, g, render_template from flask import request frontend = flask.Module(__name__) # Decorator for implementing per-database routes. def db_route(rule, only_v3=True, **options): """ LNT specific route for endpoints which always refer to some database object. This decorator handles adding the routes for both the default and explicit database, as well as initializing the global database information objects. """ def decorator(f): def wrap(db_name=None, **args): # Initialize the database parameters on the app globals object. g.db_name = db_name or "default" g.db_info = current_app.old_config.databases.get(g.db_name) if g.db_info is None: abort(404) # Disable non-v0.3 database support, if requested. if only_v3 and g.db_info.db_version != '0.3': return render_template("error.html", message="""\ UI support for database with version %r is not yet implemented.""" % (g.db_info.db_version))
import flask from flask import abort from flask import redirect from flask import render_template from flask import request from flask import session from flask import url_for from flask import current_app import llvmlab import llvmlab.machine ### # Top-level Information frontend = flask.Module(__name__, name="frontend") @frontend.route('/') def index(): return render_template("index.html") @frontend.route('/favicon.ico') def favicon_ico(): return redirect(url_for('.static', filename='favicon.ico')) @frontend.route('/admin') def admin(): return render_template("admin.html")