Sorry, spoke too soon. I saw how auth works and did something similar.
right now it is something like this, mind that names can be changed:

@req_args.requires_validVars( 'www.google.com',
               ('search',),
               ('search','highlight'))

first param is where to redirect on error and the other params are
tuples of possible vars. In this case it validates if you pass
?search=... OR
search=... AND highlight=... and redirects on all other cases (missing
params or too many params)

Any suggestions? I could see this also validating the type of each
parameter (like string or number)...

I'll clean up the code later and release it then.
Regards,
Tiago
-------

On Sat, Feb 13, 2010 at 12:19 AM, Tiago Almeida
<tiago.b.alme...@gmail.com> wrote:
> Hello, I think i've finished doing this but I'm having trouble
> accessing the request object from the decorator function.
> How would you define a decorator that accesses the request?
> I have something like this
>
> class require_args(object):
>        def __call__(self, f):
>                def decorated(*args):
>                        global request
>                        if argsAreValid( tuple(request.args.keys()), 
> self.arguments):
>                                f(*args)
>                        else:
>                                ...
>                return decorated
>
> I get the following error:
>
> global request
> NameError: global name 'request' is not defined
>
>
> Thanks a lot in advance.
> --
> On Fri, Feb 12, 2010 at 4:02 PM, Tiago Almeida
> <tiago.b.alme...@gmail.com> wrote:
>>
>> Shouldn't be hard to implement that decorator, though. I'll try later (at 
>> work now) because this is useful.
>>
>> Regards,
>> Tiago
>>
>> On Fri, Feb 12, 2010 at 12:19 AM, minh <mdn0...@gmail.com> wrote:
>>>
>>> Is there a way to require arguments/vars in the controller functions
>>> other than explicitly checking for them?
>>>
>>> It would be nice if we could decorate the functions similar to how the
>>> auth works, ex:
>>>
>>> @require_arg_function(minargs=2, message="Invalid arguments")
>>> def some_function():
>>>  ....
>>>
>>> Thanks.
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups 
>>> "web2py-users" group.
>>> To post to this group, send email to web...@googlegroups.com.
>>> To unsubscribe from this group, send email to 
>>> web2py+unsubscr...@googlegroups.com.
>>> For more options, visit this group at 
>>> http://groups.google.com/group/web2py?hl=en.
>>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to