Chercheurs + sitotheque
authorAli Jetha <ali@U-AJ.(none)>
Thu, 21 Oct 2010 21:46:30 +0000 (17:46 -0400)
committerAli Jetha <ali@U-AJ.(none)>
Thu, 21 Oct 2010 21:46:30 +0000 (17:46 -0400)
auf_savoirs_en_partage/chercheurs/forms.py
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/chercheurs/views.py
auf_savoirs_en_partage/sitotheque/forms.py [new file with mode: 0644]
auf_savoirs_en_partage/sitotheque/models.py
auf_savoirs_en_partage/sitotheque/views.py
auf_savoirs_en_partage/templates/sites/index.html
auf_savoirs_en_partage/templates/sites/rechercher.html [new file with mode: 0644]
auf_savoirs_en_partage/templates/sites/retrieve.html

index 86a491a..abf2153 100644 (file)
@@ -59,4 +59,3 @@ class RepertoireSearchForm (forms.Form):
       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")
index 173d8ad..8def0f8 100644 (file)
@@ -56,7 +56,7 @@ class Chercheur(models.Model):
                                         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,
index f319722..d738be6 100644 (file)
@@ -54,13 +54,10 @@ def chercheur_queryset (request):
     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)
@@ -69,7 +66,11 @@ def chercheur_queryset (request):
             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):
diff --git a/auf_savoirs_en_partage/sitotheque/forms.py b/auf_savoirs_en_partage/sitotheque/forms.py
new file mode 100644 (file)
index 0000000..2f4869f
--- /dev/null
@@ -0,0 +1,10 @@
+# -*- 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")
+
index 064632f..f6ed23a 100644 (file)
@@ -43,3 +43,10 @@ class Site(models.Model):
     
     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 "-"
+
index 88b4875..75bc0aa 100644 (file)
@@ -1,15 +1,47 @@
 # -*- 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):
index 94d9eb8..55b5e66 100644 (file)
@@ -1,21 +1,5 @@
 {% 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 %}
diff --git a/auf_savoirs_en_partage/templates/sites/rechercher.html b/auf_savoirs_en_partage/templates/sites/rechercher.html
new file mode 100644 (file)
index 0000000..d1d4007
--- /dev/null
@@ -0,0 +1,39 @@
+{% 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>
+
+
index c9ec2ce..3c86e12 100644 (file)
@@ -11,7 +11,7 @@
     <table>
         <tr>
             <td><strong>Type:</strong></td>
-            <td>{{site.type}}</td>
+            <td>{{site.type_display}}</td>
         </tr>
         <tr>
             <td><strong>Éditeur:</strong></td>