utils.py 1.02 KB
# -*- coding: utf-8 -*-

from django.db.models import Count

from haystack.query import SearchQuerySet

from proxy.models import Revision, Ticket, Wiki
from super_archives.models import Message


def get_counters_to_badge(user):
    # count_revisions = Revision.objects.filter(author=user.username).count()
    # count_tickets = Ticket.objects.filter(author=user.username).count()
    # count_wikis = Wiki.objects.filter(author=user.username).count()
    count_revisions = SearchQuerySet().filter(
        type='changeset',
        author=user.username
    ).count()
    count_tickets = SearchQuerySet().filter(
        type='ticket',
        author=user.username
    ).count()
    count_wikis = SearchQuerySet().filter(
        type='wiki',
        author=user.username
    ).count()
    return dict(
        messages=user.emails.aggregate(Count('message'))['message__count'],
        revisions=count_revisions,
        tickets=count_tickets,
        wikis=count_wikis,
        contributions=count_revisions + count_tickets + count_wikis,
    )