diff --git a/gestioncof/forms.py b/gestioncof/forms.py index e4a2ae3b..45d71b97 100644 --- a/gestioncof/forms.py +++ b/gestioncof/forms.py @@ -307,6 +307,20 @@ class RegistrationKFProfileForm(forms.ModelForm): ] +class SelfRegistrationProfileForm(forms.ModelForm): + def __init__(self, *args, **kw): + super().__init__(*args, **kw) + self.fields["occupation"].initial = "Extérieur" + + class Meta: + model = CofProfile + fields = [ + "phone", + "occupation", + "departement", + ] + + STATUS_CHOICES = ( ("no", "Non"), ("wait", "Oui mais attente paiement"), diff --git a/gestioncof/templates/gestioncof/self_registration.html b/gestioncof/templates/gestioncof/self_registration.html index c60dce4f..13d6bf65 100644 --- a/gestioncof/templates/gestioncof/self_registration.html +++ b/gestioncof/templates/gestioncof/self_registration.html @@ -10,7 +10,7 @@ {% if member %}

Inscription K-Fêt du compte GestioCOF existant {{ member.username }}

{% else %} -

Inscription K-Fêt d'un nouveau compte (extérieur ?)

+

Inscription K-Fêt d'un nouveau compte extérieur

{% endif %}
{% csrf_token %} diff --git a/gestioncof/views.py b/gestioncof/views.py index e3350a37..242d799f 100644 --- a/gestioncof/views.py +++ b/gestioncof/views.py @@ -4,6 +4,7 @@ from datetime import timedelta from urllib.parse import parse_qs, urlencode, urlparse, urlunparse from django.contrib import messages +from django.contrib.auth import login as django_login from django.contrib.auth.decorators import login_required from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.models import User @@ -47,6 +48,7 @@ from gestioncof.forms import ( RegistrationPassUserForm, RegistrationProfileForm, RegistrationUserForm, + SelfRegistrationProfileForm, SubscribForm, SurveyForm, SurveyStatusFilterForm, @@ -695,9 +697,46 @@ def registration(request): return render(request, "registration.html") -# TODO: without login -@login_required def self_kf_registration(request): + # we manage prefilling for authenticated user separatly + if request.user.is_authenticated: + return self_kf_registration_logged(request) + + member = None + + if request.POST: + user_form = RegistrationPassUserForm(request.POST) + profile_form = SelfRegistrationProfileForm(request.POST) + agreement_form = SubscribForm(request.POST) + if user_form.is_valid() and profile_form.is_valid(): + member = user_form.save() + msg = "Création du compte GestioCOF {:s} réussie.".format(member.username) + messages.success(request, msg) + member.backend = "django.contrib.auth.backends.ModelBackend" + django_login(request, member) + + profile, _ = CofProfile.objects.get_or_create(user=member) + profile_form = SelfRegistrationProfileForm(request.POST, instance=profile) + profile_form.save() + return self_kf_registration_logged(request) + else: + user_form = RegistrationPassUserForm() + profile_form = SelfRegistrationProfileForm() + agreement_form = SubscribForm() + + return render( + request, + "gestioncof/self_registration.html", + { + "user_form": user_form, + "profile_form": profile_form, + "agreement_form": agreement_form, + "member": member, + }, + ) + + +def self_kf_registration_logged(request): member = request.user (profile, _) = CofProfile.objects.get_or_create(user=member)