Browse Source

Mise en place du mail et la view pour valider

set_password
Yoann Piétri 8 years ago
committed by root
parent
commit
dd672b5cdb
  1. 31
      users/models.py
  2. 13
      users/views.py

31
users/models.py

@ -232,7 +232,6 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
blank=True, blank=True,
null = True null = True
) )
verification_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
USERNAME_FIELD = 'pseudo' USERNAME_FIELD = 'pseudo'
REQUIRED_FIELDS = ['surname', 'email'] REQUIRED_FIELDS = ['surname', 'email']
@ -590,6 +589,36 @@ class User(RevMixin, FieldPermissionModelMixin, AbstractBaseUser,
) )
return return
def send_verification_mail(self, request):
""" Prend en argument un request, envoie un mail de
vérification"""
req = Request()
req.type = Request.EMAIL
req.user = self
req.save()
template = loader.get_template('users/email_verification_request')
context = {
'name': req.user.get_full_name(),
'asso': AssoOption.get_cached_value('name'),
'asso_mail': AssoOption.get_cached_value('contact'),
'site_name': GeneralOption.get_cached_value('site_name'),
'url': request.build_absolute_uri(
reverse('users:process', kwargs={'token': req.token})
),
'expire_in': str(
GeneralOption.get_cached_value('req_expire_hrs')
) + ' heures',
}
send_mail(
'Changement du compte de %(name)s / Account verification for '
'%(name)s' % {'name': AssoOption.get_cached_value('name')},
template.render(context),
GeneralOption.get_cached_value('email_from'),
[req.user.email],
fail_silently=False
)
return
def reset_passwd_mail(self, request): def reset_passwd_mail(self, request):
""" Prend en argument un request, envoie un mail de """ Prend en argument un request, envoie un mail de
réinitialisation de mot de pass """ réinitialisation de mot de pass """

13
users/views.py

@ -113,6 +113,11 @@ def new_user(request):
if user.is_valid(): if user.is_valid():
password = user.cleaned_data['password2'] password = user.cleaned_data['password2']
user = user.save(commit=False) user = user.save(commit=False)
if(OptionalUser.get_cached_value('mail_verification'):
user.send_verification_mail(request)
messages.warning(request, "Un mail pour vérifier l'adresse a été envoyé")
if(OptionalUser.get_cached_value('verification_time')>0):
user.verification_deadline = datetime.datetime.now() + datetime.timedelta(hours=OptionalUser.get_cached_value('verification_time'))
user.save() user.save()
if(password != ""): if(password != ""):
user.set_password(password) user.set_password(password)
@ -953,7 +958,15 @@ def process(request, token):
req = get_object_or_404(valid_reqs, token=token) req = get_object_or_404(valid_reqs, token=token)
if req.type == Request.PASSWD: if req.type == Request.PASSWD:
user = req.user
user.mail_verification = True
user.save()
return process_passwd(request, req) return process_passwd(request, req)
elif req.type == Request.EMAIL:
user = req.user
user.mail_verification = True
user.save()
return redirect(reverse('login'))
else: else:
messages.error(request, "Entrée incorrecte, contactez un admin") messages.error(request, "Entrée incorrecte, contactez un admin")
redirect(reverse('index')) redirect(reverse('index'))

Loading…
Cancel
Save