aboutsummaryrefslogtreecommitdiff
path: root/rhodecode
diff options
context:
space:
mode:
Diffstat (limited to 'rhodecode')
-rw-r--r--rhodecode/model/comment.py7
-rwxr-xr-xrhodecode/model/db.py20
2 files changed, 25 insertions, 2 deletions
diff --git a/rhodecode/model/comment.py b/rhodecode/model/comment.py
index 6ff96099..c17a55fa 100644
--- a/rhodecode/model/comment.py
+++ b/rhodecode/model/comment.py
@@ -88,7 +88,6 @@ class ChangesetCommentsModel(BaseModel):
if revision:
cs = repo.scm_instance.get_changeset(revision)
desc = "%s - %s" % (cs.short_id, h.shorter(cs.message, 256))
- author_email = cs.author_email
comment.revision = revision
elif pull_request:
pull_request = self.__get_pull_request(pull_request)
@@ -122,7 +121,11 @@ class ChangesetCommentsModel(BaseModel):
# get the current participants of this changeset
recipients = ChangesetComment.get_users(revision=revision)
# add changeset author if it's in rhodecode system
- recipients += [User.get_by_email(author_email)]
+ cs_author = User.get_from_cs_author(cs.author)
+ if not cs_author:
+ #use repo owner if we cannot extract the author correctly
+ cs_author = repo.user
+ recipients += [cs_author]
email_kwargs = {
'status_change': status_change,
}
diff --git a/rhodecode/model/db.py b/rhodecode/model/db.py
index 7a2924e4..7a188f8f 100755
--- a/rhodecode/model/db.py
+++ b/rhodecode/model/db.py
@@ -454,6 +454,26 @@ class User(Base, BaseModel):
return ret
+ @classmethod
+ def get_from_cs_author(cls, author):
+ """
+ Tries to get User objects out of commit author string
+
+ :param author:
+ """
+ from rhodecode.lib.helpers import email, author_name
+ # Valid email in the attribute passed, see if they're in the system
+ _email = email(author)
+ if _email:
+ user = cls.get_by_email(_email, case_insensitive=True)
+ if user:
+ return user
+ # Maybe we can match by username?
+ _author = author_name(author)
+ user = cls.get_by_username(_author, case_insensitive=True)
+ if user:
+ return user
+
def update_lastlogin(self):
"""Update user lastlogin"""
self.last_login = datetime.datetime.now()