##// END OF EJS Templates
helpers: optimize slight calls for link_to_user to save some...
marcink -
r253:8089e575 default
parent child Browse files
Show More
@@ -744,6 +744,32 b' def is_svn_without_proxy(repository):'
744 744 return False
745 745
746 746
747 def discover_user(author):
748 """
749 Tries to discover RhodeCode User based on the autho string. Author string
750 is typically `FirstName LastName <email@address.com>`
751 """
752
753 # if author is already an instance use it for extraction
754 if isinstance(author, User):
755 return author
756
757 # Valid email in the attribute passed, see if they're in the system
758 _email = author_email(author)
759 if _email != '':
760 user = User.get_by_email(_email, case_insensitive=True, cache=True)
761 if user is not None:
762 return user
763
764 # Maybe it's a username, we try to extract it and fetch by username ?
765 _author = author_name(author)
766 user = User.get_by_username(_author, case_insensitive=True, cache=True)
767 if user is not None:
768 return user
769
770 return None
771
772
747 773 def email_or_none(author):
748 774 # extract email from the commit string
749 775 _email = author_email(author)
@@ -765,30 +791,13 b' def email_or_none(author):'
765 791 return None
766 792
767 793
768 def discover_user(author):
769 # if author is already an instance use it for extraction
770 if isinstance(author, User):
771 return author
772
773 # Valid email in the attribute passed, see if they're in the system
774 _email = email(author)
775 if _email != '':
776 user = User.get_by_email(_email, case_insensitive=True, cache=True)
777 if user is not None:
778 return user
779
780 # Maybe it's a username?
781 _author = author_name(author)
782 user = User.get_by_username(_author, case_insensitive=True,
783 cache=True)
784 if user is not None:
785 return user
786
787 return None
788
789
790 794 def link_to_user(author, length=0, **kwargs):
791 795 user = discover_user(author)
796 # user can be None, but if we have it already it means we can re-use it
797 # in the person() function, so we save 1 intensive-query
798 if user:
799 author = user
800
792 801 display_person = person(author, 'username_or_name_or_email')
793 802 if length:
794 803 display_person = shorter(display_person, length)
@@ -803,11 +812,9 b' def link_to_user(author, length=0, **kwa'
803 812
804 813
805 814 def person(author, show_attr="username_and_name"):
806 # attr to return from fetched user
807 person_getter = lambda usr: getattr(usr, show_attr)
808 815 user = discover_user(author)
809 816 if user:
810 return person_getter(user)
817 return getattr(user, show_attr)
811 818 else:
812 819 _author = author_name(author)
813 820 _email = email(author)
General Comments 0
You need to be logged in to leave comments. Login now