[Zope] Acquisition problems?
Curtis Maloney
curtis@umd.com.au
Fri, 14 Jul 2000 13:19:36 +1000
On Thu, 13 Jul 2000, Stephen Harrison wrote:
> Curtis Maloney wrote:
>
> [snip]
>
> > Well, here's the details:
> >
> > /
> > standard_html_header
> > register
> > /internal/
> > standard_html_header
> >
> > register works fine if invoked as /register
> > however, it spits the dummy if invoked as /internal/register
> > Complaining loudly about TypeError: too many arguments; expected 2, got 3
> > in standard_html_header.
>
> Is register a method, or a document? If it is a method the when you
It is a document.
> call /internal/register you are calling the object internal with the
> method register, so when it looks for standard_html_header it will first
> look in internal, before doing the acquisition thing. So it finds
> internal/standard_html_header. If it is a document, then you are
> calling the object /register, in the context of internal, but the
> containment of / so you get /standard_html_header.
>
Yes, well.. This is what I worked out from the Acquisition Algebra tute, and
from MP, but this is not what the actions of the site suggest. When I
modified /internal/standard_html_header, the actions of register as
/internal/register changed. This is what has me so confused.
That, and the fact the page give an error at all, when it works frine as
/register.
> In algebra terms, if register is a method, you have
>
> (internal o /)
>
> but if register is a document (or folder, or other object) you have
>
> ((register o /) o (internal o /))
>
> This is how acquisition (simple acquisition) behaves.
>
> Of course, I am strongly of the opinion that this method of acquisition
> is of very limited use and zope should really use natural acquisition
> (see http://www.zope.org/Wikis/zope-dev/AcquisitionUsage for a
> definition).
>
[snip]
>
> As it is, in order to achieve the result described above you have to
> carefully construct your site in order to work around the problems with
> acquisition, which really isn't the way we should be doing things.
Well, it just so happens this is what I'm doing next. (o8
I was handed this site to "fix", which has taken a lot of work. However,
rewriting it properly would have taken longer, and the project was already
overdue.
>
> Sorry to go on about this, but as time passes I am becomming more and
> more convinced that the method of acquisition needs to change from
> containment before context to context before containment.
>
Rant away, please. I believe it can be a great way to provoke ideas in other
people. Besides, if we never complained, how would they know there was a
problem? (o8
> I have yet to think of any advantages provided by the current method,
> but I would be more than happy to hear of any.
>
> Cheers,
> Stephen
Thanks for trying,
Curtis.