durusmail: quixote-users: Request subclassing
Request subclassing
2005-11-09
2005-11-09
2005-11-10
2005-11-10
2005-11-10
2005-11-10
Matt Patterson (3 parts)
2005-11-11
Matt Patterson (2 parts)
2005-11-11
2005-11-11
Request subclassing
Matt Patterson
2005-11-10
On 9 Nov 2005, at 14:59, David Binger wrote:

> On Nov 9, 2005, at 6:26 AM, Matt Patterson wrote:
>
>> Did anyone have any thoughts about this (approach more than patch,
>> I suppose). The issues around it (amount of extra complexity
>> needed to graft on request context stuff at the moment, for one)
>> are becoming more pressing here at work, and I'd appreciate your
>> opinions. The original message is here: http://mail.mems-
>> exchange.org/durusmail/quixote-users/5265/

I've reordered things a bit below to avoid tripping over my feet.

> The patch seems to offer two more ways of doing what seems to be
> the same thing: either by a keyword argument or by overriding the
> create_request() method.  Do we need more options?

I think we do.

> The caller of process_request (the driver) can supply
> an instance of the subclass of HTTPRequest that the application
> requires.

I think that messing with the driver scripts is a Bad Idea,
particularly if (as I will be at work) you're wanting to deploy
multiple quixote apps onto a server. Messing with the driver scripts
seems like going in at the wrong level. (I'm not 100% but I think
that a WSGI-like environment adds weight to that argument.) If I'm
deploying my app to run on an app server I don't want to have to
redeploy bits that feel like part of the app server too...

> If you would prefer to customize the Publisher instead of
> the driver, your application's subclass of Publisher
> could do this:
>
>     def process_request(self, request):
>         request.__class__ = MyHTTPRequest
>       return Publisher.process_request(self, request)

Unless I'm being dense (and hey, that's not unknown...) doing this
means that you miss the opportunity to do something with the
Request's __init__ method, which seems like a fairly major loss to me.

So, I think that my proposal provides a better separated way to do
something I think is important. The keyword option allows people to
use a different Request without subclassing Publisher, and I'm not
convinced that that's essential.

I'd be perfectly happy to force people to subclass Publisher to make
it happen and just add create_request() as a method.

Thanks,

Matt

--
   Matt Patterson | Design & Code
    | http://www.emdash.co.uk/
    | http://www.reprocessed.org/

reply