From 8fe2008c7c484b7f2f53790906b3b7c3c2401983 Mon Sep 17 00:00:00 2001 From: nanoy Date: Mon, 23 Sep 2019 14:45:52 +0200 Subject: [PATCH] Init password --- users/models.py | 3 +++ users/templates/users/welcome_email.html | 15 +++++++++++ users/templates/users/welcome_email.txt | 11 ++++++++ users/views.py | 32 ++++++++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 users/templates/users/welcome_email.html create mode 100644 users/templates/users/welcome_email.txt diff --git a/users/models.py b/users/models.py index 080b812..a3e8310 100644 --- a/users/models.py +++ b/users/models.py @@ -7,6 +7,9 @@ from simple_history.models import HistoricalRecords from preferences.models import PaymentMethod, Cotisation from gestion.models import ConsumptionHistory + +User._meta.get_field('email')._unique = True + class School(models.Model): """ Stores school. diff --git a/users/templates/users/welcome_email.html b/users/templates/users/welcome_email.html new file mode 100644 index 0000000..8c7c420 --- /dev/null +++ b/users/templates/users/welcome_email.html @@ -0,0 +1,15 @@ +{% autoescape off %} +Bonjour {{user.username}},
+ +Vous venez de créer votre compte sur le logiciel de gestion de l'association Coopé Technopôle Metz. Pour finir vous adhésion à l'association, vous devez + + +Vous pouvez acceder à votre compte sur {{protocol}}://{{domain}} après avoir activé votre mot de passe avec le lien suivant :
+ +{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}

+ +Le Staff Coopé Technopôle Metz +{% endautoescape %} \ No newline at end of file diff --git a/users/templates/users/welcome_email.txt b/users/templates/users/welcome_email.txt new file mode 100644 index 0000000..c2ffdb1 --- /dev/null +++ b/users/templates/users/welcome_email.txt @@ -0,0 +1,11 @@ +Bonjour {{user.username}}, + +Vous venez de créer votre compte sur le logiciel de gestion de l'association Coopé Technopôle Metz. Pour finir vous adhésion à l'association, vous devez +- lire et accepter les statuts et le règlement intérieur (disponibles en pièces jointes), +- vous acquittez d'une cotisation auprès de l'un de nos membres actifs. + +Vous pouvez acceder à votre compte sur {{procotol}}://{{domain}} après avoir activé votre mot de passe avec le lien suivant : + +{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} + +Le Staff Coopé Technopôle Metz \ No newline at end of file diff --git a/users/views.py b/users/views.py index d5f9c6c..a2a8c20 100644 --- a/users/views.py +++ b/users/views.py @@ -2,14 +2,21 @@ from django.shortcuts import render, get_object_or_404, redirect from django.urls import reverse from django.contrib.auth.models import User, Group, Permission from django.contrib.auth import authenticate, login, logout +from django.contrib.auth.tokens import default_token_generator +from django.utils.http import urlsafe_base64_encode from django.contrib import messages from django.db.models import Q from django.http import HttpResponse, HttpResponseRedirect from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.core.mail import EmailMultiAlternatives +from django.template.loader import get_template +from django.template import Context from django.contrib.auth.decorators import login_required, permission_required from django.forms.models import model_to_dict from django.utils import timezone from django.conf import settings +from django.contrib.sites.shortcuts import get_current_site +from django.utils.encoding import force_bytes import simplejson as json from datetime import datetime, timedelta @@ -23,6 +30,7 @@ from coopeV3.acl import admin_required, superuser_required, self_or_has_perm, ac from .models import CotisationHistory, WhiteListHistory, School from .forms import CreateUserForm, LoginForm, CreateGroupForm, EditGroupForm, SelectUserForm, GroupsEditForm, EditPasswordForm, addCotisationHistoryForm, addCotisationHistoryForm, addWhiteListHistoryForm, SelectNonAdminUserForm, SelectNonSuperUserForm, SchoolForm, ExportForm from gestion.models import Reload, Consumption, ConsumptionHistory, MenuHistory +from preferences.models import GeneralPreferences @active_required def loginView(request): @@ -169,6 +177,30 @@ def createUser(request): user.save() user.profile.school = form.cleaned_data['school'] user.save() + uid = urlsafe_base64_encode(force_bytes(user.pk)).decode('UTF-8') + print(uid) + token = default_token_generator.make_token(user) + plaintext = get_template('users/welcome_email.txt') + htmly = get_template('users/welcome_email.html') + context = {'user': user, 'uid': uid, 'token': token, 'protocol': "http", 'domain': get_current_site(request).name} + text_content = plaintext.render(context) + html_content = htmly.render(context) + email = EmailMultiAlternatives( + "Bienvenue à l'association Coopé Technopôle Metz", + text_content, + "Coopé Technopôle Metz ", + [user.email], + reply_to=["coopemetz@gmail.com"] + ) + email.attach_alternative(html_content, "text/html") + gp,_ = GeneralPreferences.objects.get_or_create(pk=1) + if gp.statutes: + #email.attach("statuts.pdf", gp.statutes.read(), "application/pdf") + pass + if gp.rules: + #email.attach("ri.pdf", gp.rules.read(), "application/pdf") + pass + email.send() messages.success(request, "L'utilisateur a bien été créé") return redirect(reverse('users:profile', kwargs={'pk':user.pk})) return render(request, "form.html", {"form_entete": "Gestion des utilisateurs", "form":form, "form_title":"Création d'un nouvel utilisateur", "form_button":"Créer mon compte", "form_button_icon": "user-plus", 'extra_html': 'En cliquant sur le bouton "Créer mon compte", vous :
  • attestez sur l\'honneur que les informations fournies à l\'association Coopé Technopôle Metz sont correctes et que vous n\'avez jamais été enregistré dans l\'association sous un autre nom / pseudonyme
  • joignez l\'association de votre plein gré
  • vous engagez à respecter les statuts et le réglement intérieur de l\'association (envoyés par mail)
  • reconnaissez le but de l\'assocation Coopé Technopôle Metz et vous attestez avoir pris conaissances des droits et des devoirs des membres de l\'association
  • consentez à ce que les données fournies à l\'association, ainsi que vos autres données de compte (débit, crédit, solde et historique des transactions) soient stockées dans le logiciel de gestion et accessibles par tous les membres actifs de l\'association, en particulier par le comité de direction
'})