##// END OF EJS Templates
model: simplify how get_commits_stats task group on author...
Mads Kiilerich -
r8595:4a18e6bf default
parent child Browse files
Show More
@@ -40,11 +40,10 b' import celery.utils.log'
40 40 from tg import config
41 41
42 42 import kallithea
43 import kallithea.lib.helpers as h
44 43 from kallithea.lib import celerylib, conf, ext_json, hooks
45 44 from kallithea.lib.indexers.daemon import WhooshIndexingDaemon
46 45 from kallithea.lib.utils2 import asbool, ascii_bytes
47 from kallithea.lib.vcs.utils import author_email
46 from kallithea.lib.vcs.utils import author_email, author_name
48 47 from kallithea.model import db, repo, userlog
49 48
50 49
@@ -66,6 +65,19 b' def whoosh_index(repo_location, full_ind'
66 65 .run(full_index=full_index)
67 66
68 67
68 def _author_username(author):
69 """Return the username of the user identified by the email part of the 'author' string,
70 default to the name or email.
71 Kind of similar to h.person() ."""
72 email = author_email(author)
73 if email:
74 user = db.User.get_by_email(email)
75 if user is not None:
76 return user.username
77 # Still nothing? Just pass back the author name if any, else the email
78 return author_name(author) or email
79
80
69 81 @celerylib.task
70 82 @celerylib.dbsession
71 83 def get_commits_stats(repo_name, ts_min_y, ts_max_y, recurse_limit=100):
@@ -124,13 +136,19 b' def get_commits_stats(repo_name, ts_min_'
124 136 log.debug('Getting revisions from %s to %s',
125 137 last_rev, last_rev + parse_limit
126 138 )
139 usernames_cache = {}
127 140 for cs in scm_repo[last_rev:last_rev + parse_limit]:
128 141 log.debug('parsing %s', cs)
129 142 last_cs = cs # remember last parsed changeset
130 143 tt = cs.date.timetuple()
131 144 k = mktime(tt[:3] + (0, 0, 0, 0, 0, 0))
132 145
133 username = h.person(cs.author)
146 # get username from author - similar to what h.person does
147 username = usernames_cache.get(cs.author)
148 if username is None:
149 username = _author_username(cs.author)
150 usernames_cache[cs.author] = username
151
134 152 if username in co_day_auth_aggr:
135 153 try:
136 154 l = [timegetter(x) for x in
@@ -158,7 +158,6 b' known_violations = ['
158 158 ('kallithea.lib.utils', 'kallithea.model'), # clean up utils
159 159 ('kallithea.lib.utils', 'kallithea.model.db'),
160 160 ('kallithea.lib.utils', 'kallithea.model.scm'),
161 ('kallithea.model.async_tasks', 'kallithea.lib.helpers'),
162 161 ('kallithea.model.async_tasks', 'kallithea.lib.hooks'),
163 162 ('kallithea.model.async_tasks', 'kallithea.lib.indexers'),
164 163 ('kallithea.model.async_tasks', 'kallithea.model'),
General Comments 0
You need to be logged in to leave comments. Login now