1 # -*- encoding: utf-8 -*-
2 from django
import forms
4 from models
import Utilisateur
6 class PersonneForm(forms
.ModelForm
):
7 password
= forms
.CharField(widget
=forms
.PasswordInput(), label
="Mot de passe")
8 genre
= forms
.ChoiceField(widget
=forms
.RadioSelect(), choices
=GENRE_CHOICES
)
11 fields
= ('nom', 'prenom', 'courriel', 'password', 'genre')
13 class GroupeForm(forms
.ModelForm
):
18 class ChercheurForm(forms
.ModelForm
):
21 fields
= ('statut', 'diplome', )
23 class PublicationForm(forms
.ModelForm
):
26 fields
= ('titre', 'annee', 'revue', 'editeur', 'lieu_edition', 'nb_pages', 'url')
28 class TheseForm(PublicationForm
):
29 titre
= forms
.CharField(required
=True, label
="Titre de la thèse ou du mémoire")
30 annee
= forms
.IntegerField(required
=True, label
="Année de soutenance (réalisée ou prévue)")
31 editeur
= forms
.CharField(required
=False, label
="Directeur de thèse")
32 lieu_edition
= forms
.CharField(required
=False, label
="Établissement de soutenance")
35 fields
= ('titre', 'annee', 'editeur', 'lieu_edition', 'nb_pages', 'url')
38 # statut = self.data.get('chercheur-statut')
39 # titre = self.cleaned_data.get("titre")
40 # annee = self.cleaned_data.get("annee")
41 # editeur = self.cleaned_data.get("editeur")
43 # if (statut == "enseignant" or statut == "etudiant") \
44 # and (not titre or not annee or not editeur):
45 # raise forms.ValidationError("Vous devez renseigner la rubrique thèse.")
47 class ExpertiseForm(forms
.ModelForm
):
50 fields
= ('nom', 'date', 'organisme_demandeur', 'organisme_demandeur_visible')
52 class EtablissementForm(forms
.ModelForm
):
55 fields
= ('etablissement',)
57 statut
= self
.data
.get('chercheur-statut')
58 etablissement
= self
.cleaned_data
.get("etablissement")
59 etablissement_autre_nom
= self
.data
.get("etablissement_autre-etablissement_autre_nom")
61 if statut
== "enseignant":
62 if not etablissement
or not etablissement_autre_nom
:
63 raise forms
.ValidationError("")
66 class EtablissementAutreForm(forms
.ModelForm
):
69 fields
= ('etablissement_autre_nom', 'etablissement_autre_pays' )
71 class DisciplineForm(forms
.ModelForm
):
74 fields
= ('discipline', 'theme_recherche', 'mots_cles', 'url_site_web', 'url_blog',)
76 class PersonneEditForm(forms
.ModelForm
):
79 fields
= ('nom', 'prenom', 'genre')
81 class RepertoireSearchForm (forms
.Form
):
82 mots_cles
= forms
.CharField (required
= False, label
="Mots-clés")
83 discipline
= forms
.ModelChoiceField(queryset
=Discipline
.objects
.all(), required
=False, label
="Discipline", empty_label
="Tous")
84 domaine
= forms
.ModelChoiceField(queryset
=Groupe
.objects
.all(), required
=False, label
="Domaine de recherche", empty_label
="Tous")
85 fonction
= forms
.ChoiceField(choices
=(('','Tous'),('chercheur','Chercheur'), ('enseignant','Enseignant-Chercheur'), ('expert','Expert')), required
=False, label
="Fonction")
86 pays
= forms
.ModelChoiceField(queryset
=Pays
.objects
.all().order_by("nom"), required
=False, label
="Localisation", empty_label
="Tous")
88 class SendPasswordForm(forms
.Form
):
89 email
= forms
.EmailField(required
=True, label
="courriel")
90 def clean_email(self
):
91 cleaned_data
= self
.cleaned_data
92 email
= cleaned_data
.get("email")
95 Utilisateur
.objects
.get(courriel
=email
)
97 raise forms
.ValidationError("Ce courriel n'existe pas dans notre base de données.")
100 class NewPasswordForm(forms
.Form
):
101 password
= forms
.CharField(widget
=forms
.PasswordInput(), required
=True, label
="Mot de passe")
102 password_repeat
= forms
.CharField(widget
=forms
.PasswordInput(), required
=True, label
="Confirmez mot de passe")
103 def clean_password_repeat(self
):
104 cleaned_data
= self
.cleaned_data
105 password
= cleaned_data
.get("password")
106 password_repeat
= cleaned_data
.get("password_repeat")
107 if password
and password_repeat
:
108 if password
!= password_repeat
:
109 raise forms
.ValidationError("Les mots de passe ne concordent pas")
110 return password_repeat