diff options
Diffstat (limited to 'management/commands/sendmails.py')
-rw-r--r-- | management/commands/sendmails.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/management/commands/sendmails.py b/management/commands/sendmails.py new file mode 100644 index 0000000..4e3b663 --- /dev/null +++ b/management/commands/sendmails.py @@ -0,0 +1,33 @@ +from django.core.management.base import BaseCommand, CommandError +from django.core.mail import send_mail +from django.utils import timezone +from django.template import Context, loader + +from edt.models import Group, Subscription, Course +from edt.utils import get_week, group_courses + +import datetime + + +class Command(BaseCommand): + help = "Sends emails to subscribed users" + + def handle(self, *args, **options): + year, week, day = timezone.now().isocalendar() + if day >= 6: + year, week, _ = (timezone.now() + datetime.timedelta(weeks=1)).isocalendar() + + start, end = get_week(year, week) + + subscriptions = Subscription.objects.filter(active=True) + content = {} + for subscription in subscriptions: + if subscription.group.id not in content: + courses = Course.objects.get_courses_for_group(subscription.group, begin__gte=start, begin__lt=end) + grouped_courses = group_courses(courses) + + template = loader.get_template("timetable_email.txt") + context = Context({"subscription": subscription, "courses": grouped_courses, "week": week}) + content[subscription.group.id] = template.render(context) + + # send content |