# HG changeset patch # User Marcin Kuzminski # Date 2011-12-08 00:23:11 # Node ID 39b49c999efb327087ba988cbd4ecaa6a018d352 # Parent d09c52be40e0ef1175abf88ff648f5a3bac3e3dd fixes issue #320. - added mapping of commit users into rhodecode users diff --git a/rhodecode/lib/helpers.py b/rhodecode/lib/helpers.py --- a/rhodecode/lib/helpers.py +++ b/rhodecode/lib/helpers.py @@ -38,7 +38,6 @@ from webhelpers.html.tags import _set_in from rhodecode.lib.annotate import annotate_highlight from rhodecode.lib.utils import repo_name_slug from rhodecode.lib import str2bool, safe_unicode, safe_str, get_changeset_safe - from rhodecode.lib.markup_renderer import MarkupRenderer def _reset(name, value=None, id=NotGiven, type="reset", **attrs): @@ -288,15 +287,50 @@ flash = _Flash() #============================================================================== from vcs.utils import author_name, author_email from rhodecode.lib import credentials_filter, age as _age +from rhodecode.model.db import User age = lambda x:_age(x) capitalize = lambda x: x.capitalize() email = author_email -email_or_none = lambda x: email(x) if email(x) != x else None person = lambda x: author_name(x) short_id = lambda x: x[:12] hide_credentials = lambda x: ''.join(credentials_filter(x)) + +def email_or_none(x): + if email(x) != '': + return email(x) + + # See if it contains a username we can get an email from + user = User.get_by_username(author_name(x), case_insensitive=True, + cache=True) + if user is not None: + return user.email + + # No valid email, not a valid user in the system, none! + return None + +def person(x): + # Valid email in the attribute passed, see if they're in the system + + # attr to return from fetched user + person_getter = lambda usr: usr.username + + if email(x) != '': + user = User.get_by_email(email(x), case_insensitive=True, cache=True) + if user is not None: + return person_getter(user) + return email(x) + + # Maybe it's a username? + user = User.get_by_username(author_name(x), case_insensitive=True, + cache=True) + if user is not None: + return person_getter(user) + + # Still nothing? Just pass back the author name then + return author_name(x) + def bool2icon(value): """Returns True/False values represented as small html image of true/false icons diff --git a/rhodecode/templates/changelog/changelog.html b/rhodecode/templates/changelog/changelog.html --- a/rhodecode/templates/changelog/changelog.html +++ b/rhodecode/templates/changelog/changelog.html @@ -54,8 +54,7 @@ ${c.repo_name} ${_('Changelog')} - ${c.r
gravatar
-
${h.person(cs.author)}
- ##${h.email_or_none(cs.author)}
+
${h.person(cs.author)}
${h.link_to(h.wrap_paragraphs(cs.message),h.url('changeset_home',repo_name=c.repo_name,revision=cs.raw_id))}
diff --git a/rhodecode/templates/files/files_annotate.html b/rhodecode/templates/files/files_annotate.html --- a/rhodecode/templates/files/files_annotate.html +++ b/rhodecode/templates/files/files_annotate.html @@ -64,7 +64,7 @@
gravatar
-
${h.person(c.cs.author)}
+
${h.person(c.cs.author)}
${c.file.last_changeset.message}
diff --git a/rhodecode/templates/files/files_browser.html b/rhodecode/templates/files/files_browser.html --- a/rhodecode/templates/files/files_browser.html +++ b/rhodecode/templates/files/files_browser.html @@ -96,7 +96,9 @@ %if node.is_file(): - ${node.last_changeset.author} + + ${h.person(node.last_changeset.author)} + %endif diff --git a/rhodecode/templates/files/files_source.html b/rhodecode/templates/files/files_source.html --- a/rhodecode/templates/files/files_source.html +++ b/rhodecode/templates/files/files_source.html @@ -35,7 +35,7 @@
gravatar
-
${h.person(c.changeset.author)}
+
${h.person(c.changeset.author)}
${c.file.last_changeset.message}