Пример #1
0
    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
Пример #2
0
 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