76 lines
4.1 KiB
Python
76 lines
4.1 KiB
Python
# -*- encoding: utf-8 -*-
|
|
|
|
from django import forms
|
|
from django.conf import settings
|
|
import datetime
|
|
import pfusers
|
|
|
|
class ConfirmForm(forms.Form):
|
|
pass
|
|
|
|
class UploadFileForm(forms.Form):
|
|
file = forms.FileField(label=u"Fichier", required=True)
|
|
|
|
class UserForm(forms.Form):
|
|
name = forms.RegexField(label=u"Nom d'utilisateur (login)", regex='^[a-z0-9\.\-_]+$', min_length=3, max_length=16, required=True,
|
|
widget=forms.TextInput(attrs={'readonly': True, 'size':'16', 'autocomplete':'off', 'class':'span2'}))
|
|
disabled = forms.BooleanField(label=u'Désactivé',required=False)
|
|
password = forms.CharField(label=u"Nouveau mot de passe", min_length=3, max_length=64, required=False,
|
|
widget=forms.PasswordInput(attrs={'size':'32', 'autocomplete':'off', 'class':'span3'}))
|
|
password2 = forms.CharField(label=u"Mot de passe (vérification)", min_length=3, max_length=64, required=False,
|
|
widget=forms.PasswordInput(attrs={'size':'32', 'autocomplete':'off', 'class':'span3'}))
|
|
expires = forms.DateField(label=u"Date d'expiration", required=False,
|
|
widget=forms.TextInput(attrs={'size':'16', 'class':'span2 datepicker'}))
|
|
descr = forms.CharField(label=u'Description (nom long)', max_length=256, required=False,
|
|
widget=forms.TextInput(attrs={'size':'256', 'class':'span6'}))
|
|
multiple = forms.BooleanField(label=u'Connexions multiples autorisées',required=False)
|
|
|
|
def is_valid(self):
|
|
valid = super(UserForm, self).is_valid()
|
|
if valid:
|
|
# check passwords
|
|
password = self.cleaned_data.get('password')
|
|
password2 = self.cleaned_data.get('password2')
|
|
if password != password2:
|
|
self.errors['password'] = [u'Les deux mots de passe doivent être identiques']
|
|
valid = False
|
|
return valid
|
|
|
|
class NewUserForm(UserForm):
|
|
name = forms.RegexField(label=u"Nom d'utilisateur (login)", regex='^[a-z0-9\.\-_]+$', min_length=3, max_length=16, required=True,
|
|
widget=forms.TextInput(attrs={'size':'16', 'autocomplete':'off', 'class':'span2'}),
|
|
help_text="""Uniquement lettres, chiffres, point, trait d'union et «_».
|
|
Si création de plusieurs utilisateurs (voir plus bas), leur login sera de la forme login-N.""")
|
|
# password and expire fields
|
|
password = forms.CharField(label=u"Mot de passe", min_length=3, max_length=64, required=False,
|
|
help_text="""Si vous n'indiquez pas de mot de passe, un mot de passe aléatoire sera
|
|
attribué à chaque utilisateur""",
|
|
widget=forms.PasswordInput(attrs={'size':'32', 'autocomplete':'off', 'class':'span3'}))
|
|
expires = forms.DateField(label=u"Date d'expiration", required=(settings.IDP_UA_MAX_EXPIRES > 0),
|
|
widget=forms.TextInput(attrs={'size':'16', 'class':'span2 datepicker'}))
|
|
userset_number = forms.IntegerField(label=u"Nombre d'utilisateur(s) à créer (login-N)",
|
|
widget=forms.TextInput(attrs={'size':'5', 'class':'span1'}),
|
|
required=True, min_value=1)
|
|
userset_start = forms.IntegerField(label=u"""En cas de création de plusieurs utilisateurs (login-N),
|
|
indiquer le premier numéro N""",
|
|
widget=forms.TextInput(attrs={'size':'5', 'class':'span1'}),
|
|
required=True)
|
|
|
|
def is_valid(self):
|
|
valid = super(NewUserForm, self).is_valid()
|
|
if valid:
|
|
name = self.cleaned_data.get('name')
|
|
all_pfusers = pfusers.get_all_pfusers()
|
|
userset_number = int(self.cleaned_data.get('userset_number'))
|
|
if userset_number == 1 and all_pfusers.get(name, None) is not None:
|
|
self.errors['name'] = [u'Un utilisateur avec ce login existe déjà.']
|
|
return False
|
|
if userset_number > 1:
|
|
userset_start = int(self.cleaned_data.get('userset_start'))
|
|
for n in range(userset_start, userset_start + userset_number):
|
|
if all_pfusers.get('%s-%d' % (name, n), None) is not None:
|
|
self.errors['name'] = [u"L'utilisateur %s-%d existe déjà." % (name, n)]
|
|
return False
|
|
return valid
|
|
|