From c8e0abb073f793b774559f72630a66a2bd751b2f Mon Sep 17 00:00:00 2001 From: Hugo LEVY-FALK Date: Sun, 11 Mar 2018 22:02:16 +0100 Subject: [PATCH] Inscription d'utilisateurs --- templates/nav_bar.html | 3 ++ .../templates/users/password_reset_mail.html | 14 +++++++ users/templates/users/school.html | 4 ++ users/templates/users/welcome_user.txt | 14 +++++++ users/urls.py | 12 ++++-- users/views.py | 42 ++++++++++++++++++- 6 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 users/templates/users/password_reset_mail.html create mode 100644 users/templates/users/welcome_user.txt diff --git a/templates/nav_bar.html b/templates/nav_bar.html index 7d1ad26..f48ddd9 100644 --- a/templates/nav_bar.html +++ b/templates/nav_bar.html @@ -40,6 +40,9 @@ +
  • + (Mot de passe oublié) +
  • {% endif %} diff --git a/users/templates/users/password_reset_mail.html b/users/templates/users/password_reset_mail.html new file mode 100644 index 0000000..3c51d46 --- /dev/null +++ b/users/templates/users/password_reset_mail.html @@ -0,0 +1,14 @@ +{% load i18n %}{% autoescape off %} +{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %} + +{% trans "Please go to the following page and choose a new password:" %} +{% block reset_link %} +{{ protocol }}://festart.rezometz.org{% url 'users:password-reset-confirm' uidb64=uid token=token %} +{% endblock %} +{% trans "Your username, in case you've forgotten:" %} {{ user.get_username }} + +{% trans "Thanks for using our site!" %} + +{% blocktrans %}The {{ site_name }} team{% endblocktrans %} + +{% endautoescape %} diff --git a/users/templates/users/school.html b/users/templates/users/school.html index 6d10b98..f94f4ae 100644 --- a/users/templates/users/school.html +++ b/users/templates/users/school.html @@ -11,6 +11,10 @@ Inscription validée

    {{school.name}}

    + + + Changer mon mot de passe + Éditer diff --git a/users/templates/users/welcome_user.txt b/users/templates/users/welcome_user.txt new file mode 100644 index 0000000..3313877 --- /dev/null +++ b/users/templates/users/welcome_user.txt @@ -0,0 +1,14 @@ +Bienvenue sur le site d'Il était une fois dans l'Est. + +Vous recevez cet email car vous avez été désigné responsable des productions +vidéos pour votre école. + +Votre identifiant est : {{id}} + +Rendez-vous ici : http://festart.rezometz.org/users/reset pour réinitialiser +votre mot de passe (en utilisant cette adresse email). + +Vous pouvez retrouver l'ensemble des informations sur l'évènement ici : +http://festart.rezometz.org + +L'équipe de Il était une fois dans l'Est. diff --git a/users/urls.py b/users/urls.py index f29190f..30e307e 100644 --- a/users/urls.py +++ b/users/urls.py @@ -1,4 +1,5 @@ from django.urls import path +from django.urls import reverse_lazy from django.contrib.auth import views as auth_views from . import views @@ -26,17 +27,22 @@ urlpatterns = [ ), path( 'password_change/done', - auth_views.PasswordChangeDoneView.as_view(template_name="base.html"), + views.PasswordChangeDoneView.as_view(), name='password-change-done' ), + path( + 'reset', + views.PasswordResetView.as_view(), + name='password-reset' + ), path( 'reset///', - auth_views.PasswordResetConfirmView.as_view(template_name="edit.html"), + auth_views.PasswordResetConfirmView.as_view(template_name="edit.html", success_url=reverse_lazy('users:password-reset-done')), name='password-reset-confirm' ), path( 'reset/done/', - auth_views.PasswordResetCompleteView.as_view(template_name="base.html"), + views.PasswordResetCompleteView.as_view(), name='password-reset-done' ), path( diff --git a/users/views.py b/users/views.py index 3162735..5dea366 100644 --- a/users/views.py +++ b/users/views.py @@ -1,7 +1,10 @@ from django.contrib import messages -from django.urls import reverse +from django.urls import reverse, reverse_lazy +from django.core.mail import send_mail from django.shortcuts import get_object_or_404, redirect, render from django.contrib.admin.views.decorators import staff_member_required +from django.template.loader import render_to_string +from django.contrib.auth import views as auth_views from settings.forms import SelectUserForm from content.models import Category @@ -15,7 +18,14 @@ def create_user(request): user_form = forms.CreateUser(request.POST or None) if user_form.is_valid(): u = user_form.save() - messages.success(request, "L'utilisateur {} {} a bien été créé.".format( + send_mail( + "Bienvenue sur Il était une fois dans l'Est.", + render_to_string("users/welcome_user.txt", {'id':u.username}), + "noreply.festart@rezometz.org", + [u.email], + fail_silently=False + ) + messages.success(request, "L'utilisateur {} {} a bien été créé un mail lui a été envoyé pour réinitialiser son mot de passe.".format( u.first_name, u.last_name)) return redirect(reverse('settings:index')) return render(request, 'edit.html', { @@ -226,3 +236,31 @@ def validate(request, pk): messages.success(request, 'Inscription validée.') return redirect(school.get_absolute_url()) + + +class PasswordChangeDoneView(auth_views.PasswordChangeDoneView): + template_name = "home.html" + + def dispatch(self, *args, **kwargs): + r = super().dispatch(*args, **kwargs) + messages.success(self.request, "Le mot de passe a été changé.") + return r + + +class PasswordResetView(auth_views.PasswordResetView): + template_name = "edit.html" + success_url = reverse_lazy('home') + email_template_name = "users/password_reset_mail.html" + + def form_valid(self, form): + messages.success(self.request, "Un mail pour le changement de mot de passe a été envoyé.") + return super().form_valid(form) + + +class PasswordResetCompleteView(auth_views.PasswordResetCompleteView): + template_name = "home.html" + + def dispatch(self, *args, **kwargs): + r = super().dispatch(*args, **kwargs) + messages.success(self.request, "Votre mot de passe a été réinitialisé.") + return r