Recherche de ressources par auteur, titre, sujet.
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / savoirs / forms.py
1 # -*- encoding: utf-8 -*-
2 from django import forms
3 from datamaster_modeles.models import Thematique, Pays, Region
4 from models import Evenement, Discipline, Record
5
6 # Formulaires de recherche
7
8 class RechercheAvancee (forms.Form):
9 creator = forms.CharField (max_length=60, required=False, \
10 label = "Auteur ou contributeur") # + contributor
11 title = forms.CharField (max_length=100, required=False, \
12 label = "Titre") # + alt_title
13 description = forms.CharField (max_length=100, required=False, \
14 label = "Description ou résumé") # + abstract
15 subject = forms.CharField (max_length=100, required=False, label = "Sujet")
16 operator = forms.ChoiceField (choices = (('or', 'ou'), ('and', 'et')), label = "Operateur")
17 type = forms.CharField (initial='avancee', required=False, widget=forms.HiddenInput)
18
19 class RecordSearchForm(forms.Form):
20 """Formulaire de recherche pour les ressources."""
21
22 q = forms.CharField(required=False, label="Mots-clés")
23 auteur = forms.CharField(required=False, label="Auteur ou contributeur")
24 titre = forms.CharField(required=False, label="Titre")
25 sujet = forms.CharField(required=False, label="Sujet")
26
27 def get_query_set(self):
28 """Retourne l'ensemble des ressources qui correspondent aux valeurs
29 entrées dans le formulaire."""
30 records = Record.objects.all()
31 if self.is_valid():
32 query = self.cleaned_data['q']
33 if query:
34 records = records.search(query)
35 auteur = self.cleaned_data['auteur']
36 if auteur:
37 records = records.search_auteur(auteur)
38 titre = self.cleaned_data['titre']
39 if titre:
40 records = records.search_titre(titre)
41 sujet = self.cleaned_data['sujet']
42 if sujet:
43 records = records.search_sujet(sujet)
44 return records
45
46 ###
47
48 class EvenementForm(forms.ModelForm):
49 class Meta:
50 model = Evenement
51 exclude = ('approuve', 'uid')
52
53 # Admin views pour les associations par lots
54
55 class PaysForm(forms.Form):
56 values = [(p.id, p.nom) for p in Pays.objects.all()]
57 pays = forms.MultipleChoiceField(choices=values)
58
59 class RegionsForm(forms.Form):
60 values = [(r.id, r.nom) for r in Region.objects.all()]
61 regions = forms.MultipleChoiceField(choices=values)
62
63 class ThematiquesForm(forms.Form):
64 values = [(t.id, t.nom) for t in Thematique.objects.all()]
65 thematiques = forms.MultipleChoiceField(choices=values)
66
67 class DisciplinesForm(forms.Form):
68 values = [(t.id, t.nom) for t in Discipline.objects.all()]
69 disciplines = forms.MultipleChoiceField(choices=values)
70
71 class ConfirmationForm(forms.Form):
72 pass
73