domaine = forms.ModelChoiceField(queryset=Groupe.objects.all(), required=False, label="Domaine de recherche", empty_label="Tous")
fonction = forms.ChoiceField(choices=(('','Tous'),)+FONCTION_CHOICES, required=False, label="Fonction")
pays = forms.ModelChoiceField(queryset=Pays.objects.all().order_by("nom"), required=False, label="Localisation", empty_label="Tous")
- genre = forms.ChoiceField(choices=(('','Tous'),)+GENRE_CHOICES, required=False, label="Genre")
verbose_name='Champ disciplinaire')
expertise = models.TextField(null=True, blank=True, verbose_name='Domaine d\'expertise et thèmes de recherche')
url_site_web = models.URLField(max_length=255, null=True, blank=True,
- verbose_name='Adresse site Internet personnel')
+ verbose_name='Adresse site Internet')
url_blog = models.URLField(max_length=255, null=True, blank=True,
verbose_name='Blog')
url_facebook = models.URLField(max_length=255, null=True, blank=True,
if simpleForm.is_valid ():
pays = simpleForm.cleaned_data["pays"]
if pays:
- list = list.filter(nationalite = pays.pk)
+ list = list.filter(Q(etablissement__pays = pays.pk) | Q(etablissement_autre_pays = pays.pk))
fonction = simpleForm.cleaned_data["fonction"]
if fonction:
list = list.filter(fonction = fonction)
- genre = simpleForm.cleaned_data["genre"]
- if genre:
- list = list.filter(personne__genre=genre)
discipline = simpleForm.cleaned_data["discipline"]
if discipline:
list = list.filter(discipline=discipline)
list = list.filter(groupes=domaine)
mots_cles = simpleForm.cleaned_data["mots_cles"]
if mots_cles:
- list = list.filter (Q(personne__nom__icontains=mots_cles) | Q(personne__prenom__icontains=mots_cles))
+ list = list.filter( Q(personne__nom__search=mots_cles)
+ | Q(personne__prenom__search=mots_cles)
+ | Q(expertise__search=mots_cles)
+ | Q(etablissement_autre_nom__search=mots_cles)
+ | Q(etablissement__nom__search=mots_cles) )
return list
def index(request):
--- /dev/null
+# -*- encoding: utf-8 -*-
+from django import forms
+from models import *
+
+class SiteSearchForm(forms.Form):
+ mots_cles = forms.CharField (required = False, label="Mots-clés")
+ discipline = forms.ModelChoiceField(queryset=Discipline.objects.all(), required=False, label="Discipline", empty_label="Tous")
+ thematique = forms.ModelChoiceField(queryset=Thematique.objects.all(), required=False, label="Thématique", empty_label="Tous")
+ pays = forms.ModelChoiceField(queryset=Pays.objects.all(), required=False, label="Pays", empty_label="Tous")
+
def __unicode__(self):
return "%s" % (self.titre)
+
+ def type_display(self):
+ for t in TYPE_SITE_CHOICES:
+ if self.type == t[0]:
+ return t[1]
+ return "-"
+
# -*- encoding: utf-8 -*-
from django.shortcuts import render_to_response
from django.template import Context, RequestContext
+from django.db.models import Q
from models import Site
+from forms import SiteSearchForm
+
+def search_queryset(request):
+ list = Site.objects.order_by("titre")
+ pays = ""
+
+ simpleForm = SiteSearchForm(request.GET)
+ if simpleForm.is_valid ():
+ pays = simpleForm.cleaned_data["pays"]
+ if pays:
+ list = list.filter(pays = pays.pk)
+ discipline = simpleForm.cleaned_data["discipline"]
+ if discipline:
+ list = list.filter(discipline=discipline)
+ thematique = simpleForm.cleaned_data["thematique"]
+ if thematique:
+ list = list.filter(thematique=thematique)
+
+ mots_cles = simpleForm.cleaned_data["mots_cles"]
+ if mots_cles:
+ list = list.filter( Q(titre__icontains=mots_cles)
+ | Q(description__icontains=mots_cles)
+ | Q(editeur__icontains=mots_cles)
+ | Q(auteur__icontains=mots_cles)
+ | Q(mots_cles__icontains=mots_cles) )
+ return list
+
def index(request):
- sites = Site.objects.all().order_by('titre')
+ sites = search_queryset(request)
+ site_form = SiteSearchForm(request.GET)
+ nb_sites = sites.count()
variables = { 'sites': sites,
+ 'site_form': site_form,
+ 'nb_sites': nb_sites,
}
return render_to_response ("sites/index.html", \
- Context (variables),
+ Context(variables),
context_instance = RequestContext(request))
def retrieve(request, id):
{% extends "container_base.html" %}
{% block contenu %}
-<h4>Sitothèque</h4>
-
-<div class="contenu-wrapper">
-<table id="repertoire">
- <tr>
- <th>Nom</th>
- <th></th>
- </tr>
-{% for s in sites %}
- <tr class="{% cycle 'odd' 'notodd' %}">
- <td><a href="{% url sitotheque.views.retrieve s.id %}">{{ s }}</a></td>
- <td><a href="{{s.url}}"><img src="/media/img/page_white_link.png" /></a></td>
- </tr>
-{% endfor %}
-</table>
-</div>
-
+{% include "sites/rechercher.html" %}
{% endblock %}
--- /dev/null
+{% load pagination_tags %}
+{% load sorting_tags %}
+
+{% autosort sites %}
+{% autopaginate sites 20 %}
+
+<h4>Sitothèque</h4>
+
+<div class="contenu-wrapper">
+
+<form method="get" action="">
+ <table id="repertoire_recherche">
+ {{site_form.as_table}}
+ <tr>
+ <td colspan="2" class="Lib">
+ <input type="submit" class="bouton" value="Rechercher" />
+ </td>
+ </tr>
+ </table>
+</form>
+
+<p><strong>{{nb_sites}} site{{ nb_sites|pluralize }} correspondant à votre recherche :</strong></p>
+<div class="centre">{% paginate %}</div>
+<table id="repertoire">
+ <tr>
+ <th>Nom</th>
+ <th></th>
+ </tr>
+{% for s in sites %}
+ <tr class="{% cycle 'odd' 'notodd' %}">
+ <td><a href="{% url sitotheque.views.retrieve s.id %}">{{ s }}</a></td>
+ <td><a href="{{s.url}}"><img src="/media/img/page_white_link.png" /></a></td>
+ </tr>
+{% endfor %}
+</table>
+<div class="centre">{% paginate %}</div>
+</div>
+
+
<table>
<tr>
<td><strong>Type:</strong></td>
- <td>{{site.type}}</td>
+ <td>{{site.type_display}}</td>
</tr>
<tr>
<td><strong>Éditeur:</strong></td>