Recherche de ressources par discipline et région.
authorEric Mc Sween <eric.mcsween@gmail.com>
Mon, 1 Nov 2010 15:09:04 +0000 (11:09 -0400)
committerEric Mc Sween <eric.mcsween@gmail.com>
Mon, 1 Nov 2010 15:09:04 +0000 (11:09 -0400)
auf_savoirs_en_partage/savoirs/forms.py
auf_savoirs_en_partage/savoirs/views.py
auf_savoirs_en_partage/templates/savoirs/ressource_retrieve.html

index 9c5b248..fee40ee 100644 (file)
@@ -34,7 +34,7 @@ class RecordSearchForm(forms.Form):
         
         def __iter__(self):
             """Génère dynamiquement les choix possibles pour la recherche par type."""
-            yield ('', '')
+            yield ('', 'Tous')
             cursor = db.connection.cursor()
             cursor.execute("""SELECT DISTINCT TRIM(REPLACE(REPLACE(type, ', PeerReviewed', ''), ', NonPeerReviewed', '')) AS clean_type 
                               FROM savoirs_record ORDER BY clean_type""")
@@ -48,7 +48,7 @@ class RecordSearchForm(forms.Form):
 
         def __iter__(self):
             """Génère dynamiquement les choix possibles pour la recherche par éditeur."""
-            yield ('', '')
+            yield ('', 'Tous')
             cursor = db.connection.cursor()
             cursor.execute("SELECT DISTINCT publisher AS publisher FROM savoirs_record ORDER BY publisher")
             for result in cursor.fetchall():
@@ -61,6 +61,8 @@ class RecordSearchForm(forms.Form):
     auteur = forms.CharField(required=False, label="Auteur ou contributeur")
     titre = forms.CharField(required=False, label="Titre")
     sujet = forms.CharField(required=False, label="Sujet")
+    discipline = forms.ModelChoiceField(required=False, label="Discipline", queryset=Discipline.objects.all(), empty_label='Toutes')
+    region = forms.ModelChoiceField(required=False, label="Région", queryset=Region.objects.all(), empty_label='Toutes')
     type = forms.ChoiceField(required=False, label="Type de document", choices=TYPE_CHOICES)
     publisher = forms.ChoiceField(required=False, label="Éditeur", choices=PUBLISHER_CHOICES)
 
@@ -81,6 +83,12 @@ class RecordSearchForm(forms.Form):
             sujet = self.cleaned_data['sujet']
             if sujet:
                 records = records.search_sujet(sujet)
+            discipline = self.cleaned_data['discipline']
+            if discipline:
+                records = records.filter(disciplines=discipline)
+            region = self.cleaned_data['region']
+            if region:
+                records = records.filter(regions=region)
             type = self.cleaned_data['type']
             if type:
                 records = records.filter(type__icontains=type)
index a873736..406e718 100644 (file)
@@ -110,6 +110,8 @@ def ressource_retrieve(request, id):
     """Notice OAI de la ressource"""
     ressource = get_object_or_404(Record, id=id)
     variables = { 'ressource': ressource,
+                  'disciplines': ressource.disciplines.all(),
+                  'regions': ressource.regions.all()
                 }
     return render_to_response ("savoirs/ressource_retrieve.html", \
             Context (variables), 
index 110607d..c0ac3a6 100644 (file)
@@ -16,6 +16,7 @@
     {% if ressource.creator %}
     <div><span class="lbl">Auteur:</span> {{ ressource.creator }}</div>
     {% endif %}
+
     {% if ressource.description %}
     <div class="resultatResume"><span class="lbl">Description:</span> {{ ressource.description }}</div>
     {% endif %}
     <div><span class="lbl">Type:</span> {{ ressource.type }}</div>
     {% endif %}
 
+    {% if disciplines %}
+    <div><span class="lbl">Disciplines:</span> {{ disciplines|join:", " }}</div>
+    {% endif %}
 
-
-
+    {% if regions %}
+    <div><span class="lbl">Régions:</span> {{ regions|join:", " }}</div>
+    {% endif %}
 
     <div class="fiche"><span>Fiche: </span><a href="{% url savoirs.views.ressource_retrieve ressource.id %}">{% url savoirs.views.ressource_retrieve ressource.id %}</a></div>
     <div class="original"><span>Contenu original: </span><a target="_blank" href="{{ ressource.uri }}">{{ ressource.uri }}</a></div>