Merge branch 'master' of ssh://gitosis@git.auf/auf_savoirs_en_partage_django
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / chercheurs / forms.py
CommitLineData
932eef9a
AJ
1# -*- encoding: utf-8 -*-
2from django import forms
3from models import *
0e9597af 4from models import Utilisateur
13146d99 5
932eef9a 6class PersonneForm(forms.ModelForm):
c18af6bd
AJ
7 password = forms.CharField(widget=forms.PasswordInput(), label="Mot de passe")
8 genre = forms.ChoiceField(widget=forms.RadioSelect(), choices=GENRE_CHOICES)
932eef9a 9 class Meta:
dab519fa
AJ
10 model = Utilisateur
11 fields = ('nom', 'prenom', 'courriel', 'password', 'genre')
5ecd9e43 12
3eb00212
AJ
13class GroupeForm(forms.ModelForm):
14 class Meta:
15 model = Chercheur
16 fields = ('groupes',)
932eef9a
AJ
17
18class ChercheurForm(forms.ModelForm):
19 class Meta:
20 model = Chercheur
a4e383ac 21 fields = ('statut', 'diplome', )
7c596de2 22
00755d9b
AJ
23class PublicationForm(forms.ModelForm):
24 class Meta:
25 model = Publication
6befc7c9 26 fields = ('titre', 'annee', 'revue', 'editeur', 'lieu_edition', 'nb_pages', 'url')
f810842d
AJ
27
28class TheseForm(PublicationForm):
2a36714f 29 titre = forms.CharField(required=True, label="Titre de la thèse ou du mémoire")
a4e383ac 30 annee = forms.IntegerField(required=True, label="Année de soutenance (réalisée ou prévue)")
2a36714f
AJ
31 editeur = forms.CharField(required=False, label="Directeur de thèse")
32 lieu_edition = forms.CharField(required=False, label="Établissement de soutenance")
e8e9e4fd
AJ
33 class Meta:
34 model = Publication
2a36714f 35 fields = ('titre', 'annee', 'editeur', 'lieu_edition', 'nb_pages', 'url')
a4e383ac
AJ
36
37 #def clean(self):
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")
42 #
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.")
2a36714f 46
5b9abc81 47class ExpertiseForm(forms.ModelForm):
b57a7362 48 date = forms.DateInput(attrs={'class': 'date'}, format='%d/%m/%Y')
5b9abc81
AJ
49 class Meta:
50 model = Expertise
51 fields = ('nom', 'date', 'organisme_demandeur', 'organisme_demandeur_visible')
dab519fa 52
7c596de2
AJ
53class EtablissementForm(forms.ModelForm):
54 class Meta:
55 model = Chercheur
56 fields = ('etablissement',)
a4e383ac
AJ
57 def clean(self):
58 statut = self.data.get('chercheur-statut')
59 etablissement = self.cleaned_data.get("etablissement")
60 etablissement_autre_nom = self.data.get("etablissement_autre-etablissement_autre_nom")
61
62 if statut == "enseignant":
63 if not etablissement or not etablissement_autre_nom:
64 raise forms.ValidationError("")
65
7c596de2 66
00755d9b
AJ
67class EtablissementAutreForm(forms.ModelForm):
68 class Meta:
69 model = Chercheur
a4e383ac 70 fields = ('etablissement_autre_nom', 'etablissement_autre_pays' )
00755d9b 71
7c596de2
AJ
72class DisciplineForm(forms.ModelForm):
73 class Meta:
74 model = Chercheur
a4e383ac 75 fields = ('discipline', 'theme_recherche', 'mots_cles', 'url_site_web', 'url_blog',)
13146d99 76
b3e1079e
AJ
77class PersonneEditForm(forms.ModelForm):
78 class Meta:
79 model = Personne
80 fields = ('nom', 'prenom', 'genre')
5b9abc81 81
13146d99 82class RepertoireSearchForm (forms.Form):
0e9597af
AJ
83 mots_cles = forms.CharField (required = False, label="Mots-clés")
84 discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), required=False, label="Discipline", empty_label="Tous")
85 domaine = forms.ModelChoiceField(queryset=Groupe.objects.all(), required=False, label="Domaine de recherche", empty_label="Tous")
8ea92a0d 86 fonction = forms.ChoiceField(choices=(('','Tous'),('chercheur','Chercheur'), ('enseignant','Enseignant-Chercheur'), ('expert','Expert')), required=False, label="Fonction")
0e9597af
AJ
87 pays = forms.ModelChoiceField(queryset=Pays.objects.all().order_by("nom"), required=False, label="Localisation", empty_label="Tous")
88
89class SendPasswordForm(forms.Form):
90 email = forms.EmailField(required=True, label="courriel")
91 def clean_email(self):
92 cleaned_data = self.cleaned_data
93 email = cleaned_data.get("email")
94 if email:
95 try:
96 Utilisateur.objects.get(courriel=email)
97 except:
98 raise forms.ValidationError("Ce courriel n'existe pas dans notre base de données.")
e427f068
AJ
99 return email
100
101class NewPasswordForm(forms.Form):
102 password = forms.CharField(widget=forms.PasswordInput(), required=True, label="Mot de passe")
103 password_repeat = forms.CharField(widget=forms.PasswordInput(), required=True, label="Confirmez mot de passe")
104 def clean_password_repeat(self):
105 cleaned_data = self.cleaned_data
106 password = cleaned_data.get("password")
107 password_repeat = cleaned_data.get("password_repeat")
108 if password and password_repeat:
109 if password != password_repeat:
110 raise forms.ValidationError("Les mots de passe ne concordent pas")
111 return password_repeat
0e9597af 112