Explorar el Código

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

Andrew Klopper hace 8 años
padre
commit
35d7615ce4
Se han modificado 1 ficheros con 6 adiciones y 5 borrados
  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: