--- a/bin/pvl.verkko-dhcp Mon Jan 21 18:40:09 2013 +0200
+++ b/bin/pvl.verkko-dhcp Mon Jan 21 21:29:52 2013 +0200
@@ -4,6 +4,7 @@
from pvl import __version__
import pvl.args
+import pvl.web.args
import pvl.verkko.wsgi
import optparse
@@ -27,6 +28,7 @@
# common
parser.add_option_group(pvl.args.parser(parser))
+ parser.add_option_group(pvl.web.args.parser(parser))
parser.add_option('-d', '--database-read', metavar='URI', default='sqlite:///var/verkko.db',
help="Database to use (readonly)")
@@ -48,7 +50,7 @@
options, args = parse_argv(argv, doc=__doc__)
# app
- application = pvl.verkko.wsgi.Application(options.database_read)
+ application = pvl.web.args.apply(options, pvl.verkko.wsgi.Application, options.database_read)
# wsgi wrapper
run_simple('0.0.0.0', 8080, application,
--- a/bin/pvl.verkko-rrd Mon Jan 21 18:40:09 2013 +0200
+++ b/bin/pvl.verkko-rrd Mon Jan 21 21:29:52 2013 +0200
@@ -9,13 +9,12 @@
from pvl import __version__
import pvl.args
import pvl.rrd.args
+import pvl.web.args
import pvl.verkko.rrd
import optparse
import logging; log = logging.getLogger('main')
-import codecs # --web-layout
-
def parse_argv (argv, doc = __doc__) :
"""
Parse command-line argv, returning (options, args).
@@ -35,9 +34,7 @@
# common
parser.add_option_group(pvl.args.parser(parser))
parser.add_option_group(pvl.rrd.args.parser(parser))
-
- parser.add_option('--web-layout', metavar='TEMPLATE',
- help="Use template from given file for layout")
+ parser.add_option_group(pvl.web.args.parser(parser))
# parse
options, args = parser.parse_args(args)
@@ -58,17 +55,11 @@
# rrd
rrd = pvl.rrd.args.apply(options)
- if options.web_layout :
- layout = codecs.open(options.web_layout, 'r', 'utf-8').read()
- else :
- layout = None
-
# app
- application = pvl.verkko.rrd.Application(rrd,
- layout = layout
- )
+ application = pvl.web.args.apply(options, pvl.verkko.rrd.Application, rrd)
# wsgi wrapper
+ # XXX: into pvl.web.args.apply
werkzeug.serving.run_simple('0.0.0.0', 8080, application,
#use_reloader = True,
use_debugger = (options.loglevel == logging.DEBUG),
--- a/pvl/verkko/wsgi.py Mon Jan 21 18:40:09 2013 +0200
+++ b/pvl/verkko/wsgi.py Mon Jan 21 21:29:52 2013 +0200
@@ -7,12 +7,12 @@
class Application (pvl.web.Application) :
URLS = urls.urls
- def __init__ (self, db) :
+ def __init__ (self, db, **opts) :
"""
Initialize app with db.
"""
- super(Application, self).__init__()
+ super(Application, self).__init__(**opts)
self.db = database.Database(db)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pvl/web/args.py Mon Jan 21 21:29:52 2013 +0200
@@ -0,0 +1,31 @@
+import optparse
+
+import codecs
+
+def parser (parser) :
+ """
+ Command-line args for pvl.web
+ """
+
+ parser = optparse.OptionGroup(parser, 'pvl.web')
+
+ parser.add_option('--web-layout', metavar='TEMPLATE',
+ help="Use template from given file for layout")
+
+ return parser
+
+def apply (options, application, *args, **opts) :
+ """
+ Build given pvl.web.Application subclass from options.
+ """
+
+ if options.web_layout :
+ layout = codecs.open(options.web_layout, 'r', 'utf-8').read()
+ else :
+ layout = None
+
+
+ return application(*args,
+ layout = layout,
+ **opts
+ )