utils.py
1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# -*- coding: utf-8 -*-
from django.db.models import Count
from proxy.models import (Revision, Ticket, Wiki,
WikiCollabCount, TicketCollabCount)
from accounts.models import User
def get_wiki_counters():
return {author: count for author, count in
WikiCollabCount.objects.values_list()}
def get_revision_counters():
return {
author: count for author, count in Revision.objects.values_list(
'author'
).annotate(count=Count('author'))
}
def get_ticket_counters():
return {author: count for author, count in
TicketCollabCount.objects.values_list()}
def get_users_counters():
wiki_counters = get_wiki_counters()
revision_counters = get_revision_counters()
ticket_counters = get_ticket_counters()
users_counters = {}
for user in User.objects.annotate(message_count=Count('emails__message')):
users_counters[user.username] = {
'messages': user.message_count,
'wikis': wiki_counters.get(user.username, 0),
'revisions': revision_counters.get(user.username, 0),
'tickets': ticket_counters.get(user.username, 0),
}
return users_counters