5568ceaf60145a8506817e1de75f22aeeb4d9979
1 # -*- encoding: utf-8 -*-
3 from django
import forms
4 from django
.db
import models
5 from django
.contrib
.admin
import widgets
6 from datamaster_modeles
.models
import Thematique
, Pays
, Region
7 from models
import Evenement
, Discipline
, Record
, Actualite
8 from savoirs
.lib
.recherche
import build_search_regexp
9 from savoirs
.admin
import EvenementAdminForm
11 # Formulaires de recherche
13 class RechercheAvancee (forms
.Form
):
14 creator
= forms
.CharField (max_length
=60, required
=False, \
15 label
= "Auteur ou contributeur") # + contributor
16 title
= forms
.CharField (max_length
=100, required
=False, \
17 label
= "Titre") # + alt_title
18 description
= forms
.CharField (max_length
=100, required
=False, \
19 label
= "Description ou résumé") # + abstract
20 subject
= forms
.CharField (max_length
=100, required
=False, label
= "Sujet")
21 operator
= forms
.ChoiceField (choices
= (('or', 'ou'), ('and', 'et')), label
= "Operateur")
22 type = forms
.CharField (initial
='avancee', required
=False, widget
=forms
.HiddenInput
)
24 class RecordSearchForm(forms
.Form
):
25 """Formulaire de recherche pour les ressources."""
27 q
= forms
.CharField(required
=False, label
="Mots-clés")
28 auteur
= forms
.CharField(required
=False, label
="Auteur ou contributeur")
29 titre
= forms
.CharField(required
=False, label
="Titre")
30 sujet
= forms
.CharField(required
=False, label
="Sujet")
32 def get_query_set(self
):
33 """Retourne l'ensemble des ressources qui correspondent aux valeurs
34 entrées dans le formulaire."""
35 records
= Record
.objects
.validated()
37 query
= self
.cleaned_data
['q']
39 records
= records
.search(query
)
40 auteur
= self
.cleaned_data
['auteur']
42 records
= records
.search_auteur(auteur
)
43 titre
= self
.cleaned_data
['titre']
45 records
= records
.search_titre(titre
)
46 sujet
= self
.cleaned_data
['sujet']
48 records
= records
.search_sujet(sujet
)
51 def get_search_regexp(self
):
52 """Retourne une expression régulière compilée qui peut servir à
53 chercher les mot-clés recherchés dans un texte."""
55 return build_search_regexp(self
.cleaned_data
['q'])
57 class ActualiteSearchForm(forms
.Form
):
58 """Formulaire de recherche pour les actualités."""
60 q
= forms
.CharField(required
=False, label
="Mots-clés")
61 date_min
= forms
.DateField(required
=False, label
="Depuis le",
62 widget
=forms
.DateInput(attrs
={'class': 'date'}),
63 input_formats
=['%d/%m/%Y'])
64 date_max
= forms
.DateField(required
=False, label
="Jusqu'au",
65 widget
=forms
.DateInput(attrs
={'class': 'date'}),
66 input_formats
=['%d/%m/%Y'])
68 def get_query_set(self
):
69 """Retourne l'ensemble des actualités qui correspondent aux valeurs
70 entrées dans le formulaire."""
71 actualites
= Actualite
.objects
.filter(visible
=True)
73 query
= self
.cleaned_data
['q']
75 actualites
= actualites
.search(query
)
76 date_min
= self
.cleaned_data
['date_min']
78 actualites
= actualites
.filter(date__gte
=date_min
)
79 date_max
= self
.cleaned_data
['date_max']
81 actualites
= actualites
.filter(date__lte
=date_max
)
84 def get_search_regexp(self
):
85 """Retourne une expression régulière compilée qui peut servir à
86 chercher les mot-clés recherchés dans un texte."""
88 return build_search_regexp(self
.cleaned_data
['q'])
90 class EvenementSearchForm(forms
.Form
):
91 """Formulaire de recherche pour les événements."""
93 q
= forms
.CharField(required
=False, label
="Mots-clés")
95 def get_query_set(self
):
96 """Retourne l'ensemble des événements qui correspondent aux valeurs
97 entrées dans le formulaire."""
98 evenements
= Evenement
.objects
.filter(approuve
=True)
100 query
= self
.cleaned_data
['q']
102 evenements
= evenements
.search(query
)
105 def get_search_regexp(self
):
106 """Retourne une expression régulière compilée qui peut servir à
107 chercher les mot-clés recherchés dans un texte."""
109 return build_search_regexp(self
.cleaned_data
['q'])
113 class FrontEndSplitDateTime(widgets
.AdminSplitDateTime
):
116 js
= ('js/calendrier.js', )
117 css
= {'all' : ('css/calendrier.css', )}
119 class EvenementForm(EvenementAdminForm
):
120 debut
= forms
.DateTimeField(widget
=FrontEndSplitDateTime
)
121 fin
= forms
.DateTimeField(widget
=FrontEndSplitDateTime
)
125 exclude
= ('approuve', 'uid')
127 # Admin views pour les associations par lots
129 class PaysForm(forms
.Form
):
130 values
= [(p
.id, p
.nom
) for p
in Pays
.objects
.all()]
131 pays
= forms
.MultipleChoiceField(choices
=values
)
133 class RegionsForm(forms
.Form
):
134 values
= [(r
.id, r
.nom
) for r
in Region
.objects
.all()]
135 regions
= forms
.MultipleChoiceField(choices
=values
)
137 class ThematiquesForm(forms
.Form
):
138 values
= [(t
.id, t
.nom
) for t
in Thematique
.objects
.all()]
139 thematiques
= forms
.MultipleChoiceField(choices
=values
)
141 class DisciplinesForm(forms
.Form
):
142 values
= [(t
.id, t
.nom
) for t
in Discipline
.objects
.all()]
143 disciplines
= forms
.MultipleChoiceField(choices
=values
)
145 class ConfirmationForm(forms
.Form
):