diff --git a/src/fellchensammlung/registration_views.py b/src/fellchensammlung/registration_views.py new file mode 100644 index 0000000..99da41f --- /dev/null +++ b/src/fellchensammlung/registration_views.py @@ -0,0 +1,29 @@ +from django.utils.html import strip_tags +from django_registration.backends.activation.views import RegistrationView +from django.core.mail import EmailMultiAlternatives +from django.template.loader import render_to_string +from django.conf import settings + + +class HTMLMailRegistrationView(RegistrationView): + def send_activation_email(self, user): + """ + overwrites the function in django registration + """ + activation_key = self.get_activation_key(user) + context = self.get_email_context(activation_key) + context["user"] = user + subject = render_to_string( + template_name=self.email_subject_template, + context=context, + request=self.request, + ) + # Force subject to a single line to avoid header-injection issues. + subject = "".join(subject.splitlines()) + message = render_to_string( + template_name=self.email_body_template, + context=context, + request=self.request, + ) + plain_message = strip_tags(message) + user.email_user(subject, plain_message, settings.DEFAULT_FROM_EMAIL, html_message=message) diff --git a/src/fellchensammlung/templates/fellchensammlung/mail/activation_email.html b/src/fellchensammlung/templates/fellchensammlung/mail/activation_email.html new file mode 100644 index 0000000..a5694b6 --- /dev/null +++ b/src/fellchensammlung/templates/fellchensammlung/mail/activation_email.html @@ -0,0 +1,24 @@ +{% extends "fellchensammlung/mail/base.html" %} +{% load i18n %} +{% block title %} + {{ site.name }}: {% trans "Account aktivieren" %} +{% endblock %} + +{% block content %} +

+ {% trans 'Hier ist dein Aktivierungs-Key. Mit diesem kannst du deinen Account freischalten.' %} +

+ + {{ activation_key }} + + +

+ {% trans "Öffne den folgenden link im Browser und gib den Aktivierungs-Key dort ein" %} +

+ {% translate 'Jetzt aktivieren' %} + +

+ {% blocktrans %}Der Link ist für {{ expiration_days }} Tage gültig.{% endblocktrans %} +

+{% endblock %} \ No newline at end of file diff --git a/src/fellchensammlung/urls.py b/src/fellchensammlung/urls.py index 9c5a3c9..428a1d1 100644 --- a/src/fellchensammlung/urls.py +++ b/src/fellchensammlung/urls.py @@ -1,10 +1,9 @@ from django.urls import path, include -from django_registration.backends.activation.views import RegistrationView from .forms import CustomRegistrationForm from .feeds import LatestAdoptionNoticesFeed -from . import views +from . import views, registration_views from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView from django.contrib.sitemaps.views import sitemap @@ -79,8 +78,9 @@ urlpatterns = [ path('user/me/export/', views.export_own_profile, name='user-me-export'), path('accounts/register/', - RegistrationView.as_view( - form_class=CustomRegistrationForm + registration_views.HTMLMailRegistrationView.as_view( + form_class=CustomRegistrationForm, + email_body_template="fellchensammlung/mail/activation_email.html", ), name='django_registration_register', ), diff --git a/src/templates/django_registration/activation_email_body.txt b/src/templates/django_registration/activation_email_body.txt deleted file mode 100644 index 22d1aa9..0000000 --- a/src/templates/django_registration/activation_email_body.txt +++ /dev/null @@ -1,10 +0,0 @@ -{% load i18n %} -{{ site.name }}: {% trans "Account aktivieren" %} - -{% trans 'Hier ist dein Aktivierungs-Key. Mit diesem kannst du deinen Account freischalten.' %} -{{ activation_key }} - -{% trans "Öffne den folgenden link im Browser und gib den Aktivierungs-Key dort ein" %}: -https://{{ site.domain }}{% url 'django_registration_activate' %} - -{% blocktrans %}Der Link ist für {{ expiration_days }} Tage gültig.{% endblocktrans %} \ No newline at end of file