Example #1
0
    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')
Example #2
0
    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')
Example #3
0
    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)
Example #4
0
    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'])
Example #5
0
 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')
Example #6
0
 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'), '/')
Example #7
0
    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')
Example #8
0
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(
Example #9
0
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))
Example #10
0
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")