forked from DGNum/gestioCOF
Meilleure inscription des extés
Lors de la création d'un compte exté via la vue `/registration` (i.e. compte non associé à un clipper), deux champs sont ajoutés au formulaire pour la création d'un mot de passe. Il est toujours possible de changer ce mot de passe via l'admin s'il est perdu par l'utilisateur.
This commit is contained in:
parent
12a4b8efa7
commit
5b0b60fadb
2 changed files with 40 additions and 14 deletions
|
@ -8,7 +8,7 @@ from django import forms
|
|||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib.auth.models import User
|
||||
from django.forms.widgets import RadioSelect, CheckboxSelectMultiple
|
||||
from django.forms.formsets import BaseFormSet
|
||||
from django.forms.formsets import BaseFormSet, formset_factory
|
||||
from django.db.models import Max
|
||||
|
||||
from gestioncof.models import CofProfile, EventCommentValue, \
|
||||
|
@ -215,6 +215,32 @@ class RegistrationUserForm(forms.ModelForm):
|
|||
fields = ("username", "first_name", "last_name", "email")
|
||||
|
||||
|
||||
class RegistrationPassUserForm(RegistrationUserForm):
|
||||
"""
|
||||
Formulaire pour changer le mot de passe d'un utilisateur.
|
||||
"""
|
||||
password1 = forms.CharField(label=_('Mot de passe'),
|
||||
widget=forms.PasswordInput)
|
||||
password2 = forms.CharField(label=_('Confirmation du mot de passe'),
|
||||
widget=forms.PasswordInput)
|
||||
|
||||
def clean_password2(self):
|
||||
pass1 = self.cleaned_data['password1']
|
||||
pass2 = self.cleaned_data['password2']
|
||||
if pass1 and pass2:
|
||||
if pass1 != pass2:
|
||||
raise forms.ValidationError(_('Mots de passe non identiques.'))
|
||||
return pass2
|
||||
|
||||
def save(self, commit=True, *args, **kwargs):
|
||||
user = super(RegistrationPassUserForm, self).save(commit, *args,
|
||||
**kwargs)
|
||||
user.set_password(self.cleaned_data['password2'])
|
||||
if commit:
|
||||
user.save()
|
||||
return user
|
||||
|
||||
|
||||
class RegistrationProfileForm(forms.ModelForm):
|
||||
def __init__(self, *args, **kw):
|
||||
super(RegistrationProfileForm, self).__init__(*args, **kw)
|
||||
|
@ -350,6 +376,7 @@ class BaseEventRegistrationFormset(BaseFormSet):
|
|||
kwargs['current_registration'] = self.current_registrations[index]
|
||||
return super(BaseEventRegistrationFormset, self)._construct_form(
|
||||
index, **kwargs)
|
||||
EventFormset = formset_factory(AdminEventForm, BaseEventRegistrationFormset)
|
||||
|
||||
|
||||
class CalendarForm(forms.ModelForm):
|
||||
|
|
|
@ -14,7 +14,6 @@ from django.http import Http404, HttpResponse
|
|||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.views import login as django_login_view
|
||||
from django.contrib.auth.models import User
|
||||
from django.forms.models import formset_factory
|
||||
from django.utils import timezone
|
||||
import django.utils.six as six
|
||||
|
||||
|
@ -29,8 +28,8 @@ from gestioncof.models import CofProfile, Clipper
|
|||
from gestioncof.decorators import buro_required, cof_required
|
||||
from gestioncof.forms import UserProfileForm, EventStatusFilterForm, \
|
||||
SurveyForm, SurveyStatusFilterForm, RegistrationUserForm, \
|
||||
RegistrationProfileForm, AdminEventForm, EventForm, CalendarForm, \
|
||||
BaseEventRegistrationFormset
|
||||
RegistrationProfileForm, EventForm, CalendarForm, EventFormset, \
|
||||
RegistrationPassUserForm
|
||||
|
||||
from bda.models import Tirage, Spectacle
|
||||
|
||||
|
@ -320,8 +319,6 @@ def registration_set_ro_fields(user_form, profile_form):
|
|||
@buro_required
|
||||
def registration_form2(request, login_clipper=None, username=None):
|
||||
events = Event.objects.filter(old=False).all()
|
||||
EventFormset = formset_factory(AdminEventForm,
|
||||
BaseEventRegistrationFormset)
|
||||
member = None
|
||||
if login_clipper:
|
||||
clipper = get_object_or_404(Clipper, username=login_clipper)
|
||||
|
@ -366,7 +363,7 @@ def registration_form2(request, login_clipper=None, username=None):
|
|||
current_registrations=current_registrations)
|
||||
elif not login_clipper:
|
||||
# new user
|
||||
user_form = RegistrationUserForm()
|
||||
user_form = RegistrationPassUserForm()
|
||||
profile_form = RegistrationProfileForm()
|
||||
event_formset = EventFormset(events=events, prefix='events')
|
||||
return render(request, "registration_form.html",
|
||||
|
@ -379,21 +376,23 @@ def registration_form2(request, login_clipper=None, username=None):
|
|||
def registration(request):
|
||||
if request.POST:
|
||||
request_dict = request.POST.copy()
|
||||
member = None
|
||||
login_clipper = None
|
||||
success = False
|
||||
events = Event.objects.filter(old=False).all()
|
||||
# num ne peut pas être défini manuellement
|
||||
if "num" in request_dict:
|
||||
del request_dict["num"]
|
||||
member = None
|
||||
login_clipper = None
|
||||
success = False
|
||||
|
||||
# -----
|
||||
# Remplissage des formulaires
|
||||
# -----
|
||||
|
||||
user_form = RegistrationUserForm(request_dict)
|
||||
EventFormset = formset_factory(AdminEventForm,
|
||||
BaseEventRegistrationFormset)
|
||||
if 'password1' in request_dict or 'password2' in request_dict:
|
||||
user_form = RegistrationPassUserForm(request_dict)
|
||||
else:
|
||||
user_form = RegistrationUserForm
|
||||
profile_form = RegistrationProfileForm(request_dict)
|
||||
events = Event.objects.filter(old=False).all()
|
||||
event_formset = EventFormset(events=events, data=request_dict,
|
||||
prefix='events')
|
||||
if "user_exists" in request_dict and request_dict["user_exists"]:
|
||||
|
|
Loading…
Reference in a new issue