This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
authentic2-formiris/src/authentic2_formiris/views.py

54 lines
2.0 KiB
Python

import logging
from datetime import timedelta
from django.shortcuts import render
from django.contrib import messages
from django.utils.translation import ugettext as _
from django.utils.timezone import now
from authentic2.utils import continue_to_next_url, redirect
from . import models, forms
__ALL_ = ['index', 'validate']
def index(request):
logger = logging.getLogger(__name__)
try:
restriction = models.ProfileUpdate.objects.get(user=request.user)
except models.ProfileUpdate:
return continue_to_next_url(request)
if restriction.updated is not None and \
(now() - restriction.updated) >= timedelta(days=7):
logger.info(u'user blocked because its profile update has not been '
'validated in %s days', (now() - restriction.updated).days)
if request.method == 'POST':
restriction.send_mail(request)
logger.info('profile update validation email resent')
messages.info(request, _('Validation mail sent again'))
return render(request, 'authentic2_formiris/timeout.html')
if request.method == 'POST':
form = forms.UpdateProfileForm(data=request.POST, instance=restriction,
request=request)
if form.is_valid():
logger.info(u'profile updated, waiting for validation')
form.save()
return continue_to_next_url(request)
else:
form = forms.UpdateProfileForm(instance=restriction, request=request)
return render(request, 'authentic2_formiris/index.html', {'form': form})
def validate(request, token):
logger = logging.getLogger(__name__)
try:
pu = models.ProfileUpdate.objects.get(token=token)
pu.validate()
except models.ProfileUpdate.DoesNotExist:
messages.info(request, _('Dead link, email not validated'))
else:
logger.info(u'profile update email %s validated', pu.email)
messages.info(request, _('Email validated'))
return redirect(request, 'auth_homepage')