--- a/sites/irclogs.qmsk.net/urltree.py Sun Feb 08 02:29:23 2009 +0200
+++ b/sites/irclogs.qmsk.net/urltree.py Sun Feb 08 02:55:53 2009 +0200
@@ -265,6 +265,9 @@
# default
None : str,
+ # string
+ 'str' : str,
+
# integer
'int' : int,
}
@@ -335,8 +338,11 @@
# parse key
key = query_item
+ # type
+ type = self.config.type_dict[type]
+
# add to query_args as (type, default) tuple
- self.query_args[key] = (self.config.type_dict[type], default)
+ self.query_args[key] = (type, type(default) if default else default)
def get_label_path (self) :
"""
@@ -359,7 +365,6 @@
kwargs[label_value.label.key] = label_value.value
# then parse all query args
- # XXX: catch missing arguments
for key, value in request.get_args() :
# lookup spec
type, default = self.query_args[key]
@@ -386,6 +391,24 @@
# set key
kwargs[key] = value
+
+ # then check all query args
+ for key, (type, default) in self.query_args.iteritems() :
+ # skip those already present
+ if key in kwargs :
+ continue
+
+ # apply default?
+ if default is None :
+ raise URLError("Missing required argument: %r" % (key, ))
+
+ elif default == '' :
+ # skip empty default
+ continue
+
+ else :
+ # set default
+ kwargs[key] = default
# execute the handler
return self.handler(request, **kwargs)