let ExternalSourceInfo delegate to a corresponding adapter on the 'adapted()' object when retrieving external identifier

This commit is contained in:
Helmut Merz 2011-11-17 11:19:56 +01:00
parent 1b62d9948c
commit 6b6ee7024d

View file

@ -1,5 +1,5 @@
#
# Copyright (c) 2007 Helmut Merz helmutm@cy55.de
# Copyright (c) 2011 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -18,8 +18,6 @@
"""
Managing information form objects provided by external sources, e.g. loops.agent.
$Id$
"""
from persistent.mapping import PersistentMapping
@ -27,6 +25,7 @@ from zope import interface, component
from zope.interface import implements
from zope.component import adapts
from loops.common import adapted
from loops.interfaces import ILoopsObject
from loops.integrator.interfaces import IExternalSourceInfo
@ -46,6 +45,13 @@ class ExternalSourceInfo(object):
return getattr(self.context, sourceInfoAttrName, PersistentMapping())
def getExternalIdentifier(self):
# first try to find adapter on adapted concept or resource
adapted = adapted(self.context)
if adapted != self.context:
adaptedSourceInfo = IExternalSourceInfo(adapted, None)
if adaptedSourceInfo is not None:
return adaptedSourceInfo.getExternalIdentifier()
# otherweise use stored external identifier
return self.getSourceInfo().get('externalIdentifier')
def setExternalIdentifier(self, value):
info = self.getSourceInfo()