[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