From 43bfee94f011bbafb14aafee4e0d701acd8d7353 Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Tue, 10 Dec 2024 13:29:29 -0500 Subject: [PATCH] Add config option on RSSFeedWidget to specify requires_internet and to display a more appropriate error if ISOLATED_DEPLOYMENT is set --- netbox/extras/constants.py | 1 + netbox/extras/dashboard/widgets.py | 9 +++++++++ netbox/templates/extras/dashboard/widgets/rssfeed.html | 4 ++++ 3 files changed, 14 insertions(+) diff --git a/netbox/extras/constants.py b/netbox/extras/constants.py index 3bfe3b21b..994586aca 100644 --- a/netbox/extras/constants.py +++ b/netbox/extras/constants.py @@ -79,6 +79,7 @@ DEFAULT_DASHBOARD = [ 'feed_url': 'http://netbox.dev/rss/', 'max_entries': 10, 'cache_timeout': 14400, + 'requires_internet': True, } }, { diff --git a/netbox/extras/dashboard/widgets.py b/netbox/extras/dashboard/widgets.py index c56e4cd7d..e2aaa8761 100644 --- a/netbox/extras/dashboard/widgets.py +++ b/netbox/extras/dashboard/widgets.py @@ -275,6 +275,7 @@ class RSSFeedWidget(DashboardWidget): default_config = { 'max_entries': 10, 'cache_timeout': 3600, # seconds + 'requires_internet': True, } description = _('Embed an RSS feed from an external website.') template_name = 'extras/dashboard/widgets/rssfeed.html' @@ -285,6 +286,9 @@ class RSSFeedWidget(DashboardWidget): feed_url = forms.URLField( label=_('Feed URL') ) + requires_internet = forms.BooleanField( + label=_('Requires external connection') + ) max_entries = forms.IntegerField( min_value=1, max_value=1000, @@ -309,6 +313,11 @@ class RSSFeedWidget(DashboardWidget): return f'dashboard_rss_{url_checksum}' def get_feed(self): + if self.config['requires_internet'] and settings.ISOLATED_DEPLOYMENT: + return { + 'isolated_deployment': True, + } + # Fetch RSS content from cache if available if feed_content := cache.get(self.cache_key): return { diff --git a/netbox/templates/extras/dashboard/widgets/rssfeed.html b/netbox/templates/extras/dashboard/widgets/rssfeed.html index 4420783fd..fa602a112 100644 --- a/netbox/templates/extras/dashboard/widgets/rssfeed.html +++ b/netbox/templates/extras/dashboard/widgets/rssfeed.html @@ -12,6 +12,10 @@
{% trans "No content found" %}
{% endfor %} +{% elif isolated_deployment %} + + {% trans "This RSS feed requires an external connection. Check the ISOLATED_DEPLOYMENT setting." %} + {% else %} {# There was an error retrieving/parsing the feed #}