You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/mailer/management/commands/notify_active.py

49 lines
2.1 KiB
Python

from django.core.management.base import BaseCommand
from mailer.models import Message
from members.models import Member, annotate_activity_score
from django.db.models import Q
from mailer.mailutils import mail_root, send
import re
CONGRATULATE_MEMBERS_MAX = 10
SENDING_ADDRESS = mail_root
class Command(BaseCommand):
help = 'Congratulates the most active members'
requires_system_checks = False
def handle(self, *args, **options):
qs = annotate_activity_score(Member.objects.all())\
.order_by('_activity_score')[:CONGRATULATE_MEMBERS_MAX]
for position, member in enumerate(qs):
positiontext = "{}. ".format(position + 1) if position > 0 else ""
score = member._activity_score
if score < 5:
level = 1
elif score >= 5 and score < 10:
level = 2
elif score >= 10 and score < 20:
level = 3
elif score >= 20 and score < 30:
level = 4
else:
level = 5
content = "Hallo {}!\n\n"\
"Herzlichen Glückwunsch, du hast im letzten Jahr zu den {} aktivsten "\
"Mitgliedern der JDAV Ludwigsburg gehört! Um genau zu sein beträgt "\
"dein Aktivitäts Wert "\
"des letzten Jahres {} Punkte. Das entspricht {} Kletterer*innen. "\
"Damit warst du im letzten Jahr "\
"das {}aktivste Mitglied der JDAV Ludwigsburg.\n\n"\
"Auf ein weiteres aktives Jahr in der JDAV Ludwigsburg\n"\
"Dein*e Jugendreferent*in".format(member.prename,
CONGRATULATE_MEMBERS_MAX,
score,
level,
positiontext)
send("Herzlichen Glückwunsch {}".format(member.prename),
content, SENDING_ADDRESS, [member.email],
reply_to=["jugendreferent@jdav-ludwigsburgs.de"])