fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
authorTero Marttila <terom@paivola.fi>
Wed, 10 Oct 2012 22:10:16 +0300
changeset 2 b0659c867226
parent 1 731d2df704f0
child 3 5990b188c54b
fixup pvl.verkko.wsgi.Application + test.py/wsgi to remove default path from pvl.verkko.db
pvl/verkko/db.py
pvl/verkko/wsgi.py
test.py
test.wsgi
--- a/pvl/verkko/db.py	Wed Oct 10 21:59:34 2012 +0300
+++ b/pvl/verkko/db.py	Wed Oct 10 22:10:16 2012 +0300
@@ -3,8 +3,6 @@
 
 import logging; log = logging.getLogger('pvl.verkko.db')
 
-DATABASE = 'sqlite:////home/terom/pvl/web/verkko/var/verkko.db'
-
 # schema
 metadata = MetaData()
 
@@ -27,7 +25,6 @@
 
 Session = sessionmaker()
 
-
 class Database (object) :
     """
         Our underlying database.
@@ -36,7 +33,11 @@
     # XXX: alias Tables in?
     dhcp_hosts = dhcp_hosts
 
-    def __init__ (self, database=DATABASE) :
+    def __init__ (self, database) :
+        """
+            database        - sqlalchemy connection URI
+        """
+
         self.engine = create_engine(database, 
             echo    = (log.isEnabledFor(logging.DEBUG)),
         )
--- a/pvl/verkko/wsgi.py	Wed Oct 10 21:59:34 2012 +0300
+++ b/pvl/verkko/wsgi.py	Wed Oct 10 22:10:16 2012 +0300
@@ -6,27 +6,37 @@
 
 from pvl.verkko import db as database, web, hosts
 
-@Request.application
-def application (request) :
-    db = database.Database()
-    
-    # path?
-    path = request.path.strip('/')
-    
-    if path :
-        path = path.split('/')
-    else :
-        path = []
+class Application (object) :
+    def __init__ (self, db) :
+        """
+            Initialize app with db.
+        """
 
-    log.debug("path: %s", path)
-    
-    # respond
-    if not path :
-        return web.render_index()
+        self.db = database.Database(db)
 
-    elif path[0] == 'hosts' :
-        return hosts.respond(request, db, path[1:])
+    @Request.application
+    def __call__ (self, request) :
+        """
+            WSGI entry point, werkzeug Request -> Response
+        """
+        
+        # path?
+        path = request.path.strip('/')
+        
+        if path :
+            path = path.split('/')
+        else :
+            path = []
 
-    else :
-        return Response("Not Found", status=404)
-    
+        log.debug("path: %s", path)
+        
+        # respond
+        if not path :
+            return web.render_index()
+
+        elif path[0] == 'hosts' :
+            return hosts.respond(request, self.db, path[1:])
+
+        else :
+            return Response("Not Found", status=404)
+        
--- a/test.py	Wed Oct 10 21:59:34 2012 +0300
+++ b/test.py	Wed Oct 10 22:10:16 2012 +0300
@@ -30,6 +30,9 @@
     # common
     parser.add_option_group(pvl.args.parser(parser))
 
+    parser.add_option('-d', '--database-read', default='sqlite:///var/verkko.db',
+        help="Database to use (readonly)")
+
     # parse
     options, args = parser.parse_args(args)
 
@@ -47,7 +50,7 @@
     options, args = parse_argv(argv, doc=__doc__)
 
     # app
-    application = pvl.verkko.wsgi.application
+    application = pvl.verkko.wsgi.Application(options.database_read)
 
     # wsgi wrapper
     run_simple('0.0.0.0', 8080, application,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test.wsgi	Wed Oct 10 22:10:16 2012 +0300
@@ -0,0 +1,9 @@
+"""
+    WSGI entry point
+"""
+
+import pvl.verkko.wsgi
+
+DATABASE_READ = 'sqlite:////home/terom/pvl/web/verkko/var/verkko.db'
+
+application = pvl.verkko.wsgi.Application(DATABASE_READ)