Out of the box you can do:

@service.run
def insertdog(name,owner,age):
    # other things

and in routes:

routes_in=[
   ('/app/default/insertdog/$name/$age/$owner',
    '/app/default/call/run/insertdog/$name/$age/$owner')]

I guess we can make another decorator that automatically registers the
routes.


On Oct 28, 3:39 am, cjrh <[email protected]> wrote:
> On Oct 28, 9:53 am, cjrh <[email protected]> wrote:
>
> > On Oct 27, 5:43 pm, VP <[email protected]> wrote:
>
> > > @app.route('/insertdog/<name>/<age>/<owner>')
> > > def insertdog(name,owner,age):
> > >      # other things
>
> > For fun, I tried an experiment with decorators.   Hold onto your
> > seats:
>
> Naturally, this closer simulation of app.route syntax also works (but
> I think the former separate arguments form works better):
>
> class R(object):
>     pass
> request = R()
> request.args=['caleb', 100]
>
> def validator(route):
>     args = route.split('/')[2:]
>     args = [i.replace('<', '').replace('>', '') for i in args]
>     assert(len(args)==len(request.args))
>     def inner(f):
>         for name, value in zip(args, request.args):
>             setattr(f, name, value)
>         return f
>     return inner
>
> @validator('/controller_action/<first_name>/<age>')
> def controller_action():
>     return f.first_name, f.age
>
> print f()
>
> ==================
>
> OUTPUT:
>
> ('caleb', 100)

Reply via email to