[Zope-CMF] CMF add views and <browser:page />
yuppie
y.2008 at wcm-solutions.de
Tue Dec 9 07:46:31 EST 2008
Hi Martin!
Martin Aspeli wrote:
> yuppie wrote:
>>> How about a new <cmf:addview />
>>> directive that mimics <browser:page />, but registers the
>>> (context,request,fti) adapter? I could probably put that together if
>>> people think it's a good idea.
>> CMF add views are different because they are looked up by a special
>> traverser, using the additional type info object. You have to be aware
>> of that. No matter if you use <adapter /> or <cmf:addview />.
>
> Sure.
>
>> It is not obvious why you have to use explicit Zope 2 style security for
>> add views and declarative Zope 3 style security for other views. But I'd
>> rather like to see the 'permission' attribute of <adapter /> implemented
>> for Zope 2 instead of a new <cmf:addview /> directive.
>
> Mmmm... I'm not sure most people would find it natural to think about
> the add form as an adapter like this.
Well. I find it natural to think about browser pages as a special kind
of adapters. And since add forms don't fulfill all the special criteria
for <browser:page />, we have to fall back to the more generic <adapter />.
> Also, Five's <browser:page /> does quite a lot of stuff that we now
> can't have for CMF add views:
>
> o It allows a template to be registered
> o It allows an attribute other than __call__ to be used to render
> the view
> o It sets up security on attributes, by interface or explicit list
> o It sets up security on the view class itself
Sure. The question is: Do we really need these features for add views?
> I don't think the adapter permission attribute would be sufficient in
> any case. In Zope 3, it's tied to a type of low-level security proxy
> that doesn't really exist in Zope 2. The ClassSecurityInfo stuff only
> affects restricted python/traversal, whereas Zope 3 security proxies are
> applied everywhere.
AFAICS I didn't register the add views correctly. Provided interface
should be IBrowserPage or IPageForm, not IBrowserView.
Given that, in the Zope 3 world <adapter />'s 'permission' attribute and
<browser:page />'s 'permission' attribute would do the same: Creating a
security checker that protects 'browserDefault', '__call__' and
'publishTraverse' by the specified permission. Or am I missing something?
Currently this is not true for Zope 2. While Five implements Zope 2
specific behavior for <browser:page />'s 'permission' attribute, the
same attribute of <adapter /> is useless in Zope 2.
I can't see a fundamental problem in using the generic adapter directive
for registering browser pages. I just see limited support for the
adapter directive in Zope 2. As long as these issues are not resolved, I
can live with Zope 2 security declarations in add views.
Cheers,
Yuppie
More information about the Zope-CMF
mailing list