web/lib/django/contrib/comments/feeds.py
changeset 0 0d40e90630ef
child 29 cc9b7e14412b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/django/contrib/comments/feeds.py	Wed Jan 20 00:34:04 2010 +0100
@@ -0,0 +1,38 @@
+from django.conf import settings
+from django.contrib.syndication.feeds import Feed
+from django.contrib.sites.models import Site
+from django.contrib import comments
+from django.utils.translation import ugettext as _
+
+class LatestCommentFeed(Feed):
+    """Feed of latest comments on the current site."""
+
+    def title(self):
+        if not hasattr(self, '_site'):
+            self._site = Site.objects.get_current()
+        return _("%(site_name)s comments") % dict(site_name=self._site.name)
+
+    def link(self):
+        if not hasattr(self, '_site'):
+            self._site = Site.objects.get_current()
+        return "http://%s/" % (self._site.domain)
+
+    def description(self):
+        if not hasattr(self, '_site'):
+            self._site = Site.objects.get_current()
+        return _("Latest comments on %(site_name)s") % dict(site_name=self._site.name)
+
+    def items(self):
+        qs = comments.get_model().objects.filter(
+            site__pk = settings.SITE_ID,
+            is_public = True,
+            is_removed = False,
+        )
+        if getattr(settings, 'COMMENTS_BANNED_USERS_GROUP', None):
+            where = ['user_id NOT IN (SELECT user_id FROM auth_user_groups WHERE group_id = %s)']
+            params = [settings.COMMENTS_BANNED_USERS_GROUP]
+            qs = qs.extra(where=where, params=params)
+        return qs.order_by('-submit_date')[:40]
+        
+    def item_pubdate(self, item):
+        return item.submit_date