Mercurial > kallithea
changeset 2865:6d9b3ade3051 beta
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).
author | Zachary Auclair <zach101@gmail.com> |
---|---|
date | Thu, 20 Sep 2012 20:30:55 -0400 |
parents | 5c1ad3b410e5 |
children | 736678a8c881 |
files | rhodecode/lib/helpers.py |
diffstat | 1 files changed, 23 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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):