[Zope-dev] Re: zope2 requests VS zope3 requests

Philipp von Weitershausen philipp at weitershausen.de
Sun May 28 06:53:45 EDT 2006


Lennart Regebro wrote:
> On 5/27/06, Rocky Burt <rocky at serverzen.com> wrote:
>> I've heard rumours that ultimately the preferred manner of integration
>> of z2 and z3 requests was to replace the z2 ZPublisher with the z3
>> zope.publisher.
> 
> Well, that would not necessarily mean that the requests are the same. :-)

That's true. However, we really want the Zope 2 request to (eventually)
become like the Zope 3 browser request. In fact, in many places we
already assume that the Zope 2 request is like a Zope 3 browser request.
We stick IBrowserRequest on it and hand it over to lots of Zope 3
machinery. So far this has worked relatively well, but there are
problems coming up with certain API subtleties.

I think the biggest challenge will be to deprecate __getattr__ access
for request variables and only allow __getitem__ for this. Then, the
getattr protocol will be used to access the request API only. For
example, IBrowserRequest demands that requests have a 'debug' attribute.
In Zope 2, we have the problem that request.debug is an alternate
spelling of request.form['debug']. If that alternate spelling wasn't
there, request.debug was free for the IBrowserRequest API. Right now
we're doing a frame hack to see where the caller is coming from and
either yield request.debug or request.form['debug'].

request.debug is just the beginning. At some point we might want to make
use of Zope 3 locales and support request.locale. request.principal
might make sense when the Zope 3 security mechanism makes it into Zope 2
at some point...

As said, I think the first step towards unifying the request interfaces
would be to deprecate the __getattr__ protocol for request variables. I
think we should start with Zope 2.11.

>> But are we doing anything in the short-term?  My naive idea was that
>> perhaps we should start building FrankenHTTPRequest which extended the
>> original ZPublisher HTTPRequest but then also implemented
>> zope.publisher's IHTTPRequest interface.
> 
> Isn't that what we are doing?

Yup.

Philipp



More information about the Zope-Dev mailing list