Source code for activemembers.services
from django.db.models import Count, Q
from django.utils import timezone
from activemembers.models import Committee
[docs]def generate_statistics():
"""
Generate statistics about number of members in each committee
:return: Dict with key, value being resp. name, member count of committees.
"""
committees = Committee.active_objects.annotate(
member_count=(
Count(
"members",
filter=(
Q(membergroupmembership__until=None)
| Q(membergroupmembership__until__gte=timezone.now())
),
)
)
)
data = {}
for committee in committees:
data.update({committee.name: committee.member_count})
return data