RSS pour les messages de groupe
authorPA Parent <paparent@paparent.me>
Tue, 5 Jul 2011 15:14:12 +0000 (11:14 -0400)
committerPA Parent <paparent@paparent.me>
Tue, 5 Jul 2011 15:14:12 +0000 (11:14 -0400)
auf_savoirs_en_partage/chercheurs/models.py
auf_savoirs_en_partage/savoirs/rss.py
auf_savoirs_en_partage/templates/chercheurs/groupe_message.html
auf_savoirs_en_partage/templates/chercheurs/groupe_retrieve.html
auf_savoirs_en_partage/urls.py

index 72296e2..1aad4e4 100644 (file)
@@ -404,6 +404,10 @@ class Groupe(models.Model):
     def __unicode__(self):
         return u"%s" % (self.nom)
 
+    def get_absolute_url(self):
+        return url('groupe_retrieve', kwargs={'id': self.id})
+
+
 class GroupeChercheur(Groupe):
     objects = GroupeChercheurManager()
 
@@ -555,8 +559,12 @@ class Message(models.Model):
 
     date_creation = models.DateTimeField(auto_now_add=True, db_column='date_creation')
 
+    class Meta:
+        ordering = ['-date_creation']
+
     def __unicode__(self):
         return u"%s - %s" % (self.chercheur, self.titre)
 
-    class Meta:
-        ordering = ['-date_creation']
+    def get_absolute_url(self):
+        return url('groupe_messages', kwargs={'id': self.groupe.id})
+
index e9d4bf8..18eb320 100644 (file)
@@ -5,11 +5,15 @@ from dateutil.tz import tzlocal, tzutc
 
 from django.core.urlresolvers import reverse
 from django.contrib.syndication.views import Feed
+from django.shortcuts import get_object_or_404
+
 
 from chercheurs.forms import ChercheurSearchForm
 from savoirs.forms import RessourceSearchForm, ActualiteSearchForm, EvenementSearchForm
 from sitotheque.forms import SiteSearchForm
 
+from chercheurs.models import Groupe, Message
+
 class FilChercheurs(Feed):
     title = "Savoirs en partage - chercheurs"
     link = "/chercheurs/"
@@ -150,3 +154,29 @@ class FilSites(Feed):
 
     def item_author_name(self, site):
         return site.auteur
+
+class FilMessages(Feed):
+
+    def get_object(self, request, groupe_id):
+        return get_object_or_404(Groupe, pk=groupe_id)
+
+    def title(self, obj):
+        return "Savoirs en partage - Messages pour le groupe: %s" % (obj.nom,)
+
+    def link(self, obj):
+        return obj.get_absolute_url()
+
+    def description(self, obj):
+        return "Derniers messages du groupe %s" % (obj.nom,)
+
+    def items(self, obj):
+        return Message.objects.filter(groupe=obj)[:30]
+
+    def item_title(self, message):
+        return message.titre
+
+    def item_description(self, message):
+        return message.contenu
+
+    def item_author_name(self, message):
+        return message.chercheur
index ff965b5..40da422 100644 (file)
@@ -4,8 +4,10 @@
 {% block contenu %}
 {% autopaginate messages 20 %}
 
+<a class="rss-icon" href="{% url rss_messages groupe.pk %}"><img src="/media/img/feed.png" /></a>
+
 <h1>{{ groupe }}</h1>
-<p><a href="{% url groupe_messages groupe.pk %}">Retour à la page du groupe</a></p>
+<p><a href="{% url groupe_retrieve groupe.pk %}">Retour à la page du groupe</a></p>
 
 <h2>Messages</h2>
 {% if messages %}
index dfe1333..52fe098 100644 (file)
@@ -7,7 +7,7 @@
 
        <p>{{ groupe.page_accueil|safe }}</p>
 
-       <h2>Derniers messages</h2>
+       <h2>Derniers messages <a href="{% url rss_messages groupe.pk %}"><img src="/media/img/feed.png" /></a></h2>
        {% if messages %}
                {% for message in messages.all %}
                        {% include 'chercheurs/groupe_message_display.html' %}
index d39a44e..b6786c2 100644 (file)
@@ -3,7 +3,7 @@
 from django.conf.urls.defaults import patterns, include, handler500, handler404, url
 from django.conf import settings
 from django.contrib import admin
-from savoirs.rss import FilChercheurs, FilRessources, FilActualites, FilAppels, FilEvenements, FilSites
+from savoirs.rss import FilChercheurs, FilRessources, FilActualites, FilAppels, FilEvenements, FilSites, FilMessages
 
 admin.autodiscover()
 
@@ -105,7 +105,7 @@ urlpatterns = sep_patterns + patterns(
 
     # groupes
     (r'^groupes/$', 'chercheurs.views.groupe_index'),
-    (r'^groupes/(?P<id>\d+)/$', 'chercheurs.views.groupe_retrieve'),
+    url(r'^groupes/(?P<id>\d+)/$', 'chercheurs.views.groupe_retrieve', name='groupe_retrieve'),
     url(r'^groupes/(?P<id>\d+)/messages/$', 'chercheurs.views.groupe_messages', name='groupe_messages'),
 
     # section par discipline et/ou région
@@ -135,6 +135,7 @@ urlpatterns = sep_patterns + patterns(
     (r'^rss/appels/$', FilAppels(), {}, 'rss_appels'),
     (r'^rss/agenda/$', FilEvenements(), {}, 'rss_agenda'),
     (r'^rss/sites/$', FilSites(), {}, 'rss_sites'),
+    (r'^rss/messages/(?P<groupe_id>\d+)/$', FilMessages(), {}, 'rss_messages'),
     (r'^json/get/$', 'savoirs.views.json_get'),
     (r'^json/set/$', 'savoirs.views.json_set'),