864de6d804c1452bcae28429c937aa10aa139233
1 # -*- encoding: utf-8 -*-
3 from django
import forms
4 from datamaster_modeles
.models
import Thematique
, Pays
, Region
5 from models
import Evenement
, Discipline
, Record
, Actualite
6 from savoirs
.lib
.recherche
import build_search_regexp
8 # Formulaires de recherche
10 class RechercheAvancee (forms
.Form
):
11 creator
= forms
.CharField (max_length
=60, required
=False, \
12 label
= "Auteur ou contributeur") # + contributor
13 title
= forms
.CharField (max_length
=100, required
=False, \
14 label
= "Titre") # + alt_title
15 description
= forms
.CharField (max_length
=100, required
=False, \
16 label
= "Description ou résumé") # + abstract
17 subject
= forms
.CharField (max_length
=100, required
=False, label
= "Sujet")
18 operator
= forms
.ChoiceField (choices
= (('or', 'ou'), ('and', 'et')), label
= "Operateur")
19 type = forms
.CharField (initial
='avancee', required
=False, widget
=forms
.HiddenInput
)
21 class RecordSearchForm(forms
.Form
):
22 """Formulaire de recherche pour les ressources."""
24 q
= forms
.CharField(required
=False, label
="Mots-clés")
25 auteur
= forms
.CharField(required
=False, label
="Auteur ou contributeur")
26 titre
= forms
.CharField(required
=False, label
="Titre")
27 sujet
= forms
.CharField(required
=False, label
="Sujet")
29 def get_query_set(self
):
30 """Retourne l'ensemble des ressources qui correspondent aux valeurs
31 entrées dans le formulaire."""
32 records
= Record
.objects
.validated()
34 query
= self
.cleaned_data
['q']
36 records
= records
.search(query
)
37 auteur
= self
.cleaned_data
['auteur']
39 records
= records
.search_auteur(auteur
)
40 titre
= self
.cleaned_data
['titre']
42 records
= records
.search_titre(titre
)
43 sujet
= self
.cleaned_data
['sujet']
45 records
= records
.search_sujet(sujet
)
48 def get_search_regexp(self
):
49 """Retourne une expression régulière compilée qui peut servir à
50 chercher les mot-clés recherchés dans un texte."""
52 return build_search_regexp(self
.cleaned_data
['q'])
54 class ActualiteSearchForm(forms
.Form
):
55 """Formulaire de recherche pour les actualités."""
57 q
= forms
.CharField(required
=False, label
="Mots-clés")
58 date_min
= forms
.DateField(required
=False, label
="Depuis le",
59 widget
=forms
.DateInput(attrs
={'class': 'date'}),
60 input_formats
=['%d/%m/%Y'])
61 date_max
= forms
.DateField(required
=False, label
="Jusqu'au",
62 widget
=forms
.DateInput(attrs
={'class': 'date'}),
63 input_formats
=['%d/%m/%Y'])
65 def get_query_set(self
):
66 """Retourne l'ensemble des actualités qui correspondent aux valeurs
67 entrées dans le formulaire."""
68 actualites
= Actualite
.objects
.filter(visible
=True)
70 query
= self
.cleaned_data
['q']
72 actualites
= actualites
.search(query
)
73 date_min
= self
.cleaned_data
['date_min']
76 actualites
= actualites
.filter(date__gte
=date_min
)
77 date_max
= self
.cleaned_data
['date_max']
79 actualites
= actualites
.filter(date__lte
=date_max
)
82 def get_search_regexp(self
):
83 """Retourne une expression régulière compilée qui peut servir à
84 chercher les mot-clés recherchés dans un texte."""
86 return build_search_regexp(self
.cleaned_data
['q'])
89 class EvenementForm(forms
.ModelForm
):
92 exclude
= ('approuve', 'uid')
94 # Admin views pour les associations par lots
96 class PaysForm(forms
.Form
):
97 values
= [(p
.id, p
.nom
) for p
in Pays
.objects
.all()]
98 pays
= forms
.MultipleChoiceField(choices
=values
)
100 class RegionsForm(forms
.Form
):
101 values
= [(r
.id, r
.nom
) for r
in Region
.objects
.all()]
102 regions
= forms
.MultipleChoiceField(choices
=values
)
104 class ThematiquesForm(forms
.Form
):
105 values
= [(t
.id, t
.nom
) for t
in Thematique
.objects
.all()]
106 thematiques
= forms
.MultipleChoiceField(choices
=values
)
108 class DisciplinesForm(forms
.Form
):
109 values
= [(t
.id, t
.nom
) for t
in Discipline
.objects
.all()]
110 disciplines
= forms
.MultipleChoiceField(choices
=values
)
112 class ConfirmationForm(forms
.Form
):