From b741bad5a685f64a014d87ba300a9414e0468b5a Mon Sep 17 00:00:00 2001
From: edpibu <edpibu@crans.org>
Date: Thu, 20 Sep 2018 08:39:48 +0200
Subject: [PATCH] Fixed label creation on AdherentCreationForm. Added
 AdherentEditForm. shell and gpg_fingerprint fields have been moved from
 AdherentForm to AdherentEditForm.

---
 users/forms.py | 45 ++++++++++++++++++++++++++++++++-------------
 users/views.py |  4 ++--
 2 files changed, 34 insertions(+), 15 deletions(-)

diff --git a/users/forms.py b/users/forms.py
index 65e06715..7954895a 100644
--- a/users/forms.py
+++ b/users/forms.py
@@ -318,9 +318,6 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
         self.fields['room'].label = _("Room")
         self.fields['room'].empty_label = _("No room")
         self.fields['school'].empty_label = _("Select a school")
-        self.fields['gpg_fingerprint'].widget.attrs['placeholder'] = _("Leave empty if you don't have any GPG key.")
-        if 'shell' in self.fields:
-            self.fields['shell'].empty_label = _("Default shell")
 
     def clean_email(self):
         if not OptionalUser.objects.first().local_email_domain in self.cleaned_data.get('email'):
@@ -340,9 +337,7 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
             'school',
             'comment',
             'telephone',
-            'room',
-            'shell',
-            'gpg_fingerprint'
+            'room'
         ]
 
 
@@ -356,12 +351,6 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
             )
         return telephone
 
-    def clean_gpg_fingerprint(self):
-        """Format the GPG fingerprint"""
-        gpg_fingerprint = self.cleaned_data.get('gpg_fingerprint', None)
-        if gpg_fingerprint:
-            return gpg_fingerprint.replace(' ', '').upper()
-
     force = forms.BooleanField(
         label=_("Force the move?"),
         initial=False,
@@ -386,10 +375,40 @@ class AdherentCreationForm(AdherentForm):
                            + "using the forgotten password button on the "\
                            + "login page or contacting support.")
     former_user_check = forms.BooleanField(required=True, help_text=former_user_check_info)
-    former_user_check = _("I have not had an account before")
+    former_user_check.label = _("I have not had an account before")
 
     def __init__(self, *args, **kwargs):
         super(AdherentCreationForm, self).__init__(*args, **kwargs)
+
+class AdherentEditForm(AdherentForm):
+    """Formulaire d'édition d'un user.
+    AdherentForm incluant la modification des champs gpg et shell"""
+   def __init__(self, *args, **kargs):
+       super(AdherentEditForm, self).__init__(*args, **kwargs)
+       self.fields['gpg_fingerprint'].widget.attrs['placeholder'] = _("Leave empty if you don't have any GPG key.")
+       if 'shell' in self.fields:
+           self.fields['shell'].empty_label = _("Default shell")
+
+    def clean_gpg_fingerprint(self):
+        """Format the GPG fingerprint"""
+        gpg_fingerprint = self.cleaned_data.get('gpg_fingerprint', None)
+        if gpg_fingerprint:
+            return gpg_fingerprint.replace(' ', '').upper()
+
+    class Meta:
+        model = Adherent
+        fields = [
+            'name',
+            'surname',
+            'pseudo',
+            'email',
+            'school',
+            'comment',
+            'telephone',
+            'room',
+            'shell',
+            'gpg_fingerprint'
+        ]
        
 class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
     """Formulaire de base d'edition d'un user. Formulaire de base, utilisé
diff --git a/users/views.py b/users/views.py
index 41138ce3..77a23878 100644
--- a/users/views.py
+++ b/users/views.py
@@ -99,8 +99,8 @@ from .forms import (
     EditServiceUserForm,
     ServiceUserForm,
     ListRightForm,
-    AdherentForm,
     AdherentCreationForm,
+    AdherentEditForm,
     ClubForm,
     MassArchiveForm,
     PassForm,
@@ -198,7 +198,7 @@ def edit_info(request, user, userid):
     si l'id est différent de request.user, vérifie la
     possession du droit cableur """
     if user.is_class_adherent:
-        user_form = AdherentForm(
+        user_form = AdherentEditForm(
             request.POST or None,
             instance=user.adherent,
             user=request.user