def traverse(self, name, remaining): try: return self._traverse(name, remaining) except NotFound as e: logger.warning(e.message) resource_path = absolute_path(CONTENT_LAYOUT_DEFAULT_LAYOUT) return DisplayLayoutView(self.context, self.request, resource_path)
def _traverse(self, name, remaining): portal_type = getattr(self.context, 'portal_type', None) if not portal_type: raise NotFound(self.context, name, self.request) types_tool = api.portal.get_tool('portal_types') fti = getattr(types_tool, portal_type, None) if fti is None: raise NotFound(self.context, name, self.request) aliases = fti.getMethodAliases() or {} layout = '++layout++{0:s}'.format(name) resource_path = absolute_path(aliases.get(layout)) if resource_path is None: raise NotFound(self.context, name, self.request) else: return DisplayLayoutView(self.context, self.request, resource_path)