def select(self, url, ignore_resolve_error=False): try: resolve_value = resolve2(url) except: resolve_value = None if not resolve_value: if not ignore_resolve_error and (hasattr(self.req, 'xml_menu_ignore_resolve_error') and not self.req.xml_menu_ignore_resolve_error): raise Exception("xml_menu: can't resolve view for select current menu item, from URL\nURL: %s" % url) else: return False ret, args, view_kwargs = resolve_value url_names = None if hasattr(ret, '_callback_str'): url_view_name = ret._callback_str elif hasattr(ret, '_callback') and callable(ret._callback): if hasattr(ret._callback, "xml_menu__selected_url_names"): url_names = ret._callback.xml_menu__selected_url_names() url_view_name = "%s.%s" % (type(ret._callback).__module__,type(ret._callback).__name__) else: raise Exception("Can not connect to URL with view\nURL: %s" % url) for item in self.root_item: if item.select(url_names, url_view_name, view_kwargs): return True return False
def can_access(self): #find linked object resolve_value = resolve2(self.get_absolute_url()) if resolve_value: ret, args, view_kwargs = resolve_value if hasattr(ret, '_callback') and callable(ret._callback) and hasattr(ret._callback, "xml_menu__can_access"): return ret._callback.xml_menu__can_access(self.req.user) return True