RSS feeds for bugs and reports.

portnov [2008-06-16 07:43:35]
RSS feeds for bugs and reports.
Filename
mgmt/rss_views.py
settings.py
templates/base.html
templates/rss.xml
urls.py
diff --git a/mgmt/rss_views.py b/mgmt/rss_views.py
index e99102f..e5cd3e0 100644
--- a/mgmt/rss_views.py
+++ b/mgmt/rss_views.py
@@ -1,12 +1,28 @@
+#encoding: utf-8
 from datetime import datetime
 from django.conf import settings
-from models import Comment
+from django.core.urlresolvers import reverse
+from models import Comment,Bug,Report
 from decorators import rss
 from utils import get_comment_url

 @rss('rss.xml')
 def last_comments(request):
-  comments = Comment.objects.all()[:settings.COMMENTS_PER_PAGE]
+  comments = Comment.objects.all()[:settings.RSS_MAX_ITEMS]
   for c in comments:
     c.url = get_comment_url(c)
-  return {'objects': comments}
+  return {'title': u'Projects: Последние комментарии', 'description': u'Последние комментарии по проектам', 'objects': comments}
+
+@rss('rss.xml')
+def last_bugs(request):
+  bugs = Bug.objects.all()[:settings.RSS_MAX_ITEMS]
+  for bug in bugs:
+    bug.url = reverse('mgmt.views.one_bug',args=(bug.id,))
+  return dict(title=u'Projects: Баги', description=u'Последние багрепорты', objects=bugs)
+
+@rss('rss.xml')
+def last_reports(request):
+  reports = Report.objects.all()[:settings.RSS_MAX_ITEMS]
+  for r in reports:
+    r.url = reverse('mgmt.views.one_report',args=(r.id,))
+  return dict(title=u'Projects: Отчеты', description=u'Последние отчеты', objects=reports)
diff --git a/settings.py b/settings.py
index a0b23e8..a672f31 100644
--- a/settings.py
+++ b/settings.py
@@ -104,6 +104,8 @@ BUG_RIGHTS = {
 COMMENTS_PER_PAGE = 10
 BUGS_PER_PAGE = COMMENTS_PER_PAGE

+RSS_MAX_ITEMS = 10
+
 MENU_ANONYMOUS = [(u'Главная','/'),
                   (u'Вход','/login/')]

diff --git a/templates/base.html b/templates/base.html
index a436c1a..ff80456 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -10,7 +10,9 @@
     <link rel='stylesheet' type='text/css' href='/media/css/main.css'/>
     <link rel="stylesheet" type="text/css" href="/media/js/markitup/skins/markitup/style.css" />
     <link rel="stylesheet" type="text/css" href="/media/js/markitup/sets/markdown/style.css" />
-    <link rel="alternate" title="Последние комментарии" type="application/rss+xml" href="/comments/feed/" />
+    <link rel="alternate" title="Последние комментарии" type="application/rss+xml" href="{% url mgmt.views.last_comments %}" />
+    <link rel="alternate" title="Баги" type="application/rss+xml" href="{% url mgmt.views.last_bugs %}" />
+    <link rel="alternate" title="Отчеты" type="application/rss+xml" href="{% url mgmt.views.last_reports %}" />
     <script type="text/javascript" src="jquery.js"></script>
     <script type="text/javascript" src="markitup/jquery.markitup.js"></script>
     <script type="text/javascript" src="markitup/sets/markdown/set.js"></script>
diff --git a/templates/rss.xml b/templates/rss.xml
index 6aac873..45612ea 100644
--- a/templates/rss.xml
+++ b/templates/rss.xml
@@ -3,15 +3,15 @@
 {% load prj_filters %}

 <channel>
-   <title>Projects: Последние комментарии</title>
+   <title>{{title}}</title>
    <link>http://projects.rtfm-com.ru/</link>
-   <description>Последние комментарии по проектам</description>
+   <description>{{description}}</description>
    <language>ru-ru</language>
    <pubDate>{{pub_date}}</pubDate>

 {% for object in objects %}
 <item>
-   <title>{{object.title}}</title>
+   <title>{% if object.title %}{{object.title}}{% else %}{{object.name}}{% endif %}</title>
    <link>http://rtfm-server{{object.url}}</link>
    <description>{{object.text|markdown|safe}}</description>
 </item>
diff --git a/urls.py b/urls.py
index 90a58d2..859abc3 100644
--- a/urls.py
+++ b/urls.py
@@ -12,6 +12,7 @@ urlpatterns = patterns('',
     (r'^docs/(\d+)/edit/$', "mgmt.views.edit_document"),
     (r'^docs/create/(\d+)/$', "mgmt.views.create_document"),
     (r'^bugs/state/(\d+)/$', 'mgmt.views.bugs_by_state'),
+    (r'^bugs/feed/$', 'mgmt.views.last_bugs'),
     (r'^bugs/(\d+)/$', "mgmt.views.one_bug"),
     (r'^bugs/(\d+)/edit/$', "mgmt.views.edit_bug"),
     (r'^bugs/report/(\d+)/$', 'mgmt.views.bug_report'),
@@ -23,6 +24,7 @@ urlpatterns = patterns('',
     (r'^tasks/(\d+)/$', 'mgmt.views.one_task'),
     (r'^tasks/(\d+)/edit/$', 'mgmt.views.edit_task'),
     (r'^tasks/create/(\d+)/$', 'mgmt.views.create_task'),
+    (r'^reports/feed/$', 'mgmt.views.last_reports'),
     (r'^reports/(\d+)/$', 'mgmt.views.one_report'),
     (r'^reports/(\d+)/edit/$', 'mgmt.views.edit_report'),
     (r'^reports/create/(\d+)/$', 'mgmt.views.create_report'),
ViewGit