From: Chenxiong Qi <cqi(a)redhat.com>
This gives better performance to get statistics of tasks by user.
---
hub/kojihub.py | 9 +++++++++
www/kojiweb/index.py | 7 ++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/hub/kojihub.py b/hub/kojihub.py
index f794d5d..b0f7e65 100644
--- a/hub/kojihub.py
+++ b/hub/kojihub.py
@@ -9338,6 +9338,15 @@ class RootExports(object):
values=locals(), opts=queryOpts)
return query.iterate()
+ def reportTasksByUser(self):
+ """Report of tasks by user"""
+ fields = ('owner', 'tasks_count')
+ sql = '''
+SELECT owner, COUNT(id) AS tasks_count
+FROM task GROUP BY owner ORDER BY owner'''
+ rows = _multiRow(sql, None, fields)
+ return dict(((str(row['owner']), row['tasks_count']) for row in
rows))
+
class BuildRoot(object):
diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py
index ff15a5f..45a4941 100644
--- a/www/kojiweb/index.py
+++ b/www/kojiweb/index.py
@@ -1986,13 +1986,10 @@ def tasksbyuser(environ, start=None, order='-tasks'):
maxTasks = 1
users = server.listUsers()
+ data = server.reportTasksByUser()
- server.multicall = True
for user in users:
- server.listTasks(opts={'owner': user['id']},
queryOpts={'countOnly': True})
- taskCounts = server.multiCall()
-
- for user, [numTasks] in zip(users, taskCounts):
+ numTasks = data.get(str(user['id']), 0)
user['tasks'] = numTasks
if numTasks > maxTasks:
maxTasks = numTasks
--
1.7.1
Show replies by thread