On 9/3/09 6:19 PM, Iain Duncan wrote:
> On Thu, 2009-09-03 at 18:15 -0400, Chris McDonough wrote:
>> Using request parameters in model code is technically unsupported. In the
>> "mindset", models need no access to the request environment. But please
>> out the "repoze.bfg.threadlocal" module. (Please read the comment relating
>> "get_current_request"). Then decide what you want to do.
> That's what I thought, which makes sense to me for the bfg way from what
> I understand. But then I got stuck at middleware, does it not also seem
> reasonable that a model might want to interact with middleware?
Not in the out-of-the-box behavior of BFG. Whether the data comes from
middleware or from a user's browser, model *traversal* code (__getitem__)
shouldn't need access to the request. Or at least that's a design decision.
If it really does (which I think it probably really doesn't in 99.99% of
a different "traverser" should be plugged in. For example, QuantumBuster
on BFG) replaces the default BFG traverser with a custom one in a more or less
"approved" way for other reasons (unrelated to the need to access request
variables in model traversal code).
> In this
> instance for example, the choice of db url string is made by middleware.
> But maybe that needs to be pushed out into get_root.
get_root seems like a good place to check for that.
Repoze-dev mailing list