[llvm-commits] [LNT] r154549 - in /lnt/trunk/lnt/server/ui: decorators.py views.py
Daniel Dunbar
daniel at zuster.org
Wed Apr 11 16:14:31 PDT 2012
Author: ddunbar
Date: Wed Apr 11 18:14:31 2012
New Revision: 154549
URL: http://llvm.org/viewvc/llvm-project?rev=154549&view=rev
Log:
Migrate some code to lnt.server.ui.decorators.
Added:
lnt/trunk/lnt/server/ui/decorators.py
Modified:
lnt/trunk/lnt/server/ui/views.py
Added: lnt/trunk/lnt/server/ui/decorators.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/decorators.py?rev=154549&view=auto
==============================================================================
--- lnt/trunk/lnt/server/ui/decorators.py (added)
+++ lnt/trunk/lnt/server/ui/decorators.py Wed Apr 11 18:14:31 2012
@@ -0,0 +1,67 @@
+import flask
+from flask import abort
+from flask import current_app, g, render_template
+
+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))
+
+
+ return f(**args)
+
+ frontend.add_url_rule(rule, f.__name__, wrap, **options)
+ frontend.add_url_rule("/db_<db_name>" + rule,
+ f.__name__, wrap, **options)
+
+ return wrap
+ return decorator
+
+# Decorator for implementing per-testsuite routes.
+def v4_route(rule, **options):
+ """
+ LNT V4 specific route for endpoints which always refer to some testsuite
+ object.
+ """
+
+ # FIXME: This is manually composed with db_route.
+ def decorator(f):
+ def wrap(testsuite_name, db_name = None, **args):
+ # Initialize the test suite parameters on the app globals object.
+ g.testsuite_name = testsuite_name
+
+ # 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)
+
+ return f(**args)
+
+ frontend.add_url_rule("/v4/<testsuite_name>" + rule,
+ f.__name__, wrap, **options)
+ frontend.add_url_rule("/db_<db_name>/v4/<testsuite_name>" + rule,
+ f.__name__, wrap, **options)
+
+ return wrap
+ return decorator
Modified: lnt/trunk/lnt/server/ui/views.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/views.py?rev=154549&r1=154548&r2=154549&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/views.py (original)
+++ lnt/trunk/lnt/server/ui/views.py Wed Apr 11 18:14:31 2012
@@ -17,8 +17,7 @@
from lnt.db import perfdb
from lnt.server.ui.globals import db_url_for, v4_url_for
import lnt.server.reporting.analysis
-
-frontend = flask.Module(__name__)
+from lnt.server.ui.decorators import frontend, db_route, v4_route
###
# Root-Only Routes
@@ -48,39 +47,6 @@
#####
# Per-Database Routes
-# 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))
-
-
- return f(**args)
-
- frontend.add_url_rule(rule, f.__name__, wrap, **options)
- frontend.add_url_rule("/db_<db_name>" + rule,
- f.__name__, wrap, **options)
-
- return wrap
- return decorator
-
@db_route('/', only_v3 = False)
def index():
return render_template("index.html")
@@ -673,35 +639,6 @@
###
# V4 Schema Viewer
-# Decorator for implementing per-testsuite routes.
-def v4_route(rule, **options):
- """
- LNT V4 specific route for endpoints which always refer to some testsuite
- object.
- """
-
- # FIXME: This is manually composed with db_route.
- def decorator(f):
- def wrap(testsuite_name, db_name = None, **args):
- # Initialize the test suite parameters on the app globals object.
- g.testsuite_name = testsuite_name
-
- # 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)
-
- return f(**args)
-
- frontend.add_url_rule("/v4/<testsuite_name>" + rule,
- f.__name__, wrap, **options)
- frontend.add_url_rule("/db_<db_name>/v4/<testsuite_name>" + rule,
- f.__name__, wrap, **options)
-
- return wrap
- return decorator
-
@v4_route("/")
def v4_overview():
ts = request.get_testsuite()
More information about the llvm-commits
mailing list