diff -r 5a72c00c4ae4 -r fc11c4e86a82 sites/irclogs.qmsk.net/urltree.py --- 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)