mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-14 01:41:22 -06:00
Fixes: #18184 - Gracefully handle unavailable internet connection on RSS feed dashboard widget if ISOLATED_DEPLOYMENT is set (#18186)
* Suppress adding the RSS feed widget to the dashboard if ISOLATED_DEPLOYMENT is set * Add config option on RSSFeedWidget to specify requires_internet and to display a more appropriate error if ISOLATED_DEPLOYMENT is set * Remove skipping behavior from utils.py * Add required=False
This commit is contained in:
parent
aa56b99566
commit
13c26ccb0c
@ -79,6 +79,7 @@ DEFAULT_DASHBOARD = [
|
|||||||
'feed_url': 'http://netbox.dev/rss/',
|
'feed_url': 'http://netbox.dev/rss/',
|
||||||
'max_entries': 10,
|
'max_entries': 10,
|
||||||
'cache_timeout': 14400,
|
'cache_timeout': 14400,
|
||||||
|
'requires_internet': True,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -275,6 +275,7 @@ class RSSFeedWidget(DashboardWidget):
|
|||||||
default_config = {
|
default_config = {
|
||||||
'max_entries': 10,
|
'max_entries': 10,
|
||||||
'cache_timeout': 3600, # seconds
|
'cache_timeout': 3600, # seconds
|
||||||
|
'requires_internet': True,
|
||||||
}
|
}
|
||||||
description = _('Embed an RSS feed from an external website.')
|
description = _('Embed an RSS feed from an external website.')
|
||||||
template_name = 'extras/dashboard/widgets/rssfeed.html'
|
template_name = 'extras/dashboard/widgets/rssfeed.html'
|
||||||
@ -285,6 +286,10 @@ class RSSFeedWidget(DashboardWidget):
|
|||||||
feed_url = forms.URLField(
|
feed_url = forms.URLField(
|
||||||
label=_('Feed URL')
|
label=_('Feed URL')
|
||||||
)
|
)
|
||||||
|
requires_internet = forms.BooleanField(
|
||||||
|
label=_('Requires external connection'),
|
||||||
|
required=False,
|
||||||
|
)
|
||||||
max_entries = forms.IntegerField(
|
max_entries = forms.IntegerField(
|
||||||
min_value=1,
|
min_value=1,
|
||||||
max_value=1000,
|
max_value=1000,
|
||||||
@ -309,6 +314,11 @@ class RSSFeedWidget(DashboardWidget):
|
|||||||
return f'dashboard_rss_{url_checksum}'
|
return f'dashboard_rss_{url_checksum}'
|
||||||
|
|
||||||
def get_feed(self):
|
def get_feed(self):
|
||||||
|
if self.config['requires_internet'] and settings.ISOLATED_DEPLOYMENT:
|
||||||
|
return {
|
||||||
|
'isolated_deployment': True,
|
||||||
|
}
|
||||||
|
|
||||||
# Fetch RSS content from cache if available
|
# Fetch RSS content from cache if available
|
||||||
if feed_content := cache.get(self.cache_key):
|
if feed_content := cache.get(self.cache_key):
|
||||||
return {
|
return {
|
||||||
|
@ -12,6 +12,10 @@
|
|||||||
<div class="list-group-item text-muted">{% trans "No content found" %}</div>
|
<div class="list-group-item text-muted">{% trans "No content found" %}</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
{% elif isolated_deployment %}
|
||||||
|
<span class="text-danger">
|
||||||
|
<i class="mdi mdi-alert"></i> {% trans "This RSS feed requires an external connection. Check the ISOLATED_DEPLOYMENT setting." %}
|
||||||
|
</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
{# There was an error retrieving/parsing the feed #}
|
{# There was an error retrieving/parsing the feed #}
|
||||||
<span class="text-danger">
|
<span class="text-danger">
|
||||||
|
Loading…
Reference in New Issue
Block a user