diff --git a/users/forms.py b/users/forms.py index a6ea70b9..525ebb74 100644 --- a/users/forms.py +++ b/users/forms.py @@ -48,6 +48,8 @@ from re2o.utils import remove_user_room, get_input_formats_help_text from re2o.mixins import FormRevMixin from re2o.field_permissions import FieldPermissionFormMixin +from preferences.models import GeneralOption + from .widgets import DateTimePicker from .models import ( @@ -318,9 +320,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 +339,7 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): 'school', 'comment', 'telephone', - 'room', - 'shell', - 'gpg_fingerprint' + 'room' ] @@ -356,12 +353,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, @@ -375,7 +366,57 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm): remove_user_room(self.cleaned_data.get('room')) return +class AdherentCreationForm(AdherentForm): + """Formulaire de création d'un user. + AdherentForm auquel on ajoute une checkbox afin d'éviter les + doublons d'utilisateurs""" + # Champ permettant d'éviter au maxium les doublons d'utilisateurs + former_user_check_info = _("If you already have an account, please use it. "\ + + "If your lost access to it, please consider "\ + + "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.label = _("I have not had an account before") + + # Checkbox for GTU + gtu_check = forms.BooleanField(required=True) + gtu_check.label = mark_safe("{}{}{}".format( + _("I commit to accept the "), GeneralOption.get_cached_value('GTU'), _("General Terms of Use"), _("."))) + + 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é pour l'edition de self par self ou un cableur. On formate les champs diff --git a/users/templates/users/user.html b/users/templates/users/user.html index 3f19d3d8..6282c2fa 100644 --- a/users/templates/users/user.html +++ b/users/templates/users/user.html @@ -42,7 +42,6 @@ with this program; if not, write to the Free Software Foundation, Inc., {% endif %}
{% if showCGU %} -

{% trans "By clicking 'Create or edit', the user commits to respect the " %}{% trans "General Terms of Use" %}.

{% trans "Summary of the General Terms of Use" %}

{{ GTU_sum_up }}

{% endif %} diff --git a/users/views.py b/users/views.py index 360e256b..77a23878 100644 --- a/users/views.py +++ b/users/views.py @@ -99,7 +99,8 @@ from .forms import ( EditServiceUserForm, ServiceUserForm, ListRightForm, - AdherentForm, + AdherentCreationForm, + AdherentEditForm, ClubForm, MassArchiveForm, PassForm, @@ -114,7 +115,7 @@ from .forms import ( def new_user(request): """ Vue de création d'un nouvel utilisateur, envoie un mail pour le mot de passe""" - user = AdherentForm(request.POST or None, user=request.user) + user = AdherentCreationForm(request.POST or None, user=request.user) GTU_sum_up = GeneralOption.get_cached_value('GTU_sum_up') GTU = GeneralOption.get_cached_value('GTU') if user.is_valid(): @@ -197,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