foerderbarometer/input/management/commands/sendmails.py

51 lines
1.7 KiB
Python

from datetime import date, timedelta
from django.core.management.base import BaseCommand, CommandError
from django.template.loader import get_template
from django.core.mail import send_mail, BadHeaderError
from input.models import Project
from input.settings import URLPREFIX, IF_EMAIL
class Command(BaseCommand):
''' mails will be send here:
- two weeks after confirmation of support for volunteer (/extern) send link
with surveylink
- same for HonoraryCertificate and accreditation (/intern)
- travel: mail 3 weeks after end of project.
- assumed end of project (/project) reached: mail to IF, link to project-editpage
'''
help = '''This command sends mail with some links to the database or to the survey
after some amount of time.'''
def handle(self, *args, **options):
# get all projects which ended 3 weeks ago
old = Project.objects.filter(end__lt = date.today() - timedelta(days=21))\
.exclude(end_mail_send = True)
print(old)
mail_template = get_template('input/if_end_of_project.txt')
for project in old:
context = {'project': project}
context['URLPREFIX'] = URLPREFIX
print(context)
try:
send_mail('Projektende erreicht',
mail_template.render(context),
IF_EMAIL,
[IF_EMAIL],
fail_silently=False)
project.end_mail_send = True
project.save()
except BadHeaderError:
return HttpResponse('Invalid header found.')
self.stdout.write(self.style.SUCCESS('sendmails custom command executed'))