Changeset 2530
- Timestamp:
- 02/06/10 22:04:05 (6 weeks ago)
- Location:
- branches/0.9/pylucid_project/pylucid_plugins/update_journal
- Files:
-
- 3 added
- 2 modified
-
models.py (modified) (1 diff)
-
templates/update_journal/feed_description.html (added)
-
templates/update_journal/select_feed.html (added)
-
urls.py (added)
-
views.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/0.9/pylucid_project/pylucid_plugins/update_journal/models.py
r2468 r2530 4 4 from django.contrib.auth.models import User 5 5 from django.contrib.sites.models import Site 6 from django.utils.translation import ugettext as _6 from django.utils.translation import ugettext_lazy as _ 7 7 from django.contrib.contenttypes.models import ContentType 8 8 from django.contrib.sites.managers import CurrentSiteManager -
branches/0.9/pylucid_project/pylucid_plugins/update_journal/views.py
r2330 r2530 20 20 __version__ = "$Rev$" 21 21 22 22 23 from django.conf import settings 24 from django.contrib.syndication.views import Feed 25 from django.utils.translation import ugettext_lazy as _ 26 from django.utils.feedgenerator import Rss201rev2Feed, Atom1Feed 23 27 24 from pylucid .models import Language25 from pylucid .decorators import render_to28 from pylucid_project.apps.pylucid.models import Language 29 from pylucid_project.apps.pylucid.decorators import render_to 26 30 27 from pylucid_project. system.pylucid_plugins import PYLUCID_PLUGINS31 from pylucid_project.pylucid_plugins.update_journal.models import UpdateJournal 28 32 29 from models import UpdateJournal30 33 34 def _get_queryset(request, count): 35 """ TODO: Move to UpdateJournal.objects ? """ 36 queryset = UpdateJournal.on_site.all() 37 38 accessible_lang = Language.objects.all_accessible(request.user) 39 queryset = queryset.filter(language__in=accessible_lang) 40 41 if not request.user.is_staff: 42 queryset = queryset.filter(staff_only=False) 43 44 return queryset[:count] 31 45 32 46 … … 40 54 count = 10 41 55 42 queryset = UpdateJournal.on_site.all() 43 44 accessible_lang = Language.objects.all_accessible(request.user) 45 queryset = queryset.filter(language__in=accessible_lang) 46 47 if not request.user.is_staff: 48 queryset = queryset.filter(staff_only=False) 49 50 queryset = queryset[:count] 56 queryset = _get_queryset(request, count) 51 57 52 58 return {"update_list": queryset} 53 59 60 61 class RssFeed(Feed): 62 feed_type = Rss201rev2Feed 63 filename = "feed.rss" 64 65 title = "Update Journal" 66 link = "/" 67 description = "Updates and changes" 68 description_template = "update_journal/feed_description.html" 69 70 def __init__(self, request): 71 self.count = 10 # FIXME: use GET parameter? 72 self.request = request 73 74 def items(self): 75 return _get_queryset(self.request, self.count) 76 77 def item_title(self, item): 78 return item.title 79 80 def item_link(self, item): 81 return item.object_url 82 83 84 class AtomFeed(RssFeed): 85 """ 86 http://docs.djangoproject.com/en/dev/ref/contrib/syndication/#publishing-atom-and-rss-feeds-in-tandem 87 """ 88 feed_type = Atom1Feed 89 filename = "feed.atom" 90 subtitle = RssFeed.description 91 92 93 # The last class is the fallback class, if filename doesn't match 94 FEEDS = [AtomFeed, RssFeed] 95 96 97 @render_to("update_journal/select_feed.html") 98 def select_feed(request): 99 """ 100 Display a list with existing feed filenames. 101 """ 102 context = {"feeds": FEEDS} 103 return context 104 105 106 def feed(request, filename): 107 """ 108 return RSS/Atom feed selected by filename. 109 """ 110 #print filename 111 for feed_class in FEEDS: 112 if filename == feed_class.filename: 113 break 114 115 #print "feed class:", feed_class 116 feed = feed_class(request) 117 response = feed(request) 118 return response 119