# HG changeset patch # User Mads Kiilerich # Date 1426029865 -3600 # Node ID 9ecd1d4836cc547718dbcd6b128f82478eaf0fa0 # Parent 9ee018948dcd2d38e44a7a7d748c3c1ae5505526 helpers: introduce user_or_none helper helper Slight cleanup refactoring - will be useful later. diff -r 9ee018948dcd -r 9ecd1d4836cc kallithea/lib/helpers.py --- a/kallithea/lib/helpers.py Wed Mar 11 00:24:25 2015 +0100 +++ b/kallithea/lib/helpers.py Wed Mar 11 00:24:25 2015 +0100 @@ -494,29 +494,34 @@ return _type == 'hg' +def user_or_none(author): + email = author_email(author) + if email is not None: + user = User.get_by_email(email, case_insensitive=True, cache=True) + if user is not None: + return user + + user = User.get_by_username(author_name(author), case_insensitive=True, cache=True) + if user is not None: + return user + + return None + def email_or_none(author): if not author: return None + user = user_or_none(author) + if user is not None: + return user.email # always use main email address - not necessarily the one used to find user + # extract email from the commit string - _email = email(author) - if _email: - # check it against Kallithea database, and use the MAIN email for this - # user - user = User.get_by_email(_email, case_insensitive=True, cache=True) - if user is not None: - return user.email - return _email - - # See if it contains a username we can get an email from - user = User.get_by_username(author_name(author), case_insensitive=True, - cache=True) - if user is not None: - return user.email + email = author_email(author) + if email: + return email # No valid email, not a valid user in the system, none! return None - 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""" @@ -527,22 +532,12 @@ if isinstance(author, User): return person_getter(author) - # Valid email in the attribute passed, see if they're in the system - _email = email(author) - if _email: - user = User.get_by_email(_email, case_insensitive=True, cache=True) - if user is not None: - return person_getter(user) - - # Maybe it's a username? - _author = author_name(author) - user = User.get_by_username(_author, case_insensitive=True, - cache=True) + user = user_or_none(author) if user is not None: return person_getter(user) # Still nothing? Just pass back the author name if any, else the email - return _author or _email + return author_name(author) or email(author) def person_by_id(id_, show_attr="username"): diff -r 9ee018948dcd -r 9ecd1d4836cc kallithea/model/user.py --- a/kallithea/model/user.py Wed Mar 11 00:24:25 2015 +0100 +++ b/kallithea/model/user.py Wed Mar 11 00:24:25 2015 +0100 @@ -347,11 +347,11 @@ raise Exception('You need to pass user_id, api_key or username') dbuser = None - if user_id: + if user_id is not None: dbuser = self.get(user_id) - elif api_key: + elif api_key is not None: dbuser = self.get_by_api_key(api_key) - elif username: + elif username is not None: dbuser = self.get_by_username(username) if dbuser is not None and dbuser.active: