feat: Make account activation use html e-mail
This commit is contained in:
29
src/fellchensammlung/registration_views.py
Normal file
29
src/fellchensammlung/registration_views.py
Normal file
@@ -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)
|
@@ -0,0 +1,24 @@
|
|||||||
|
{% extends "fellchensammlung/mail/base.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
{% block title %}
|
||||||
|
{{ site.name }}: {% trans "Account aktivieren" %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<p>
|
||||||
|
{% trans 'Hier ist dein Aktivierungs-Key. Mit diesem kannst du deinen Account freischalten.' %}
|
||||||
|
</p>
|
||||||
|
<code>
|
||||||
|
{{ activation_key }}
|
||||||
|
</code>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% trans "Öffne den folgenden link im Browser und gib den Aktivierungs-Key dort ein" %}
|
||||||
|
</p>
|
||||||
|
<a href="https://{{ site.domain }}{% url 'django_registration_activate' %}"
|
||||||
|
class="cta-button">{% translate 'Jetzt aktivieren' %}</a>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
{% blocktrans %}Der Link ist für {{ expiration_days }} Tage gültig.{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
{% endblock %}
|
@@ -1,10 +1,9 @@
|
|||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from django_registration.backends.activation.views import RegistrationView
|
|
||||||
|
|
||||||
from .forms import CustomRegistrationForm
|
from .forms import CustomRegistrationForm
|
||||||
from .feeds import LatestAdoptionNoticesFeed
|
from .feeds import LatestAdoptionNoticesFeed
|
||||||
|
|
||||||
from . import views
|
from . import views, registration_views
|
||||||
from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView
|
from drf_spectacular.views import SpectacularAPIView, SpectacularRedocView, SpectacularSwaggerView
|
||||||
|
|
||||||
from django.contrib.sitemaps.views import sitemap
|
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('user/me/export/', views.export_own_profile, name='user-me-export'),
|
||||||
|
|
||||||
path('accounts/register/',
|
path('accounts/register/',
|
||||||
RegistrationView.as_view(
|
registration_views.HTMLMailRegistrationView.as_view(
|
||||||
form_class=CustomRegistrationForm
|
form_class=CustomRegistrationForm,
|
||||||
|
email_body_template="fellchensammlung/mail/activation_email.html",
|
||||||
),
|
),
|
||||||
name='django_registration_register',
|
name='django_registration_register',
|
||||||
),
|
),
|
||||||
|
@@ -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 %}
|
|
Reference in New Issue
Block a user