On Sat, Apr 11, 2009 at 06:37:18PM +0100, Chris Withers wrote:
> Hi All,
> Suppose I have the following:
> a = Folder()
> b = Folder()
> c = Folder()
> a.b = b
> a.c = c
> What's the canonical way of registering a view on b that is different to 
> a view of the same name on a, and ditto with c?

Marker interfaces.

  alsoProvides(b, IMyVerySpecialFolder)
  alsoProvides(c, ISomeOtherKindOfAVerySpecialFolder)

  # alternatively, subclass Folder, make it implement those marker
  # interfaces, then make b and c instances of your folder subclasses.

Or you could hook up a custom traverser (i.e. an adapter on
(ISomeInterfaceDistinguishingAFromAllOtherFolders, IBrowserRequests) to
IBrowserPublisher) and do magic in its publishTraverse (maybe wrap the
subfolders 'b' and 'c' in some kind of proxies that provide interfaces).
Handwave, handwave.  I do not recommend this way.

Marius Gedminas
http://pov.lt/ -- Zope 3 consulting and development

Attachment: signature.asc
Description: Digital signature

Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope )

Reply via email to