瀏覽代碼

Modify RSS item selection code to always return a feed item if there is at
least one item in the category.

Andrew Klopper 8 年之前
父節點
當前提交
35d7615ce4
共有 1 個文件被更改,包括 6 次插入5 次删除
  1. 6 5
      rss/feeds.py

+ 6 - 5
rss/feeds.py

@@ -22,12 +22,13 @@ class DailyFeed(Feed):
22 22
     def items(self, obj):
23 23
         now = datetime.now()
24 24
         now_tuple = now.timetuple()
25
-        starting_date = datetime(now_tuple.tm_year if now_tuple.tm_mon >= obj.starting_month else now_tuple.tm_year - 1, obj.starting_month, 1)
26
-        day_number = ((now - starting_date).days + 1) % obj.days_required
27 25
 
28
-        try:
29
-            feed_item = FeedItem.objects.get(feed_category=obj, day_number=day_number)
30
-        except FeedItem.DoesNotExist:
26
+        item_count = FeedItem.objects.filter(feed_category=obj).count()
27
+        if item_count > 0:
28
+            starting_date = datetime(now_tuple.tm_year if now_tuple.tm_mon >= obj.starting_month else now_tuple.tm_year - 1, obj.starting_month, 1)
29
+            offset = (now - starting_date).days % item_count
30
+            feed_item = list(FeedItem.objects.filter(feed_category=obj).order_by('day_number')[offset:offset + 1])[0]
31
+        else:
31 32
             feed_item = None
32 33
 
33 34
         if feed_item is None: