From 4a52272558bdb60842b59e54e800038e3e489d50 Mon Sep 17 00:00:00 2001
From: Pierre-antoine Comby <comby@crans.org>
Date: Sun, 11 Aug 2019 17:39:05 +0200
Subject: [PATCH] fix sign up forms

---
 apps/member/forms.py         |  1 +
 apps/member/models.py        | 16 ++++++++--------
 apps/member/signals.py       |  9 ---------
 apps/member/views.py         | 11 ++++++++++-
 templates/member/signup.html |  4 ++--
 5 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/apps/member/forms.py b/apps/member/forms.py
index 92c98996..748e7d09 100644
--- a/apps/member/forms.py
+++ b/apps/member/forms.py
@@ -12,3 +12,4 @@ class ProfileForm(forms.ModelForm):
     class Meta:
         model = Profile
         fields = '__all__'
+        exclude = ['user']
diff --git a/apps/member/models.py b/apps/member/models.py
index dbe0ad07..87c5582b 100644
--- a/apps/member/models.py
+++ b/apps/member/models.py
@@ -138,11 +138,11 @@ class Membership(models.Model):
         verbose_name_plural = _('memberships')
 
 
-@receiver(post_save, sender=settings.AUTH_USER_MODEL)
-def save_user_profile(instance, created, **_kwargs):
-    """
-    Hook to save an user profile when an user is updated
-    """
-    if created:
-        Profile.objects.create(user=instance)
-    instance.profile.save()
+# @receiver(post_save, sender=settings.AUTH_USER_MODEL)
+# def save_user_profile(instance, created, **_kwargs):
+#     """
+#     Hook to save an user profile when an user is updated
+#     """
+#     if created:
+#         Profile.objects.create(user=instance)
+#     instance.profile.save()
diff --git a/apps/member/signals.py b/apps/member/signals.py
index 51751100..6688516b 100644
--- a/apps/member/signals.py
+++ b/apps/member/signals.py
@@ -4,12 +4,3 @@
 # Copyright (C) 2018-2019 by BDE ENS Paris-Saclay
 # SPDX-License-Identifier: GPL-3.0-or-later
 
-
-def save_user_profile(instance, created, **_kwargs):
-    """
-    Hook to create and save a note when an user is updated
-    """
-    if created:
-        from .models import Profile
-        Profile.objects.create(user=instance)
-    instance.note.save()
diff --git a/apps/member/views.py b/apps/member/views.py
index 2d080d0a..cc2d2b3f 100644
--- a/apps/member/views.py
+++ b/apps/member/views.py
@@ -6,7 +6,7 @@
 from django.contrib.auth.mixins import LoginRequiredMixin
 from django.utils.translation import gettext_lazy as _
 from django.views.generic.edit import CreateView
-
+from django.http import HttpResponseRedirect
 from django.contrib.auth.forms import UserCreationForm
 from django.urls import reverse_lazy
 from .models import Profile
@@ -27,3 +27,12 @@ class SignUp(CreateView):
         context["user_form"] = self.second_form
 
         return context
+
+    def form_valid(self, form):
+        user_form = UserCreationForm(self.request.POST)
+        if user_form.is_valid():
+            user = user_form.save()
+            user_profile = form.save(commit=False) # do not save to db
+            user_profile.user = user
+            user_profile.save()
+        return super().form_valid(form)
diff --git a/templates/member/signup.html b/templates/member/signup.html
index 1021b8c0..67a85674 100644
--- a/templates/member/signup.html
+++ b/templates/member/signup.html
@@ -7,8 +7,8 @@
   <h2>Sign up</h2>
   <form method="post">
     {% csrf_token %}
-    {{ form.as_p |crispy }}
-    {{ user_form.as_p |crispy }}
+    {{ user_form|crispy }}
+    {{ form|crispy }}
       <button type="submit">Sign up</button>
   </form>
 {% endblock %}
-- 
GitLab