diff --git a/kallithea/controllers/admin/repo_groups.py b/kallithea/controllers/admin/repo_groups.py --- a/kallithea/controllers/admin/repo_groups.py +++ b/kallithea/controllers/admin/repo_groups.py @@ -146,7 +146,7 @@ class RepoGroupsController(BaseControlle "group_name": repo_group_name(repo_gr.group_name, children_groups), "desc": repo_gr.group_description, "repos": repo_count, - "owner": h.person(repo_gr.user.username), + "owner": h.person(repo_gr.user), "action": repo_group_actions(repo_gr.group_id, repo_gr.group_name, repo_count) }) diff --git a/kallithea/lib/helpers.py b/kallithea/lib/helpers.py --- a/kallithea/lib/helpers.py +++ b/kallithea/lib/helpers.py @@ -519,6 +519,8 @@ def email_or_none(author): def person(author, show_attr="username"): + """Find the user identified by 'author', return one of the users attributes, + default to the username attribute, None if there is no user""" # attr to return from fetched user person_getter = lambda usr: getattr(usr, show_attr) diff --git a/kallithea/lib/vcs/utils/__init__.py b/kallithea/lib/vcs/utils/__init__.py --- a/kallithea/lib/vcs/utils/__init__.py +++ b/kallithea/lib/vcs/utils/__init__.py @@ -158,6 +158,8 @@ def author_email(author): Regex taken from http://www.regular-expressions.info/email.html """ + if not author: + return '' import re r = author.find('>') l = author.find('<') @@ -180,9 +182,9 @@ def author_name(author): It'll try to find an email in the author string and just cut it off to get the username """ - + if not author: + return '' if not '@' in author: return author - else: - return author.replace(author_email(author), '').replace('<', '')\ - .replace('>', '').strip() + return author.replace(author_email(author), '').replace('<', '')\ + .replace('>', '').strip() diff --git a/kallithea/model/repo.py b/kallithea/model/repo.py --- a/kallithea/model/repo.py +++ b/kallithea/model/repo.py @@ -241,7 +241,7 @@ class RepoModel(BaseModel): "last_changeset": last_rev(repo.repo_name, cs_cache), "last_rev_raw": cs_cache.get('revision'), "desc": desc(repo.description), - "owner": h.person(repo.user.username), + "owner": h.person(repo.user), "state": state(repo.repo_state), "rss": rss_lnk(repo.repo_name), "atom": atom_lnk(repo.repo_name), @@ -251,7 +251,7 @@ class RepoModel(BaseModel): row.update({ "action": repo_actions(repo.repo_name), "owner": owner_actions(repo.user.user_id, - h.person(repo.user.username)) + h.person(repo.user)) }) repos_data.append(row) diff --git a/kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html b/kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html --- a/kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html +++ b/kallithea/templates/admin/repo_groups/repo_group_edit_advanced.html @@ -7,7 +7,7 @@ (_('Total repositories'), c.repo_group.repositories_recursive_count, ''), (_('Children groups'), c.repo_group.children.count(), ''), (_('Created on'), h.fmt_date(c.repo_group.created_on), ''), - (_('Owner'), h.person(c.repo_group.user.username), '') + (_('Owner'), h.person(c.repo_group.user), '') ] %> %for dt, dd, tt in elems: diff --git a/kallithea/templates/admin/user_groups/user_group_edit_advanced.html b/kallithea/templates/admin/user_groups/user_group_edit_advanced.html --- a/kallithea/templates/admin/user_groups/user_group_edit_advanced.html +++ b/kallithea/templates/admin/user_groups/user_group_edit_advanced.html @@ -5,7 +5,7 @@ elems = [ (_('Members'), len(c.group_members_obj), ''), (_('Created on'), h.fmt_date(c.user_group.created_on), ''), - (_('Owner'), h.person(c.user_group.user.username), '') + (_('Owner'), h.person(c.user_group.user), '') ] %> %for dt, dd, tt in elems: