Hi,

I was wondering what the best approach to BrowserViews is for 3rd
party developers of Plone Products.

I saw some discussion on lists, but could not find a definitive
answer, if there is one.

The main differences I am aware of are the security and the use of
context, both of which have to do with Acquisition.


Inherit from object
-------------------

    class MyView(object):
        def __init__(self, context, request):
            self.context = context
            self.request = request

The view is not Acquisition wrapped, which means that any permission
you set in the configure.zcml is ignored and everyone can see this
view, right?

You define your own __init__() so you can handle the context anyway you
please.


Inherit from Five
-----------------

    from Products.Five.browser import BrowserView
    class MyView(BrowserView):

The view is Acquisition wrapped, so Zope security kicks in, which is
probably good.

If you do not overwrite the __init__() you can use the context with
self.context.


Inherit from Plone
------------------

    from Products.CMFPlone import utils
    class MyView(utils.BrowserView):

Acquisition wrapped, same as Five.

But in the __init__() of this BrowserView there is the line:

    self.context = [context]

So you cannot use self.context in your code like you would do in the
other cases, but you have to use this:

    context = utils.context(self)

This is the only thing that is different from the Five BrowserView.
All the browser views in CMFPlone/browser use this.


Should developers of Plone products in the collective care about this?
Is it better that everyone uses this BrowserView from CMFPlone.utils?


I am still looking at product compatibility with Plone 2.5.  Would the
recommendation be different with Plone 3.0?

Thanks,

-- 
Maurits van Rees | http://maurits.vanrees.org/ [NL]
            Work | http://zestsoftware.nl/
"Do not worry about your difficulties in computers,
 I can assure you mine are still greater."


_______________________________________________
Product-Developers mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/product-developers

Reply via email to