mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-12-23 07:23:46 +00:00
Translation of docstrings in user admin and forms
This commit is contained in:
parent
fb9ae20f37
commit
e1f8254115
2 changed files with 419 additions and 124 deletions
115
users/admin.py
115
users/admin.py
|
@ -56,15 +56,26 @@ from .forms import (
|
||||||
|
|
||||||
|
|
||||||
class LdapUserAdmin(admin.ModelAdmin):
|
class LdapUserAdmin(admin.ModelAdmin):
|
||||||
"""Administration du ldapuser"""
|
"""LdapUser Admin view. Can't change password, manage
|
||||||
|
by User General model.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
list_display = ("name", "uidNumber", "login_shell")
|
list_display = ("name", "uidNumber", "login_shell")
|
||||||
exclude = ("user_password", "sambat_nt_password")
|
exclude = ("user_password", "sambat_nt_password")
|
||||||
search_fields = ("name",)
|
search_fields = ("name",)
|
||||||
|
|
||||||
|
|
||||||
class LdapServiceUserAdmin(admin.ModelAdmin):
|
class LdapServiceUserAdmin(admin.ModelAdmin):
|
||||||
"""Administration du ldapserviceuser"""
|
"""LdapServiceUser Admin view. Can't change password, manage
|
||||||
|
by User General model.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
list_display = ("name",)
|
list_display = ("name",)
|
||||||
exclude = ("user_password",)
|
exclude = ("user_password",)
|
||||||
|
@ -72,63 +83,123 @@ class LdapServiceUserAdmin(admin.ModelAdmin):
|
||||||
|
|
||||||
|
|
||||||
class LdapUserGroupAdmin(admin.ModelAdmin):
|
class LdapUserGroupAdmin(admin.ModelAdmin):
|
||||||
"""Administration du ldapusergroupe"""
|
"""LdapUserGroup Admin view.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
list_display = ("name", "members", "gid")
|
list_display = ("name", "members", "gid")
|
||||||
search_fields = ("name",)
|
search_fields = ("name",)
|
||||||
|
|
||||||
|
|
||||||
class LdapServiceUserGroupAdmin(admin.ModelAdmin):
|
class LdapServiceUserGroupAdmin(admin.ModelAdmin):
|
||||||
"""Administration du ldap serviceusergroup"""
|
"""LdapServiceUserGroup Admin view.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
list_display = ("name",)
|
list_display = ("name",)
|
||||||
search_fields = ("name",)
|
search_fields = ("name",)
|
||||||
|
|
||||||
|
|
||||||
class SchoolAdmin(VersionAdmin):
|
class SchoolAdmin(VersionAdmin):
|
||||||
"""Administration, gestion des écoles"""
|
"""School Admin view and management.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ListRightAdmin(VersionAdmin):
|
class ListRightAdmin(VersionAdmin):
|
||||||
"""Gestion de la liste des droits existants
|
"""ListRight and groups Admin view and management.
|
||||||
Ne permet pas l'edition du gid (primarykey pour ldap)"""
|
Even if it is possible, gid should NOT be changed
|
||||||
|
as it is the ldap primary key.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
list_display = ("unix_name",)
|
list_display = ("unix_name",)
|
||||||
|
|
||||||
|
|
||||||
class ListShellAdmin(VersionAdmin):
|
class ListShellAdmin(VersionAdmin):
|
||||||
"""Gestion de la liste des shells coté admin"""
|
"""Users Shell Admin view and management.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class RequestAdmin(admin.ModelAdmin):
|
class RequestAdmin(admin.ModelAdmin):
|
||||||
"""Gestion des request objet, ticket pour lien de reinit mot de passe"""
|
"""User Request Admin view and management, for
|
||||||
|
change password and email validation.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
list_display = ("user", "type", "created_at", "expires_at")
|
list_display = ("user", "type", "created_at", "expires_at")
|
||||||
|
|
||||||
|
|
||||||
class BanAdmin(VersionAdmin):
|
class BanAdmin(VersionAdmin):
|
||||||
"""Gestion des bannissements"""
|
"""Ban Admin view and management, for
|
||||||
|
User Ban
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class EMailAddressAdmin(VersionAdmin):
|
class EMailAddressAdmin(VersionAdmin):
|
||||||
"""Gestion des alias mail"""
|
"""EmailAddress Admin view and management, for
|
||||||
|
auxiliary and local email addresses
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class WhitelistAdmin(VersionAdmin):
|
class WhitelistAdmin(VersionAdmin):
|
||||||
"""Gestion des whitelist"""
|
"""Whitelist Admin view and management, for
|
||||||
|
free access whitelisted users
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class AdherentAdmin(VersionAdmin, BaseUserAdmin):
|
class AdherentAdmin(VersionAdmin, BaseUserAdmin):
|
||||||
|
"""Adherent Admin view and management, for
|
||||||
|
Adherent fields : password, pseudo, etc, admin can
|
||||||
|
edit all fields on user instance.
|
||||||
|
Inherit from django BaseUserAdmin
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
# The forms to add and change user instances
|
# The forms to add and change user instances
|
||||||
|
|
||||||
add_form = UserAdminForm
|
add_form = UserAdminForm
|
||||||
|
@ -179,6 +250,15 @@ class AdherentAdmin(VersionAdmin, BaseUserAdmin):
|
||||||
|
|
||||||
|
|
||||||
class ClubAdmin(VersionAdmin, BaseUserAdmin):
|
class ClubAdmin(VersionAdmin, BaseUserAdmin):
|
||||||
|
"""Club Admin view and management, for
|
||||||
|
Club fields : password, pseudo, etc, admin can
|
||||||
|
edit all fields on user instance.
|
||||||
|
Inherit from django BaseUserAdmin
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
# The forms to add and change user instances
|
# The forms to add and change user instances
|
||||||
add_form = UserAdminForm
|
add_form = UserAdminForm
|
||||||
form = UserAdminForm
|
form = UserAdminForm
|
||||||
|
@ -225,8 +305,15 @@ class ClubAdmin(VersionAdmin, BaseUserAdmin):
|
||||||
|
|
||||||
|
|
||||||
class ServiceUserAdmin(VersionAdmin, BaseUserAdmin):
|
class ServiceUserAdmin(VersionAdmin, BaseUserAdmin):
|
||||||
"""Gestion d'un service user admin : champs personnels,
|
"""ServiceUser Admin view and management, for
|
||||||
mot de passe; etc"""
|
User fields : password, pseudo, etc, admin can
|
||||||
|
edit all fields on user instance.
|
||||||
|
Inherit from django BaseUserAdmin
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
Django ModelAdmin: Apply on django ModelAdmin
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
# The forms to add and change user instances
|
# The forms to add and change user instances
|
||||||
form = ServiceUserAdminForm
|
form = ServiceUserAdminForm
|
||||||
|
|
428
users/forms.py
428
users/forms.py
|
@ -72,62 +72,16 @@ from .models import (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class PassForm(FormRevMixin, FieldPermissionFormMixin, forms.ModelForm):
|
#### Django Admin Custom Views
|
||||||
"""Formulaire de changement de mot de passe. Verifie que les 2
|
|
||||||
nouveaux mots de passe renseignés sont identiques et respectent
|
|
||||||
une norme"""
|
|
||||||
|
|
||||||
selfpasswd = forms.CharField(
|
|
||||||
label=_("Current password"), max_length=255, widget=forms.PasswordInput
|
|
||||||
)
|
|
||||||
passwd1 = forms.CharField(
|
|
||||||
label=_("New password"),
|
|
||||||
max_length=255,
|
|
||||||
widget=forms.PasswordInput,
|
|
||||||
help_text=password_validators_help_text_html()
|
|
||||||
)
|
|
||||||
passwd2 = forms.CharField(
|
|
||||||
label=_("New password confirmation"),
|
|
||||||
max_length=255,
|
|
||||||
widget=forms.PasswordInput,
|
|
||||||
)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = User
|
|
||||||
fields = []
|
|
||||||
|
|
||||||
def clean_passwd2(self):
|
|
||||||
"""Verifie que passwd1 et 2 sont identiques"""
|
|
||||||
# Check that the two password entries match
|
|
||||||
password1 = self.cleaned_data.get("passwd1")
|
|
||||||
password2 = self.cleaned_data.get("passwd2")
|
|
||||||
if password1 and password2 and password1 != password2:
|
|
||||||
raise forms.ValidationError(_("The new passwords don't match."))
|
|
||||||
validate_password(password1, user=self.instance)
|
|
||||||
return password2
|
|
||||||
|
|
||||||
def clean_selfpasswd(self):
|
|
||||||
"""Verifie si il y a lieu que le mdp self est correct"""
|
|
||||||
if not self.instance.check_password(self.cleaned_data.get("selfpasswd")):
|
|
||||||
raise forms.ValidationError(_("The current password is incorrect."))
|
|
||||||
return
|
|
||||||
|
|
||||||
def save(self, commit=True):
|
|
||||||
"""Changement du mot de passe"""
|
|
||||||
user = super(PassForm, self).save(commit=False)
|
|
||||||
user.set_password(self.cleaned_data.get("passwd1"))
|
|
||||||
user.state = User.STATE_NOT_YET_ACTIVE
|
|
||||||
user.set_active()
|
|
||||||
user.save()
|
|
||||||
|
|
||||||
|
|
||||||
class UserAdminForm(FormRevMixin, forms.ModelForm):
|
class UserAdminForm(FormRevMixin, forms.ModelForm):
|
||||||
"""A form for creating new and editing users. Includes all the required
|
"""A form for creating new and editing users. Includes all the required
|
||||||
fields, plus a repeated password.
|
fields, plus a repeated password.
|
||||||
|
|
||||||
Formulaire pour la création d'un user. N'est utilisé que pour
|
Parameters:
|
||||||
l'admin, lors de la creation d'un user par admin. Inclu tous les
|
DjangoForm : Inherit from basic django form
|
||||||
champs obligatoires"""
|
"""
|
||||||
|
|
||||||
password1 = forms.CharField(
|
password1 = forms.CharField(
|
||||||
label=_("Password"),
|
label=_("Password"),
|
||||||
|
@ -152,8 +106,14 @@ class UserAdminForm(FormRevMixin, forms.ModelForm):
|
||||||
fields = ("pseudo", "surname", "name", "email", "is_superuser")
|
fields = ("pseudo", "surname", "name", "email", "is_superuser")
|
||||||
|
|
||||||
def clean_password2(self):
|
def clean_password2(self):
|
||||||
"""Verifie que password1 et 2 sont identiques"""
|
"""Clean password 2, check if passwd1 and 2 values match.
|
||||||
# Check that the two password entries match
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form UserCreationForm instance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
password2 (string): The password2 value if all tests returned True
|
||||||
|
"""
|
||||||
password1 = self.cleaned_data.get("password1")
|
password1 = self.cleaned_data.get("password1")
|
||||||
password2 = self.cleaned_data.get("password2")
|
password2 = self.cleaned_data.get("password2")
|
||||||
if password1 and password2:
|
if password1 and password2:
|
||||||
|
@ -163,6 +123,13 @@ class UserAdminForm(FormRevMixin, forms.ModelForm):
|
||||||
return password2
|
return password2
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
|
"""Save function. Call standard "set_password" django function,
|
||||||
|
from provided value for new password, for making hash.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form UserCreationForm instance
|
||||||
|
commit : If False, don't make the real save in database
|
||||||
|
"""
|
||||||
# Save the provided password in hashed format
|
# Save the provided password in hashed format
|
||||||
user = super(UserAdminForm, self).save(commit=False)
|
user = super(UserAdminForm, self).save(commit=False)
|
||||||
if self.cleaned_data["password1"]:
|
if self.cleaned_data["password1"]:
|
||||||
|
@ -172,11 +139,12 @@ class UserAdminForm(FormRevMixin, forms.ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class ServiceUserAdminForm(FormRevMixin, forms.ModelForm):
|
class ServiceUserAdminForm(FormRevMixin, forms.ModelForm):
|
||||||
"""A form for creating new users. Includes all the required
|
"""A form for creating new service users. Includes all the required
|
||||||
fields, plus a repeated password.
|
fields, plus a repeated password. For Admin view purpose only.
|
||||||
|
|
||||||
Formulaire pour la creation de nouveaux serviceusers.
|
Parameters:
|
||||||
Requiert seulement un mot de passe; et un pseudo"""
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
password1 = forms.CharField(
|
password1 = forms.CharField(
|
||||||
label=_("Password"),
|
label=_("Password"),
|
||||||
|
@ -198,8 +166,14 @@ class ServiceUserAdminForm(FormRevMixin, forms.ModelForm):
|
||||||
fields = ("pseudo",)
|
fields = ("pseudo",)
|
||||||
|
|
||||||
def clean_password2(self):
|
def clean_password2(self):
|
||||||
"""Verifie que password1 et 2 sont identiques"""
|
"""Clean password 2, check if passwd1 and 2 values match.
|
||||||
# Check that the two password entries match
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form UserCreationForm instance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
password2 (string): The password2 value if all tests returned True
|
||||||
|
"""
|
||||||
password1 = self.cleaned_data.get("password1")
|
password1 = self.cleaned_data.get("password1")
|
||||||
password2 = self.cleaned_data.get("password2")
|
password2 = self.cleaned_data.get("password2")
|
||||||
if password1 and password2 and password1 != password2:
|
if password1 and password2 and password1 != password2:
|
||||||
|
@ -207,25 +181,111 @@ class ServiceUserAdminForm(FormRevMixin, forms.ModelForm):
|
||||||
return password2
|
return password2
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
# Save the provided password in hashed format
|
"""Save function. Call standard "set_password" django function,
|
||||||
|
from provided value for new password, for making hash.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form ServiceUserAdminForm instance
|
||||||
|
commit : If False, don't make the real save in database
|
||||||
|
"""
|
||||||
user = super(ServiceUserAdminForm, self).save(commit=False)
|
user = super(ServiceUserAdminForm, self).save(commit=False)
|
||||||
user.set_password(self.cleaned_data["password1"])
|
user.set_password(self.cleaned_data["password1"])
|
||||||
user.save()
|
user.save()
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
### Classic Django View
|
||||||
|
|
||||||
|
|
||||||
|
class PassForm(FormRevMixin, FieldPermissionFormMixin, forms.ModelForm):
|
||||||
|
"""Django form for changing password, check if 2 passwords are the same,
|
||||||
|
and validate password for django base password validators provided in
|
||||||
|
settings_local.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
|
||||||
|
"""
|
||||||
|
selfpasswd = forms.CharField(
|
||||||
|
label=_("Current password"), max_length=255, widget=forms.PasswordInput
|
||||||
|
)
|
||||||
|
passwd1 = forms.CharField(
|
||||||
|
label=_("New password"),
|
||||||
|
max_length=255,
|
||||||
|
widget=forms.PasswordInput,
|
||||||
|
help_text=password_validators_help_text_html()
|
||||||
|
)
|
||||||
|
passwd2 = forms.CharField(
|
||||||
|
label=_("New password confirmation"),
|
||||||
|
max_length=255,
|
||||||
|
widget=forms.PasswordInput,
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
fields = []
|
||||||
|
|
||||||
|
def clean_passwd2(self):
|
||||||
|
"""Clean password 2, check if passwd1 and 2 values match, and
|
||||||
|
apply django validator with validate_password function.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form PassForm instance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
password2 (string): The password2 value if all tests returned True
|
||||||
|
"""
|
||||||
|
password1 = self.cleaned_data.get("passwd1")
|
||||||
|
password2 = self.cleaned_data.get("passwd2")
|
||||||
|
if password1 and password2 and password1 != password2:
|
||||||
|
raise forms.ValidationError(_("The new passwords don't match."))
|
||||||
|
validate_password(password1, user=self.instance)
|
||||||
|
return password2
|
||||||
|
|
||||||
|
def clean_selfpasswd(self):
|
||||||
|
"""Clean selfpassword, check if provided original user password match
|
||||||
|
with the stored value.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form PassForm instance
|
||||||
|
"""
|
||||||
|
if not self.instance.check_password(self.cleaned_data.get("selfpasswd")):
|
||||||
|
raise forms.ValidationError(_("The current password is incorrect."))
|
||||||
|
return
|
||||||
|
|
||||||
|
def save(self, commit=True):
|
||||||
|
"""Save function. Call standard "set_password" django function,
|
||||||
|
and call set_active for set user in active state if needed.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form PassForm instance
|
||||||
|
commit : If False, don't make the real save in database
|
||||||
|
"""
|
||||||
|
user = super(PassForm, self).save(commit=False)
|
||||||
|
user.set_password(self.cleaned_data.get("passwd1"))
|
||||||
|
user.state = User.STATE_NOT_YET_ACTIVE
|
||||||
|
user.set_active()
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
|
||||||
class ResetPasswordForm(forms.Form):
|
class ResetPasswordForm(forms.Form):
|
||||||
"""Formulaire de demande de reinitialisation de mot de passe,
|
"""A form for asking to reset password.
|
||||||
mdp oublié"""
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
pseudo = forms.CharField(label=_("Username"), max_length=255)
|
pseudo = forms.CharField(label=_("Username"), max_length=255)
|
||||||
email = forms.EmailField(max_length=255)
|
email = forms.EmailField(max_length=255)
|
||||||
|
|
||||||
|
|
||||||
class MassArchiveForm(forms.Form):
|
class MassArchiveForm(forms.Form):
|
||||||
"""Formulaire d'archivage des users inactif. Prend en argument
|
"""A form for archiving a lot de users. Get a start date
|
||||||
du formulaire la date de depart avant laquelle archiver les
|
for start archiving.
|
||||||
users"""
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
date = forms.DateTimeField(help_text="%d/%m/%y")
|
date = forms.DateTimeField(help_text="%d/%m/%y")
|
||||||
full_archive = forms.BooleanField(
|
full_archive = forms.BooleanField(
|
||||||
|
@ -251,9 +311,12 @@ class MassArchiveForm(forms.Form):
|
||||||
|
|
||||||
|
|
||||||
class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
"""Formulaire de base d'edition d'un user. Formulaire de base, utilisé
|
"""Adherent Edition Form, base form used for editing user by himself
|
||||||
pour l'edition de self par self ou un cableur. On formate les champs
|
or another user. Labels are provided for help purposes.
|
||||||
avec des label plus jolis"""
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -288,24 +351,42 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
)
|
)
|
||||||
|
|
||||||
def clean_telephone(self):
|
def clean_telephone(self):
|
||||||
"""Verifie que le tel est présent si 'option est validée
|
"""Clean telephone, check if telephone is made mandatory, and
|
||||||
dans preferences"""
|
raise error if not provided
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form AdherentForm instance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
telephone (string): The telephone string if clean is True
|
||||||
|
"""
|
||||||
telephone = self.cleaned_data["telephone"]
|
telephone = self.cleaned_data["telephone"]
|
||||||
if not telephone and OptionalUser.get_cached_value("is_tel_mandatory"):
|
if not telephone and OptionalUser.get_cached_value("is_tel_mandatory"):
|
||||||
raise forms.ValidationError(_("A valid telephone number is required."))
|
raise forms.ValidationError(_("A valid telephone number is required."))
|
||||||
return telephone
|
return telephone
|
||||||
|
|
||||||
def clean_force(self):
|
def clean_force(self):
|
||||||
"""On supprime l'ancien user de la chambre si et seulement si la
|
"""Clean force, remove previous user from room if needed.
|
||||||
case est cochée"""
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form AdherentForm instance
|
||||||
|
"""
|
||||||
room = self.cleaned_data.get("room")
|
room = self.cleaned_data.get("room")
|
||||||
if self.cleaned_data.get("force", False) and room:
|
if self.cleaned_data.get("force", False) and room:
|
||||||
remove_user_room(room)
|
remove_user_room(room)
|
||||||
return
|
return
|
||||||
|
|
||||||
def clean_room(self):
|
def clean_room(self):
|
||||||
"""On supprime l'ancien user de la chambre si l'option est activée,
|
"""Clean room, based on room policy provided by preferences.
|
||||||
et que l'ancien user a une connexion désactivée"""
|
If needed, call remove_user_room to make the room empty before
|
||||||
|
saving self.instance into that room.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form AdherentForm instance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
room (string): The room instance
|
||||||
|
"""
|
||||||
# Handle case where regular users can force move
|
# Handle case where regular users can force move
|
||||||
room = self.cleaned_data.get("room")
|
room = self.cleaned_data.get("room")
|
||||||
room_policy = OptionalUser.get_cached_value("self_room_policy")
|
room_policy = OptionalUser.get_cached_value("self_room_policy")
|
||||||
|
@ -320,10 +401,13 @@ class AdherentForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class AdherentCreationForm(AdherentForm):
|
class AdherentCreationForm(AdherentForm):
|
||||||
"""Formulaire de création d'un user.
|
"""AdherentCreationForm. Inherit from AdherentForm, base form used for creating
|
||||||
AdherentForm auquel on ajoute une checkbox afin d'éviter les
|
user by himself or another user. Labels are provided for help purposes.
|
||||||
doublons d'utilisateurs et, optionnellement,
|
Add some instructions, and validation for initial creation.
|
||||||
un champ mot de passe"""
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
# Champ pour choisir si un lien est envoyé par mail pour le mot de passe
|
# Champ pour choisir si un lien est envoyé par mail pour le mot de passe
|
||||||
init_password_by_mail_info = _(
|
init_password_by_mail_info = _(
|
||||||
"If this options is set, you will receive a link to set"
|
"If this options is set, you will receive a link to set"
|
||||||
|
@ -407,7 +491,15 @@ class AdherentCreationForm(AdherentForm):
|
||||||
self.fields.pop("password2")
|
self.fields.pop("password2")
|
||||||
|
|
||||||
def clean_password2(self):
|
def clean_password2(self):
|
||||||
"""Verifie que password1 et 2 sont identiques (si nécessaire)"""
|
"""Clean password 2, check if passwd1 and 2 values match, and
|
||||||
|
apply django validator with validate_password function.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form AdherentCreationForm instance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
password2 (string): The password2 value if all tests returned True
|
||||||
|
"""
|
||||||
send_email = self.cleaned_data.get("init_password_by_mail")
|
send_email = self.cleaned_data.get("init_password_by_mail")
|
||||||
if send_email:
|
if send_email:
|
||||||
return None
|
return None
|
||||||
|
@ -421,9 +513,14 @@ class AdherentCreationForm(AdherentForm):
|
||||||
return password2
|
return password2
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
"""Set the user's password, if entered
|
"""Save function. If password has been set during creation,
|
||||||
Returns the user and a bool indicating whether
|
call standard "set_password" django function from provided value
|
||||||
an email to init the password should be sent"""
|
for new password, for making hash.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form AdherentCreationForm instance
|
||||||
|
commit : If False, don't make the real save in database
|
||||||
|
"""
|
||||||
# Save the provided password in hashed format
|
# Save the provided password in hashed format
|
||||||
user = super(AdherentForm, self).save(commit=False)
|
user = super(AdherentForm, self).save(commit=False)
|
||||||
|
|
||||||
|
@ -437,8 +534,13 @@ class AdherentCreationForm(AdherentForm):
|
||||||
|
|
||||||
|
|
||||||
class AdherentEditForm(AdherentForm):
|
class AdherentEditForm(AdherentForm):
|
||||||
"""Formulaire d'édition d'un user.
|
"""AdherentEditForm. Inherit from AdherentForm, base form used for editing
|
||||||
AdherentForm incluant la modification des champs gpg et shell"""
|
user by himself or another user. Labels are provided for help purposes.
|
||||||
|
Add some instructions, and validation, fields depends on editing user rights.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(AdherentEditForm, self).__init__(*args, **kwargs)
|
super(AdherentEditForm, self).__init__(*args, **kwargs)
|
||||||
|
@ -469,9 +571,13 @@ class AdherentEditForm(AdherentForm):
|
||||||
|
|
||||||
|
|
||||||
class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
"""Formulaire de base d'edition d'un user. Formulaire de base, utilisé
|
"""ClubForm. For editing club by himself or another user. Labels are provided for
|
||||||
pour l'edition de self par self ou un cableur. On formate les champs
|
help purposes. Add some instructions, and validation, fields depends
|
||||||
avec des label plus jolis"""
|
on editing user rights.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -503,8 +609,15 @@ class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
]
|
]
|
||||||
|
|
||||||
def clean_telephone(self):
|
def clean_telephone(self):
|
||||||
"""Verifie que le tel est présent si 'option est validée
|
"""Clean telephone, check if telephone is made mandatory, and
|
||||||
dans preferences"""
|
raise error if not provided
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form ClubForm instance
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
telephone (string): The telephone string if clean is True
|
||||||
|
"""
|
||||||
telephone = self.cleaned_data["telephone"]
|
telephone = self.cleaned_data["telephone"]
|
||||||
if not telephone and OptionalUser.get_cached_value("is_tel_mandatory"):
|
if not telephone and OptionalUser.get_cached_value("is_tel_mandatory"):
|
||||||
raise forms.ValidationError(_("A valid telephone number is required."))
|
raise forms.ValidationError(_("A valid telephone number is required."))
|
||||||
|
@ -512,8 +625,12 @@ class ClubForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class ClubAdminandMembersForm(FormRevMixin, ModelForm):
|
class ClubAdminandMembersForm(FormRevMixin, ModelForm):
|
||||||
"""Permet d'éditer la liste des membres et des administrateurs
|
"""ClubAdminandMembersForm. Only For editing administrators of a club by himself
|
||||||
d'un club"""
|
or another user.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Club
|
model = Club
|
||||||
|
@ -525,8 +642,11 @@ class ClubAdminandMembersForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class PasswordForm(FormRevMixin, ModelForm):
|
class PasswordForm(FormRevMixin, ModelForm):
|
||||||
""" Formulaire de changement brut de mot de passe.
|
"""PasswordForm. Do not use directly in views without extra validations.
|
||||||
Ne pas utiliser sans traitement"""
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
|
@ -538,8 +658,12 @@ class PasswordForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class ServiceUserForm(FormRevMixin, ModelForm):
|
class ServiceUserForm(FormRevMixin, ModelForm):
|
||||||
"""Service user creation
|
"""ServiceUserForm, used for creating a service user, require
|
||||||
force initial password set"""
|
a password and set it.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
password = forms.CharField(
|
password = forms.CharField(
|
||||||
label=_("New password"),
|
label=_("New password"),
|
||||||
|
@ -558,7 +682,14 @@ class ServiceUserForm(FormRevMixin, ModelForm):
|
||||||
super(ServiceUserForm, self).__init__(*args, prefix=prefix, **kwargs)
|
super(ServiceUserForm, self).__init__(*args, prefix=prefix, **kwargs)
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
"""Password change"""
|
"""Save function. If password has been changed and provided,
|
||||||
|
call standard "set_password" django function from provided value
|
||||||
|
for new password, for making hash.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form ServiceUserForm instance
|
||||||
|
commit : If False, don't make the real save in database
|
||||||
|
"""
|
||||||
user = super(ServiceUserForm, self).save(commit=False)
|
user = super(ServiceUserForm, self).save(commit=False)
|
||||||
if self.cleaned_data["password"]:
|
if self.cleaned_data["password"]:
|
||||||
user.set_password(self.cleaned_data.get("password"))
|
user.set_password(self.cleaned_data.get("password"))
|
||||||
|
@ -566,8 +697,12 @@ class ServiceUserForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class EditServiceUserForm(ServiceUserForm):
|
class EditServiceUserForm(ServiceUserForm):
|
||||||
"""Formulaire d'edition de base d'un service user. Ne permet
|
"""EditServiceUserForm, used for editing a service user, can
|
||||||
d'editer que son group d'acl et son commentaire"""
|
edit password, access_group and comment.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
password = forms.CharField(
|
password = forms.CharField(
|
||||||
label=_("New password"),
|
label=_("New password"),
|
||||||
|
@ -582,7 +717,12 @@ class EditServiceUserForm(ServiceUserForm):
|
||||||
|
|
||||||
|
|
||||||
class StateForm(FormRevMixin, ModelForm):
|
class StateForm(FormRevMixin, ModelForm):
|
||||||
"""Change state of an user, and if its main email is verified or not"""
|
"""StateForm, Change state of an user, and if
|
||||||
|
its main email is verified or not
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
|
@ -596,7 +736,11 @@ class StateForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class GroupForm(FieldPermissionFormMixin, FormRevMixin, ModelForm):
|
class GroupForm(FieldPermissionFormMixin, FormRevMixin, ModelForm):
|
||||||
""" Gestion des groupes d'un user"""
|
"""GroupForm, form used for editing user groups.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
groups = forms.ModelMultipleChoiceField(
|
groups = forms.ModelMultipleChoiceField(
|
||||||
Group.objects.all(), widget=forms.CheckboxSelectMultiple, required=False
|
Group.objects.all(), widget=forms.CheckboxSelectMultiple, required=False
|
||||||
|
@ -614,7 +758,11 @@ class GroupForm(FieldPermissionFormMixin, FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class SchoolForm(FormRevMixin, ModelForm):
|
class SchoolForm(FormRevMixin, ModelForm):
|
||||||
"""Edition, creation d'un école"""
|
"""SchoolForm, form used for creating or editing school.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = School
|
model = School
|
||||||
|
@ -627,7 +775,11 @@ class SchoolForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class ShellForm(FormRevMixin, ModelForm):
|
class ShellForm(FormRevMixin, ModelForm):
|
||||||
"""Edition, creation d'un école"""
|
"""ShellForm, form used for creating or editing shell.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ListShell
|
model = ListShell
|
||||||
|
@ -640,8 +792,13 @@ class ShellForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class ListRightForm(FormRevMixin, ModelForm):
|
class ListRightForm(FormRevMixin, ModelForm):
|
||||||
"""Edition, d'un groupe , équivalent à un droit
|
"""ListRightForm, form used for editing a listright,
|
||||||
Ne permet pas d'editer le gid, car il sert de primary key"""
|
related with django group object. Gid, primary key, can't
|
||||||
|
be edited.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
permissions = forms.ModelMultipleChoiceField(
|
permissions = forms.ModelMultipleChoiceField(
|
||||||
Permission.objects.all().select_related("content_type"),
|
Permission.objects.all().select_related("content_type"),
|
||||||
|
@ -660,7 +817,12 @@ class ListRightForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class NewListRightForm(ListRightForm):
|
class NewListRightForm(ListRightForm):
|
||||||
"""Ajout d'un groupe/list de droit """
|
"""ListRightForm, form used for creating a listright,
|
||||||
|
related with django group object.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
class Meta(ListRightForm.Meta):
|
class Meta(ListRightForm.Meta):
|
||||||
fields = ("name", "unix_name", "gid", "critical", "permissions", "details")
|
fields = ("name", "unix_name", "gid", "critical", "permissions", "details")
|
||||||
|
@ -673,7 +835,12 @@ class NewListRightForm(ListRightForm):
|
||||||
|
|
||||||
|
|
||||||
class DelListRightForm(Form):
|
class DelListRightForm(Form):
|
||||||
"""Suppression d'un ou plusieurs groupes"""
|
"""DelListRightForm, form for deleting one or several ListRight
|
||||||
|
instances.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
listrights = forms.ModelMultipleChoiceField(
|
listrights = forms.ModelMultipleChoiceField(
|
||||||
queryset=ListRight.objects.none(),
|
queryset=ListRight.objects.none(),
|
||||||
|
@ -691,7 +858,12 @@ class DelListRightForm(Form):
|
||||||
|
|
||||||
|
|
||||||
class DelSchoolForm(Form):
|
class DelSchoolForm(Form):
|
||||||
"""Suppression d'une ou plusieurs écoles"""
|
"""DelSchoolForm, form for deleting one or several School
|
||||||
|
instances.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
schools = forms.ModelMultipleChoiceField(
|
schools = forms.ModelMultipleChoiceField(
|
||||||
queryset=School.objects.none(),
|
queryset=School.objects.none(),
|
||||||
|
@ -709,7 +881,11 @@ class DelSchoolForm(Form):
|
||||||
|
|
||||||
|
|
||||||
class BanForm(FormRevMixin, ModelForm):
|
class BanForm(FormRevMixin, ModelForm):
|
||||||
"""Creation, edition d'un objet bannissement"""
|
"""BanForm, form used for creating or editing a ban instance.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -724,7 +900,11 @@ class BanForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class WhitelistForm(FormRevMixin, ModelForm):
|
class WhitelistForm(FormRevMixin, ModelForm):
|
||||||
"""Creation, edition d'un objet whitelist"""
|
"""WhitelistForm, form used for creating or editing a whitelist instance.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -739,7 +919,12 @@ class WhitelistForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class EMailAddressForm(FormRevMixin, ModelForm):
|
class EMailAddressForm(FormRevMixin, ModelForm):
|
||||||
"""Create and edit a local email address"""
|
"""EMailAddressForm, form used for creating or editing a local
|
||||||
|
email for a user.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -756,7 +941,11 @@ class EMailAddressForm(FormRevMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class EmailSettingsForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
class EmailSettingsForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
"""Edit email-related settings"""
|
"""EMailSettingsForm, form used for editing email settings for a user.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
prefix = kwargs.pop("prefix", self.Meta.model.__name__)
|
||||||
|
@ -775,6 +964,12 @@ class EmailSettingsForm(FormRevMixin, FieldPermissionFormMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class InitialRegisterForm(forms.Form):
|
class InitialRegisterForm(forms.Form):
|
||||||
|
"""InitialRegisterForm, form used for auto-register of room and mac-address
|
||||||
|
with captive-portal.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
DjangoForm : Inherit from basic django form
|
||||||
|
"""
|
||||||
register_room = forms.BooleanField(required=False)
|
register_room = forms.BooleanField(required=False)
|
||||||
register_machine = forms.BooleanField(required=False)
|
register_machine = forms.BooleanField(required=False)
|
||||||
|
|
||||||
|
@ -818,6 +1013,13 @@ class InitialRegisterForm(forms.Form):
|
||||||
self.fields.pop("register_machine")
|
self.fields.pop("register_machine")
|
||||||
|
|
||||||
def clean_register_room(self):
|
def clean_register_room(self):
|
||||||
|
"""Clean room, call remove_user_room to make the room empty before
|
||||||
|
saving self.instance into that room.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form InitialRegisterForm instance
|
||||||
|
|
||||||
|
"""
|
||||||
if self.cleaned_data["register_room"]:
|
if self.cleaned_data["register_room"]:
|
||||||
if self.user.is_class_adherent:
|
if self.user.is_class_adherent:
|
||||||
remove_user_room(self.new_room)
|
remove_user_room(self.new_room)
|
||||||
|
@ -830,6 +1032,12 @@ class InitialRegisterForm(forms.Form):
|
||||||
user.save()
|
user.save()
|
||||||
|
|
||||||
def clean_register_machine(self):
|
def clean_register_machine(self):
|
||||||
|
"""Clean register room, autoregister machine from user request mac_address.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
self : Apply on a django Form InitialRegisterForm instance
|
||||||
|
|
||||||
|
"""
|
||||||
if self.cleaned_data["register_machine"]:
|
if self.cleaned_data["register_machine"]:
|
||||||
if self.mac_address and self.nas_type:
|
if self.mac_address and self.nas_type:
|
||||||
self.user.autoregister_machine(self.mac_address, self.nas_type)
|
self.user.autoregister_machine(self.mac_address, self.nas_type)
|
||||||
|
|
Loading…
Reference in a new issue