Hi Anand,

Yeah you're right, another submodule would be overkill for this. I've added
classes for 401, 403, 406, 409 and 412 - I'll just check it works on a
proper server before sending the pull request...

I ran into another 2.4 incompatibility when trying to install my version -
in application.py the SUFFIX variable is set with a ternary expression:

SUFFIX = '$py.class' if sys.platform.startswith('java') else '.pyc'

which wasn't introduced till 2.5. I'll send a pull request that fixes it for
ye-olde-python too.

Fred



On 7 July 2011 13:56, Anand Chitipothu <[email protected]> wrote:

> Hi Fred,
>
> Thanks for reporting the issue. I'll added a github issue for this.
>
> https://github.com/webpy/webpy/issues/81
>
> I think right way to fix it to write those extra classes manually. I
> don't think we should add a python24.py.
>
> Can you implement that and send a pull request?
>
> Anand
>
> 2011/7/7 Fred Ludlow <[email protected]>:
> > Hi all,
> >
> > I've been using web.py to make a RESTful JSON API for some web
> applications
> > I'm working on. So far it's been great, very nice intuitive API and
> doesn't
> > take much code to do what you want.
> >
> > I've come across a small bug with web.py on python 2.4 (which is what I'm
> > stuck with for the forseeable future).
> >
> > The following works fine:
> >
> > class Handler1(object):
> >     def GET():
> >         raise web.Redirect('/someotherurl')
> >
> > but this:
> >
> > class Handler2(object):
> >     def GET():
> >         raise web.Forbidden()
> >
> > fails with the message:
> >
> > TypeError: exceptions must be classes, instances, or strings
> (deprecated),
> > not Forbidden
> >
> > I'm pretty sure this is because in python 2.4 the Exception class is a
> > classic-style class, rather than a new-style class and Python 2.4 won't
> let
> > you raise a new-style class instance. Looking in web.webapi, some of the
> > status codes (Redirect, Found, SeeOther, Gone) are defined using the
> class
> > statement which gies you a classic-style class, and others (Forbidden,
> OK,
> > Created) are generated dynamically using type(name, bases, dict), which
> > gives a new-style class.
> >
> > I know I can just return an instance of web.Forbidden rather than raising
> > it, but this gets complicated once your GET function starts calling any
> > other methods (you have to check what they return, or use some kind of
> proxy
> > Exception class). I'm also using the handy mimerender package to decorate
> my
> > GETs, PUTs etc, and that expects GET to return a very specific type of
> > object (dict with something stored in 'message'), besides, conceptually,
> > raising an exception makes the most sense here.
> >
> > One way of fixing this would be to define the Forbidden class using the
> > class statement, but that involves some extra manual class definitions in
> > web.webapi, just to fix it for an old version of python. Perhaps a
> > web.python24 submodule that only gets imported if running 2.4 and
> overwrites
> > web.Forbidden, etc with classic-style classes might be the best way to do
> > it? If this sounds sensible I'd be happy to write it, or is there a
> better
> > way round the problem?
> >
> > Cheers,
> >
> > Fred
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "web.py" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group at
> > http://groups.google.com/group/webpy?hl=en.
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "web.py" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/webpy?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/webpy?hl=en.

Reply via email to