def filterTypes(self, out, types, package_name): typesTool = getToolByName(self, 'portal_types') filtered_types = [] for rti in types: t = rti['klass'] name = rti['name'] meta_type = rti['meta_type'] isBaseObject = 0 if IBaseObject.isImplementedByInstancesOf(t): isBaseObject = 1 else: for k in t.__bases__: if IBaseObject.isImplementedByInstancesOf(k): isBaseObject = 1 break if isBaseObject: filtered_types.append(t) else: print >> out, ("%s doesnt implements IBaseObject. " "Possible misconfiguration. " "Check if your class has an " "'__implements__ = IBaseObject' " "(or IBaseContent, or IBaseFolder)" % repr(t)) return filtered_types
def findBaseTypes(klass): bases = [] if hasattr(klass, '__bases__'): for b in klass.__bases__: if IBaseObject.isImplementedByInstancesOf(b): bases.append(className(b)) return bases