rendered paste bodyIndex: Products/Archetypes/ArchetypeTool.py===================================================================--- Products/Archetypes/ArchetypeTool.py (révision 12078)+++ Products/Archetypes/ArchetypeTool.py (copie de travail)@@ -49,6 +49,13 @@ from ZODB.POSException import ConflictError import transaction ++def interface_implementedby(iface, obj):+ try:+ return iface.isImplementedByInstancesOf(obj)+ except:+ return iface.implementedBy(obj)+ class BoundPageTemplateFile(PageTemplateFile): def __init__(self, *args, **kw):@@ -233,16 +240,16 @@ if hasattr(klass, 'immediate_view'): fti[0]['immediate_view'] = klass.immediate_view - if not IReferenceable.isImplementedByInstancesOf(klass):+ if not interface_implementedby(IReferenceable, klass): refs = findDict(fti[0]['actions'], 'id', 'references') refs['visible'] = False - if not IExtensibleMetadata.isImplementedByInstancesOf(klass):+ if not interface_implementedby(IExtensibleMetadata, klass): refs = findDict(fti[0]['actions'], 'id', 'metadata') refs['visible'] = False # Set folder_listing to 'view' if the class implements ITemplateMixin- if not ITemplateMixin.isImplementedByInstancesOf(klass):+ if not interface_implementedby(ITemplateMixin, klass): actions = [] for action in fti[0]['actions']: if action['id'] != 'folderlisting':@@ -664,7 +671,7 @@ if isinstance(type, dict) and type.has_key('klass'): type = type['klass'] for iface in interfaces:- res = iface.isImplementedByInstancesOf(type)+ res = interface_implementedby(iface, type) if res: return True return False@@ -702,7 +709,7 @@ for data in listTypes(): klass = data['klass'] for iface in ifaces:- if iface.isImplementedByInstancesOf(klass):+ if interface_implementedby(iface, klass): ti = pt.getTypeInfo(data['portal_type']) if ti is not None: value.append(ti)