forked from beba/foerderbarometer
51 lines
1.7 KiB
Python
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'))
|