Première version en Python-Django.
[auf_paf.git] / paf / forms.py
old mode 100644 (file)
new mode 100755 (executable)
index f752f87..2ac86ea
@@ -1,36 +1,47 @@
+# -*- coding: utf8 -*-
 from django import forms
 from captcha.fields import CaptchaField
 from paf.models import Student
 from django.contrib.auth.models import User, Group
 from string import zfill
+import re
 
 class RegistrationForm(forms.Form):
     NATIONALITY_CHOICES = (
         ('KH', 'Cambodgienne'),
         ('LA', 'Laotienne'),
-        ('AN', 'Vietnamienne'),
+        ('VN', 'Vietnamienne'),
         ('ZZ', 'Autre'),
     )
     GENDER_CHOICES = (
         ('M', 'Male'),
         ('F', 'Female'),
     )
-    lastname = forms.CharField()
-    firstname= forms.CharField()
-    nationality = forms.ChoiceField(choices=NATIONALITY_CHOICES)
-    sex = forms.ChoiceField(choices=GENDER_CHOICES)
-    dob = forms.DateField(label='date of birth', input_formats=('%d/%m/%Y',), help_text='input date of the form dd/mm/yyyy')
-    tel = forms.CharField()
-    parent_tel = forms.CharField(required=False)
-    parent_address = forms.CharField(max_length=120)
-    email = forms.EmailField(required=False)
-    captcha = CaptchaField()
-    password = forms.CharField(widget=forms.PasswordInput)
-    confirm_password = forms.CharField(widget=forms.PasswordInput)
+    lastname = forms.CharField(label=u"Nom")
+    firstname= forms.CharField(label=u"Prénom")
+    nationality = forms.ChoiceField(choices=NATIONALITY_CHOICES, label=u"Nationalité")
+    sex = forms.ChoiceField(choices=GENDER_CHOICES, label=u"Sexe")
+    dob = forms.DateField(label='Date de naissance', input_formats=('%d/%m/%Y',), help_text='Entrer la date sous forme jj/mm/aaaa')
+    tel = forms.CharField(label=u"Tél.")
+    parent_tel = forms.CharField(required=False,label=u"Tél. de parents")
+    parent_address = forms.CharField(max_length=120, label=u"Adresse de parents")
+    email = forms.EmailField(required=False, label=u"Email")
+    captcha = CaptchaField(help_text=u"Entrer les caractères dans l'image", label=u"Entrer le code affiché")
+    password = forms.CharField(widget=forms.PasswordInput, label=u"Mot de passe", min_length=6, help_text=u"Au moins 6 caractères contenant <br />([a..z], [A..Z], [0..9], [!, @, #, $, %, ^, &, *])")
+    confirm_password = forms.CharField(widget=forms.PasswordInput, label=u"Confirmation du mot de passe", min_length=6)
     
+    def clean_password(self):
+        pw = self.cleaned_data['password']
+        if not (re.match(r'.*[a-z].*', pw) and re.match(r'.*[A-Z].*', pw) and re.match(r'.*[0-9].*', pw) and re.match(r'.*[!@#$%^&*].*', pw) ):
+            raise forms.ValidationError(u"Mot de passe invalide!")
+
     def clean_confirm_password(self):
+#        if 'password' not in self.cleaned_data: return
+      try:
         if self.cleaned_data['password'] != self.cleaned_data['confirm_password']:
-            raise forms.ValidationError("Your confirm password is different from password!")
+            raise forms.ValidationError(u"Le mot de passe confirmé est différent du mot de passe!")
+      except:
+         pass
     
     def save(self):
         student = self.create_student()
@@ -76,4 +87,4 @@ class RegistrationForm(forms.Form):
         except:
             group = Group(name='student')
             group.save()
-        return group
\ No newline at end of file
+        return group