Tri approprié des briques
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / sitotheque / forms.py
CommitLineData
54ab837c 1# -*- encoding: utf-8 -*-
f0692c02 2from datamaster_modeles.models import Discipline, Region
54ab837c
AJ
3from django import forms
4from models import *
878de341 5from savoirs.lib.recherche import build_search_regexp
54ab837c
AJ
6
7class SiteSearchForm(forms.Form):
f0692c02
EMS
8 q = forms.CharField(required=False, label="Rechercher dans tous les champs")
9 discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), required=False, label="Discipline", empty_label="Toutes")
3eba0476 10 pays = forms.ModelChoiceField(queryset=Pays.objects.all(), required=False, label="Pays", empty_label="Tous")
bc415771
EMS
11 region = forms.ModelChoiceField(queryset=Region.objects.all(), required=False, label="Région", empty_label="Toutes",
12 help_text="La région est ici définie au sens, non strictement géographique, du Bureau régional de l'AUF de référence.")
54ab837c 13
878de341
EMS
14 def get_query_set(self):
15 """Retourne l'ensemble des sites qui correspondent aux valeurs
16 entrées dans le formulaire."""
116db1fd 17 sites = Site.objects.order_by("titre")
f0692c02
EMS
18 if self.is_valid():
19 q = self.cleaned_data["q"]
20 if q:
21 sites = sites.search(q)
22 discipline = self.cleaned_data['discipline']
23 if discipline:
24 sites = sites.filter_discipline(discipline)
25 region = self.cleaned_data['region']
26 if region:
27 sites = sites.filter_region(region)
878de341
EMS
28 pays = self.cleaned_data["pays"]
29 if pays:
116db1fd 30 sites = sites.filter(pays=pays.pk)
7020ea3d
EMS
31
32 if not q:
33 sites = sites.order_by('-date_maj')
116db1fd
EMS
34 return sites
35
36 def get_search_regexp(self):
37 """Retourne une expression régulière compilée qui peut servir à
38 chercher les mot-clés recherchés dans un texte."""
39 if self.is_valid():
40 return build_search_regexp(self.cleaned_data['q'])