103 lines
3.2 KiB
Python
103 lines
3.2 KiB
Python
import logging
|
|
from urllib.parse import urljoin
|
|
|
|
from django.conf import settings
|
|
from django.contrib.sites.models import Site
|
|
from django.core.mail import EmailMessage
|
|
|
|
RENTAL_EMAIL = settings.EMAIL_HOST_USER
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def send_mail_approved(obj):
|
|
subject = f"FET-Verleih: {obj.get_status_display()}"
|
|
total_deposit = obj.calc_total_deposit()
|
|
|
|
# Build URL to contact page
|
|
site = Site.objects.get_current()
|
|
contact_link = urljoin(f"https://{site.domain}", "/kontakt/")
|
|
|
|
# Build email message
|
|
message = (
|
|
f"Hallo {obj.firstname},\n\ndeine Verleihanfrage wurde erfolgreich genehmigt. Für den "
|
|
f"Zeitraum vom {obj.date_start.strftime('%d.%m.%Y')} bis einschließlich "
|
|
f"{obj.date_end.strftime('%d.%m.%Y')} stehen dir folgende Gegenstände zur Verfügung:\n"
|
|
)
|
|
|
|
for item in obj.rentalitems.all():
|
|
message += f"- {item.name}\n"
|
|
|
|
message += (
|
|
f"\nDie Abholung ist am {obj.date_start.strftime('%d.%m.%Y')} während der Beratungszeit "
|
|
f"möglich: {contact_link}\n"
|
|
)
|
|
|
|
if total_deposit > 0:
|
|
message += (
|
|
f"Bitte bring zur Abholung den Gesamtpfand in Höhe von {total_deposit} € in bar mit.\n"
|
|
)
|
|
|
|
message += "\nLiebe Grüße,\ndas Verleih-Team"
|
|
|
|
# Create email
|
|
email = EmailMessage(
|
|
subject, message, from_email=RENTAL_EMAIL, to=[obj.email], cc=[RENTAL_EMAIL]
|
|
)
|
|
|
|
try:
|
|
email.send()
|
|
except Exception as exc:
|
|
logger.info("Failed to send approval email for rental #%s. Error: %s", obj.id, exc)
|
|
|
|
|
|
def send_mail_rejected(obj):
|
|
subject = f"FET-Verleih: {obj.get_status_display()}"
|
|
|
|
# Build email message
|
|
message = (
|
|
f"Hallo {obj.firstname},\n\nleider müssen wir dir mitteilen, dass deine Verleihanfrage für "
|
|
f"den Zeitraum vom {obj.date_start.strftime('%d.%m.%Y')} bis einschließlich "
|
|
f"{obj.date_end.strftime('%d.%m.%Y')} nicht genehmigt werden konnte. Für diesen Zeitraum "
|
|
"waren folgende Gegenstände angefragt:\n"
|
|
)
|
|
|
|
for item in obj.rentalitems.all():
|
|
message += f"- {item.name}\n"
|
|
|
|
message += (
|
|
"\nVielen Dank für dein Verständnis. Bei Fragen oder für alternative Termine kannst du "
|
|
"dich gerne bei uns melden.\n\nLiebe Grüße,\ndas Verleih-Team"
|
|
)
|
|
|
|
# Create email
|
|
email = EmailMessage(
|
|
subject, message, from_email=RENTAL_EMAIL, to=[obj.email], cc=[RENTAL_EMAIL]
|
|
)
|
|
|
|
try:
|
|
email.send()
|
|
except Exception as exc:
|
|
logger.info("Failed to send rejection email for rental #%s. Error: %s", obj.id, exc)
|
|
|
|
|
|
def send_mail_returned(obj):
|
|
subject = f"FET-Verleih: {obj.get_status_display()}"
|
|
|
|
# Build email message
|
|
message = (
|
|
f"Hallo {obj.firstname},\n\n"
|
|
"deine Verleihgegenstände wurden erfolgreich zurückgegeben.\n\n"
|
|
"Liebe Grüße,\n"
|
|
"das Verleih-Team"
|
|
)
|
|
|
|
# Create email
|
|
email = EmailMessage(
|
|
subject, message, from_email=RENTAL_EMAIL, to=[obj.email], cc=[RENTAL_EMAIL]
|
|
)
|
|
|
|
try:
|
|
email.send()
|
|
except Exception as exc:
|
|
logger.info("Failed to send returned email for rental #%s. Error: %s", obj.id, exc)
|