b126abd182b95afdb18eb457fc7fa6cf9cd5c48f
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']
75 actualites
= actualites
.filter(date__gte
=date_min
)
76 date_max
= self
.cleaned_data
['date_max']
78 actualites
= actualites
.filter(date__lte
=date_max
)
81 def get_search_regexp(self
):
82 """Retourne une expression régulière compilée qui peut servir à
83 chercher les mot-clés recherchés dans un texte."""
85 return build_search_regexp(self
.cleaned_data
['q'])
87 class EvenementSearchForm(forms
.Form
):
88 """Formulaire de recherche pour les événements."""
90 q
= forms
.CharField(required
=False, label
="Mots-clés")
92 def get_query_set(self
):
93 """Retourne l'ensemble des événements qui correspondent aux valeurs
94 entrées dans le formulaire."""
95 evenements
= Evenement
.objects
.filter(approuve
=True)
97 query
= self
.cleaned_data
['q']
99 evenements
= evenements
.search(query
)
102 def get_search_regexp(self
):
103 """Retourne une expression régulière compilée qui peut servir à
104 chercher les mot-clés recherchés dans un texte."""
106 return build_search_regexp(self
.cleaned_data
['q'])
110 class EvenementForm(forms
.ModelForm
):
113 exclude
= ('approuve', 'uid')
115 # Admin views pour les associations par lots
117 class PaysForm(forms
.Form
):
118 values
= [(p
.id, p
.nom
) for p
in Pays
.objects
.all()]
119 pays
= forms
.MultipleChoiceField(choices
=values
)
121 class RegionsForm(forms
.Form
):
122 values
= [(r
.id, r
.nom
) for r
in Region
.objects
.all()]
123 regions
= forms
.MultipleChoiceField(choices
=values
)
125 class ThematiquesForm(forms
.Form
):
126 values
= [(t
.id, t
.nom
) for t
in Thematique
.objects
.all()]
127 thematiques
= forms
.MultipleChoiceField(choices
=values
)
129 class DisciplinesForm(forms
.Form
):
130 values
= [(t
.id, t
.nom
) for t
in Discipline
.objects
.all()]
131 disciplines
= forms
.MultipleChoiceField(choices
=values
)
133 class ConfirmationForm(forms
.Form
):