On 2 May 2010 18:50, mnieper <[email protected]> wrote:
>
>
> Martin Aspeli wrote:
>>
>>> 3) Define an adapter from the IMyFolder interface to a new interface, say
>>> IHasMyItems, which has a method called "myitems". The MyPortlet then
>>> calls
>>> aq_chain and traverses the acquisition chain by hand until it has found
>>> an
>>> object which can be adaptet to a IHasMyItems.
>>
>> I'd do something similar to this, but the adapter sounds superfluous.
>>
>> In the renderer, I'd do:
>>
>> folder = None
>> for parent in aq_chain(aq_inner(self.context)):
>>     if IMyFolder.providedBy(parent):
>>         folder = parent
>>         break
>>
>> if folder is not None:
>>     ...
>>
>> You already have an interface describing the type of object you're
>> looking for, so I'd just use that.
>>
>> Martin
>>
>
> Thanks for the prompt reply, which has helped me a lot, Martin.
>
> So method 3). I agree that writing an adapter may be superfluous. However,
> assume that I have to process the list of IMyItems of IMyFolder before I
> display them in the MyPortlet. Assume as well that MyPortlet is not the only
> piece of code where the result of this processing is used. In this case, I
> guess that a method that does this processing fits best in an adapter like
> IHasMyItems (as this allows my to extend the content folder IMyFolder with
> functionality without deriving a custom class). Or would you propose to use
> a global function instead?

If it's only used for the portlet, I'd just put it into the renderer
class' update method.

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

Reply via email to