Example #1
0
 def _get_help_href(self, req):
     if not self.help_opt:
         return None
     link = resource_id = None
     if self.help_opt.startswith('/'):
         # Assume valid URL to arbitrary resource inside
         #   of the current Trac environment.
         link = req.href(self.help_opt)
     if not link and ':' in self.help_opt:
         realm, resource_id = self.help_opt.split(':', 1)
         # Validate realm-like prefix against resource realm list,
         #   but exclude 'wiki' to allow deferred page creation.
         rsys = ResourceSystem(self.env)
         if realm in set(rsys.get_known_realms()) - set('wiki'):
             mgr = rsys.get_resource_manager(realm)
             # Handle optional IResourceManager method gracefully.
             try:
                 if mgr.resource_exists(Resource(realm, resource_id)):
                     link = mgr.get_resource_url(resource_id, req.href)
             except AttributeError:
                 # Assume generic resource URL build rule.
                 link = req.href(realm, resource_id)
     if not link:
         if not resource_id:
             # Assume wiki page name for backwards-compatibility.
             resource_id = self.help_opt
         if '#' in resource_id:
             path, anchor = resource_id.split('#', 1)
             anchor = unicode_quote_plus(anchor, safe="?!~*'()")
             link = '#'.join((req.href.wiki(path), anchor))
         else:
             link = req.href.wiki(resource_id)
     return link
Example #2
0
def resource_from_page(env, page):
    resource_realm = None
    resources = ResourceSystem(env)
    for realm in resources.get_known_realms():
        if page.startswith('/' + realm):
            resource_realm = realm
            break
    if resource_realm is not None:
        return (resource_realm,
                re.sub('/' + resource_realm, '', page).lstrip('/'))
    else:
        return page, None
Example #3
0
def resource_from_page(env, page):
    resource_realm = None
    resources = ResourceSystem(env)
    for realm in resources.get_known_realms():
        if page.startswith('/' + realm):
            resource_realm = realm
            break
    if resource_realm is not None:
        return (resource_realm, re.sub('/' + resource_realm, '',
                                       page).lstrip('/'))
    else:
        return page, None
Example #4
0
 def _get_helppage_link(self, req):
     link = realm = resource_id = None
     if self.helppage_opt.startswith('/'):
         # Assume valid URL to arbitrary resource inside
         #   of the current Trac environment.
         link = req.href(self.helppage_opt)
     if not link and ':' in self.helppage_opt:
         realm, resource_id = self.helppage_opt.split(':', 1)
         # Validate realm-like prefix against resource realm list,
         #   but exclude 'wiki' to allow deferred page creation.
         rsys = ResourceSystem(self.env)
         if realm in set(rsys.get_known_realms()) - set('wiki'):
             mgr = rsys.get_resource_manager(realm)
             # Handle optional IResourceManager method gracefully.
             try:
                 if mgr.resource_exists(Resource(realm, resource_id)):
                     link = mgr.get_resource_url(resource_id, req.href)
             except AttributeError:
                 # Assume generic resource URL build rule.
                 link = req.href(realm, resource_id)
     if not link:
         if not resource_id:
             # Assume wiki page name for backwards-compatibility.
             resource_id = self.helppage_opt
         # Preserve anchor without 'path_safe' arg (since Trac 0.12.2dev).
         if '#' in resource_id:
             path, anchor = resource_id.split('#', 1)
         else:
             anchor = None
             path = resource_id
         if hasattr(unicode_quote_plus, "safe"):
             # Use method for query string quoting (since Trac 0.13dev).
             anchor = unicode_quote_plus(anchor, safe="?!~*'()")
         else:
             anchor = unicode_quote_plus(anchor)
         link = '#'.join([req.href.wiki(path), anchor])
     return link