diff --git a/rhodecode/lib/helpers.py b/rhodecode/lib/helpers.py --- a/rhodecode/lib/helpers.py +++ b/rhodecode/lib/helpers.py @@ -1000,16 +1000,28 @@ def urlify_commit(text_, repository=None 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)) + ] + + #log.debug('found issue server suffixes ' + ','.join(valid_indices) + ' during valuation of: \n' + newtext) - if URL_PAT: - ISSUE_SERVER_LNK = conf.get('issue_server_link') - ISSUE_PREFIX = conf.get('issue_prefix') + 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 = '' @@ -1027,6 +1039,7 @@ def urlify_commit(text_, repository=None 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', @@ -1036,8 +1049,11 @@ def urlify_commit(text_, repository=None '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_) @@ -1047,7 +1063,7 @@ def urlify_commit(text_, repository=None log.error(traceback.format_exc()) pass - return text_ + return newtext def rst(source):