Commits

Zach Auclair  committed 6d9b3ad

Allowing multiple issue servers to be autolinked in the changeset view;
linking is now contingent on issue_server_link, issue_pat and issue_prefix
being defined; multiple servers can be used by specifying a common suffix on all
the above variables, ie ..

issue_server_link_1
issue_pat_1
issue_prefix_1

.. and ..

issue_server_link_other
issue_pat_other
issue_prefix_other

.. would be treated as two distinct servers, but ..

issue_pat_thing

.. would be ignored (since the other two requisite vars aren't present).

This patch is backwards compatible with existing variables (as a suffix
isn't needed).

  • Participants
  • Parent commits 5c1ad3b

Comments (0)

Files changed (1)

File rhodecode/lib/helpers.py

         return ''.join(links)
 
     # urlify changesets - extrac revisions and make link out of them
-    text_ = urlify_changesets(escaper(text_), repository)
+    newtext = urlify_changesets(escaper(text_), repository)
 
     try:
         conf = config['app_conf']
 
-        URL_PAT = re.compile(r'%s' % conf.get('issue_pat'))
+        # allow multiple issue servers to be used
+        valid_indices = [
+            x.group(1) 
+            for x in map(lambda x: re.match(r'issue_pat(.*)', x), conf.keys()) 
+            if x and conf.has_key('issue_server_link'+x.group(1)) and conf.has_key('issue_prefix'+x.group(1))
+            ]
 
-        if URL_PAT:
-            ISSUE_SERVER_LNK = conf.get('issue_server_link')
-            ISSUE_PREFIX = conf.get('issue_prefix')
+        #log.debug('found issue server suffixes ' + ','.join(valid_indices) + ' during valuation of: \n' + newtext)
+
+        for pattern_index in valid_indices:
+            ISSUE_PATTERN = conf.get('issue_pat'+pattern_index)
+            ISSUE_SERVER_LNK = conf.get('issue_server_link'+pattern_index)
+            ISSUE_PREFIX = conf.get('issue_prefix'+pattern_index)
+
+            #log.debug(ISSUE_PATTERN + ' ' + ISSUE_SERVER_LNK + ' ' + ISSUE_PREFIX)
+
+            URL_PAT = re.compile(r'%s' % ISSUE_PATTERN)
 
             def url_func(match_obj):
                 pref = ''
                     url = url.replace('{repo}', repository)
                     repo_name = repository.split(URL_SEP)[-1]
                     url = url.replace('{repo_name}', repo_name)
+
                 return tmpl % {
                      'pref': pref,
                      'cls': 'issue-tracker-link',
                      'serv': ISSUE_SERVER_LNK,
                 }
 
-            newtext = URL_PAT.sub(url_func, text_)
+            newtext = URL_PAT.sub(url_func, newtext)
+            #log.debug('after '+pattern_index+':\n'+newtext)
 
+        # if we actually did something above
+        if valid_indices:
             if link_:
                 # wrap not links into final link => link_
                 newtext = linkify_others(newtext, link_)
         log.error(traceback.format_exc())
         pass
 
-    return text_
+    return newtext
 
 
 def rst(source):