diff --git a/gestioncof/forms.py b/gestioncof/forms.py
index 4a9087fd..1fcc6ea6 100644
--- a/gestioncof/forms.py
+++ b/gestioncof/forms.py
@@ -170,25 +170,16 @@ class EventStatusFilterForm(forms.Form):
yield ("has_paid", None, value)
-class UserProfileForm(forms.ModelForm):
- first_name = forms.CharField(label=_('Prénom'), max_length=30)
- last_name = forms.CharField(label=_('Nom'), max_length=30)
+class UserForm(forms.ModelForm):
+ class Meta:
+ model = User
+ fields = ["first_name", "last_name", "email"]
- def __init__(self, *args, **kw):
- super().__init__(*args, **kw)
- self.fields['first_name'].initial = self.instance.user.first_name
- self.fields['last_name'].initial = self.instance.user.last_name
-
- def save(self, *args, **kw):
- super().save(*args, **kw)
- self.instance.user.first_name = self.cleaned_data.get('first_name')
- self.instance.user.last_name = self.cleaned_data.get('last_name')
- self.instance.user.save()
+class ProfileForm(forms.ModelForm):
class Meta:
model = CofProfile
- fields = ["first_name", "last_name", "phone", "mailing_cof",
- "mailing_bda", "mailing_bda_revente"]
+ fields = ["phone", "mailing_cof", "mailing_bda", "mailing_bda_revente"]
class RegistrationUserForm(forms.ModelForm):
@@ -252,6 +243,7 @@ class RegistrationProfileForm(forms.ModelForm):
"departement", "is_cof", "type_cotiz", "mailing_cof",
"mailing_bda", "mailing_bda_revente", "comments")
+
STATUS_CHOICES = (('no', 'Non'),
('wait', 'Oui mais attente paiement'),
('paid', 'Oui payé'),)
diff --git a/gestioncof/templates/gestioncof/profile.html b/gestioncof/templates/gestioncof/profile.html
index 5decdfb3..9d418ef6 100644
--- a/gestioncof/templates/gestioncof/profile.html
+++ b/gestioncof/templates/gestioncof/profile.html
@@ -4,26 +4,23 @@
{% block page_size %}col-sm-8{%endblock%}
{% block realcontent %}
-
Modifier mon profil
-
+ Modifier mon profil
+
{% endblock %}
diff --git a/gestioncof/tests/test_views.py b/gestioncof/tests/test_views.py
index 47139327..1067e586 100644
--- a/gestioncof/tests/test_views.py
+++ b/gestioncof/tests/test_views.py
@@ -46,9 +46,9 @@ class ProfileViewTests(ViewTestCaseMixin, TestCase):
u = self.users['member']
r = self.client.post(self.url, {
- 'first_name': 'First',
- 'last_name': 'Last',
- 'phone': '',
+ 'u-first_name': 'First',
+ 'u-last_name': 'Last',
+ 'p-phone': '',
# 'mailing_cof': '1',
# 'mailing_bda': '1',
# 'mailing_bda_revente': '1',
diff --git a/gestioncof/views.py b/gestioncof/views.py
index 6126eb10..64fe89a0 100644
--- a/gestioncof/views.py
+++ b/gestioncof/views.py
@@ -32,7 +32,8 @@ from gestioncof.models import EventCommentField, EventCommentValue, \
from gestioncof.models import CofProfile, Club
from gestioncof.decorators import buro_required, cof_required
from gestioncof.forms import (
- UserProfileForm, EventStatusFilterForm, SurveyForm, SurveyStatusFilterForm,
+ UserForm, ProfileForm,
+ EventStatusFilterForm, SurveyForm, SurveyStatusFilterForm,
RegistrationUserForm, RegistrationProfileForm, EventForm, CalendarForm,
EventFormset, RegistrationPassUserForm, ClubsForm, GestioncofConfigForm
)
@@ -334,15 +335,20 @@ def survey_status(request, survey_id):
@cof_required
def profile(request):
+ user = request.user
+ data = request.POST if request.method == "POST" else None
+ user_form = UserForm(data=data, instance=user, prefix="u")
+ profile_form = ProfileForm(data=data, instance=user.profile, prefix="p")
if request.method == "POST":
- form = UserProfileForm(request.POST, instance=request.user.profile)
- if form.is_valid():
- form.save()
- messages.success(request,
- "Votre profil a été mis à jour avec succès !")
- else:
- form = UserProfileForm(instance=request.user.profile)
- return render(request, "gestioncof/profile.html", {"form": form})
+ if user_form.is_valid() and profile_form.is_valid():
+ user_form.save()
+ profile_form.save()
+ messages.success(
+ request,
+ _("Votre profil a été mis à jour avec succès !")
+ )
+ context = {"user_form": user_form, "profile_form": profile_form}
+ return render(request, "gestioncof/profile.html", context)
def registration_set_ro_fields(user_form, profile_form):