# HG changeset patch # User Zachary Auclair # Date 1348187455 14400 # Node ID 6d9b3ade3051f49fb6875e8493a70446cf137664 # Parent 5c1ad3b410e54f73d580eefc20dbff2d75188928 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). diff -r 5c1ad3b410e5 -r 6d9b3ade3051 rhodecode/lib/helpers.py --- a/rhodecode/lib/helpers.py Sun Sep 23 13:04:53 2012 +0200 +++ b/rhodecode/lib/helpers.py Thu Sep 20 20:30:55 2012 -0400 @@ -1000,16 +1000,28 @@ 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 @@ 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 @@ '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 @@ log.error(traceback.format_exc()) pass - return text_ + return newtext def rst(source):