Premiere étape pour page de liste de groupe
authorPA Parent <paparent@paparent.me>
Wed, 22 Jun 2011 15:38:20 +0000 (11:38 -0400)
committerPA Parent <paparent@paparent.me>
Wed, 22 Jun 2011 15:38:20 +0000 (11:38 -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/templates/chercheurs/groupe_index.html [new file with mode: 0644]
auf_savoirs_en_partage/templates/container_base.html
auf_savoirs_en_partage/urls.py

index a11b5bc..9141703 100644 (file)
@@ -341,6 +341,13 @@ class ChercheurFormGroup(object):
                     expertise.delete()
             return self.chercheur.instance
 
+class GroupeSearchForm(forms.ModelForm):
+    """Formulaire de recherche pour les groupes."""
+
+    class Meta:
+        model = GroupeSearch
+        fields = ['q']
+
 class ChercheurSearchForm(forms.ModelForm):
     """Formulaire de recherche pour les chercheurs."""
 
index 97973ca..13d573a 100644 (file)
@@ -524,3 +524,23 @@ class ChercheurSearch(Search):
                                                    chercheur.get_absolute_url())
             content += u'    %s\n\n' % chercheur.etablissement_display
         return content
+
+class GroupeSearch(Search):
+
+    class Meta:
+        verbose_name = 'recherche de groupe'
+        verbose_name_plural = 'recherches de groupes'
+
+    def run(self):
+        results = Groupe.objects
+        if self.q:
+            results = results.search(self.q)
+        return results.all()
+
+    #def url(self):
+    #    qs = self.query_string()
+    #    return url('groupes') + ('?' + qs if qs else '')
+
+    #def rss_url(self):
+    #    qs = self.query_string()
+    #    return url('rss_groupes') + ('?' + qs if qs else '')
index 0a356d0..0bf5691 100644 (file)
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
 from chercheurs.decorators import chercheur_required
-from chercheurs.forms import ChercheurSearchForm, SetPasswordForm, ChercheurFormGroup, AuthenticationForm
-from chercheurs.models import Chercheur
+from chercheurs.forms import ChercheurSearchForm, SetPasswordForm, ChercheurFormGroup, AuthenticationForm, GroupeSearchForm
+from chercheurs.models import Chercheur, Groupe
 from chercheurs.utils import get_django_user_for_email
 from datamaster_modeles.models import Etablissement, Region
 from django.conf import settings
@@ -209,3 +209,28 @@ def login(request, template_name='registration/login.html', redirect_field_name=
         'site_name': current_site.name,
     }, context_instance=RequestContext(request))
 login = never_cache(login)
+
+# groupes
+def groupe_index(request):
+    search_form = GroupeSearchForm(request.GET)
+    search = search_form.save(commit=False)
+    groupes = search.run()
+    nb_resultats = groupes.count()
+    try:
+        p = PageStatique.objects.get(id='groupes')
+        entete = p.contenu
+    except PageStatique.DoesNotExist:
+        entete = '<h1>Groupes</h1>'
+
+    return render_to_response("chercheurs/groupe_index.html", dict(
+        search_form=search_form, groupes=groupes.order_by('nom'),
+        nb_resultats=nb_resultats, entete=entete
+    ), context_instance=RequestContext(request))
+
+def groupe_retrieve(request, id):
+    groupe = get_object_or_404(Groupe, id=id)
+    return render_to_response(
+        "chercheurs/groupe_retrieve.html",
+        dict(groupe=groupe),
+        context_instance=RequestContext(request)
+    )
diff --git a/auf_savoirs_en_partage/templates/chercheurs/groupe_index.html b/auf_savoirs_en_partage/templates/chercheurs/groupe_index.html
new file mode 100644 (file)
index 0000000..c240f92
--- /dev/null
@@ -0,0 +1,47 @@
+{% extends "container_base.html" %}
+{% load pagination_tags %}
+{% load form_tags %}
+{% load sep %}
+
+{% block contenu %}
+{% autopaginate groupes 20 %}
+
+<ul class="actions">
+    <li><a href="{% url aide %}#repertoire">Aide</a></li>
+    {% include "chercheurs/actions.html" %}
+</ul>
+
+{{ entete|safe }}
+
+<h2>Recherche</h2>
+
+<form method="get" action="">
+    <table>
+        {% with search_form as form %}
+        {% include "render_form.html" %}
+        {% endwith %}
+        <tr><th></th><td><input type="submit" class="bouton" value="Rechercher" /></td></tr>
+    </table>
+</form>
+
+<h2>Résultats</h2>
+<div class="sous-titre"> 
+    {{ nb_resultats }} resultats correspondant à votre recherche
+</div>
+
+<div class="pagination">{% paginate %}</div>
+{% for groupe in groupes %}
+<div class="resultatRecherche">
+    <div class="titre">
+        <a href="{% url chercheurs.views.groupe_retrieve groupe.id %}">{{ groupe.nom }}</a>
+    </div>
+</div>
+
+{% empty %}
+       <div class="resultatRecherche">
+               <h2>Aucun résultat trouvé</h2>
+       </div>
+{% endfor %}
+<div class="pagination">{% paginate %}</div>
+
+{% endblock %}
index 88ace33..ef817bd 100644 (file)
@@ -54,6 +54,7 @@
                     <div>
                         <a href="{% url savoirs.views.index %}">Accueil</a> |
                         <a href="{% url chercheurs.views.index %}">Répertoire</a> |
+                        <a href="{% url chercheurs.views.groupe_index %}">Groupes</a> |
                         <a href="{% url savoirs.views.ressource_index %}">Ressources</a> |
                         <a href="{% url actualites %}">Actualités</a> |
                         <a href="{% url appels %}">Appels d'offres</a> |
index 215df62..1028024 100644 (file)
@@ -103,6 +103,10 @@ urlpatterns = sep_patterns + patterns(
     (r'^etablissements/autocomplete/$', 'chercheurs.views.etablissements_autocomplete'),
     (r'^etablissements/autocomplete/(?P<pays>.*)/$', 'chercheurs.views.etablissements_autocomplete'),
 
+    # groupes
+    (r'^groupes/$', 'chercheurs.views.groupe_index'),
+    (r'^groupes/(?P<id>\d+)/$', 'chercheurs.views.groupe_retrieve'),
+
     # section par discipline et/ou région
     (r'^discipline/(?P<discipline>\d+)/', include(sep_patterns)),
     (r'^region/(?P<region>\d+)/', include(sep_patterns)),