Thanks to Thierry Florac for pointing in the right direction:
Thierry Florac wrote:
Well, not absolutely sure but the problem may come that "source"
attribute is automatically defined as a 'simple' list (see introspector
to be sure), and not as a persistent one ; as a list is a mutable
object, changing one of it's attributes or adding/removing an item
doesn't flag the list as modified "from the persistent object point of
view", so it isn't stored into the ZODB when the transaction is
So you may have two solutions to handle this in the "removeSource"
1. sources = self.source
self.source = sources
self._p_changed = True
Zope3-users mailing list