--- a/pvl/verkko/urls.py Wed Oct 10 23:36:23 2012 +0300
+++ b/pvl/verkko/urls.py Wed Oct 10 23:44:37 2012 +0300
@@ -4,10 +4,23 @@
return Rule(string, endpoint=endpoint, **opts)
# URL -> Handler
-from pvl.verkko import web, hosts
+from pvl.verkko import hosts
+
+# index page here :)
+from pvl.verkko import web
+class Index (web.Handler) :
+ def render (self) :
+ html = web.html
+
+ return (
+ html.ul(
+ # TODO: self.url
+ html.a(href=self.url(hosts.IndexHandler))("DHCP Hosts"),
+ )
+ )
urls = Map((
- rule('/', web.Index),
+ rule('/', Index),
rule('/hosts/', hosts.IndexHandler),
rule('/hosts/<int:id>', hosts.ItemHandler),
rule('/hosts/<attr>/<value>', hosts.ListHandler),
--- a/pvl/verkko/web.py Wed Oct 10 23:36:23 2012 +0300
+++ b/pvl/verkko/web.py Wed Oct 10 23:44:37 2012 +0300
@@ -1,5 +1,13 @@
# encoding: utf-8
+def merge (*dicts) :
+ dict = {}
+
+ for d in dicts :
+ dict.update(d)
+
+ return dict
+
# response types
from werkzeug.wrappers import Response
from werkzeug.exceptions import (
@@ -23,7 +31,7 @@
"/static/style.css",
)
- def __init__ (self, app, request, urls) :
+ def __init__ (self, app, request, urls, params) :
"""
app - wsgi.Application
request - werkzeug.Request
@@ -34,6 +42,7 @@
self.db = app.db
self.request = request
self.urlmap = urls
+ self.params = params
def url (self, handler=None, **params) :
"""
@@ -41,7 +50,9 @@
"""
if not handler :
+ # XXX: just generate a plain-relative '?foo=...' url instead?
handler = self.__class__
+ params = merge(self.params, params)
return self.urlmap.build(handler, params)
@@ -89,29 +100,18 @@
pass
- def respond (self, **params) :
+ def respond (self) :
"""
Generate a response, or raise an HTTPException
Does an HTML layout'd response per default.
-
- **params - url-mapped parameters
"""
# XXX: returning e.g. redirect?
- self.process(**params)
+ self.process(**self.params)
# render as html per default
text = unicode(html.document(self.render_html()))
return Response(text, mimetype='text/html')
-class Index (Handler) :
- def render (self) :
- return (
- html.ul(
- # TODO: self.url
- html.a(href='/hosts')("DHCP Hosts"),
- )
- )
-
--- a/pvl/verkko/wsgi.py Wed Oct 10 23:36:23 2012 +0300
+++ b/pvl/verkko/wsgi.py Wed Oct 10 23:44:37 2012 +0300
@@ -28,10 +28,10 @@
handler, params = urls.match()
# handler instance
- handler = handler(self, request, urls)
+ handler = handler(self, request, urls, params)
# apply
- return handler.respond(**params)
+ return handler.respond()
@Request.application
def __call__ (self, request) :