diff --git a/netbox/extras/dashboard/widgets.py b/netbox/extras/dashboard/widgets.py index 13cc60af0..253208cbf 100644 --- a/netbox/extras/dashboard/widgets.py +++ b/netbox/extras/dashboard/widgets.py @@ -193,14 +193,16 @@ class RSSFeedWidget(DashboardWidget): return f'dashboard_rss_{url_checksum}' def get_feed(self): - # Fetch RSS content from cache + # Fetch RSS content from cache if available if feed_content := cache.get(self.cache_key): feed = feedparser.FeedParserDict(feed_content) else: feed = feedparser.parse(self.config['feed_url']) - # Cap number of entries - max_entries = self.config.get('max_entries') - feed['entries'] = feed['entries'][:max_entries] - cache.set(self.cache_key, dict(feed), self.config.get('cache_timeout')) + if not feed.bozo: + # Cap number of entries + max_entries = self.config.get('max_entries') + feed['entries'] = feed['entries'][:max_entries] + # Cache the feed content + cache.set(self.cache_key, dict(feed), self.config.get('cache_timeout')) return feed diff --git a/netbox/templates/extras/dashboard/widgets/rssfeed.html b/netbox/templates/extras/dashboard/widgets/rssfeed.html index 293e22b7f..5de3c3105 100644 --- a/netbox/templates/extras/dashboard/widgets/rssfeed.html +++ b/netbox/templates/extras/dashboard/widgets/rssfeed.html @@ -1,13 +1,22 @@ -
+Response status: {{ feed.status }} +Error: {{ feed.bozo_exception|escape }}+{% endif %}