def __init__(self, aName): if isinstance(aName, CellHandler): return if isinstance(aName, types.StringTypes): self.name = aName self.handlerClass = FG.appConfigInterface("mapCellHandler", (aName,)) if self.handlerClass is False: return if aName.startswith("@"): if self.handlerClass in (None, True): return self.classToNameCache[self.handlerClass] = aName self.nameToClassCache[aName] = self.handlerClass else: self.handlerClass = taTable.cellHandlerTable.get(aName) if self.handlerClass is None: self.handlerClass = self.nameToClassCache.get(aName) elif (issubclass(aName, object)): self.handlerClass = FG.appConfigInterface("mapCellHandler", (aName,)) if self.handlerClass is False: self.name = self.handlerClass self.handlerClass = aName return self.handlerClass = aName try: self.name = taTable.cellHandlerClassToName[aName] return except KeyError: pass self.name = self._nameFromClassCache(aName)
def tailorCellHandlerList(self, accessor, identifier, typeName, metadata): # get dictionary from application exit chDict = FG.appConfigInterface("manageCellHandlers", typeName) # different paths if False, None or dictionary # False - remove default list and return # None - do requested metadata updates and return if chDict is False: self.handlerList = [] return if chDict is None: self._tailorCellHandlersUsingMetadata(accessor, identifier, metadata) self._removeInapplicableCellHandlersFromList(accessor, typeName) return # process .noDefault if chDict.get(".startWithDefaultList") == "no": self.handlerList = [] # 0.9 - type adapter add list # process add and remove lists addList = self._extractCellHandlerList(chDict, "add") self.addHandlers(addList) removeList = self._extractCellHandlerList(chDict, "remove") self.removeHandlers(removeList) # update from metadata if chDict.get(".updateFromMetadata") != "no": permitList = self._extractCellHandlerList(chDict, "permit") addList = metadata.get("%s.addCellHandlers" % identifier, []) if permitList: #pragma: no cover # better tests in 0.9 for request in addList: if chDict.get(request) == "permit": self.addHandler(request) else: self.addHandlers(addList) delList = metadata.get("%s.removeCellHandlers" % identifier, []) self.removeHandlers(delList) # process required and prohibited lists addList = self._extractCellHandlerList(chDict, "require") self.addHandlers(addList) removeList = self._extractCellHandlerList(chDict, "prohibit") self.removeHandlers(removeList) # cross-validate ch and ta self._removeInapplicableCellHandlersFromList(accessor, typeName) return