mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-13 02:58:17 -06:00
Enable export of system status data
This commit is contained in:
parent
395202ef66
commit
33bdba35e4
@ -1,3 +1,4 @@
|
|||||||
|
import json
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
from django import __version__ as DJANGO_VERSION
|
from django import __version__ as DJANGO_VERSION
|
||||||
@ -7,7 +8,7 @@ from django.contrib import messages
|
|||||||
from django.contrib.auth.mixins import UserPassesTestMixin
|
from django.contrib.auth.mixins import UserPassesTestMixin
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db import connection, ProgrammingError
|
from django.db import connection, ProgrammingError
|
||||||
from django.http import HttpResponseForbidden, Http404
|
from django.http import HttpResponse, HttpResponseForbidden, Http404
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
@ -25,7 +26,6 @@ from rq.worker import Worker
|
|||||||
from rq.worker_registration import clean_worker_registry
|
from rq.worker_registration import clean_worker_registry
|
||||||
|
|
||||||
from netbox.config import get_config, PARAMS
|
from netbox.config import get_config, PARAMS
|
||||||
from netbox.plugins.utils import get_installed_plugins
|
|
||||||
from netbox.views import generic
|
from netbox.views import generic
|
||||||
from netbox.views.generic.base import BaseObjectView
|
from netbox.views.generic.base import BaseObjectView
|
||||||
from netbox.views.generic.mixins import TableMixin
|
from netbox.views.generic.mixins import TableMixin
|
||||||
@ -553,8 +553,6 @@ class SystemView(UserPassesTestMixin, View):
|
|||||||
# Look up app config by package name
|
# Look up app config by package name
|
||||||
apps.get_app_config(plugin.rsplit('.', 1)[-1]) for plugin in settings.PLUGINS
|
apps.get_app_config(plugin.rsplit('.', 1)[-1]) for plugin in settings.PLUGINS
|
||||||
]
|
]
|
||||||
plugins_table = tables.PluginTable(plugins, orderable=False)
|
|
||||||
plugins_table.configure(request)
|
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
try:
|
try:
|
||||||
@ -563,6 +561,24 @@ class SystemView(UserPassesTestMixin, View):
|
|||||||
# Fall back to using the active config data if no record is found
|
# Fall back to using the active config data if no record is found
|
||||||
config = ConfigRevision(data=get_config().defaults)
|
config = ConfigRevision(data=get_config().defaults)
|
||||||
|
|
||||||
|
# Raw data export
|
||||||
|
if 'export' in request.GET:
|
||||||
|
data = {
|
||||||
|
**stats,
|
||||||
|
'plugins': {
|
||||||
|
plugin.name: plugin.version for plugin in plugins
|
||||||
|
},
|
||||||
|
'config': {
|
||||||
|
k: config.data[k] for k in sorted(config.data)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
response = HttpResponse(json.dumps(data, indent=4), content_type='text/json')
|
||||||
|
response['Content-Disposition'] = 'attachment; filename="netbox.json"'
|
||||||
|
return response
|
||||||
|
|
||||||
|
plugins_table = tables.PluginTable(plugins, orderable=False)
|
||||||
|
plugins_table.configure(request)
|
||||||
|
|
||||||
return render(request, 'core/system.html', {
|
return render(request, 'core/system.html', {
|
||||||
'stats': stats,
|
'stats': stats,
|
||||||
'plugins_table': plugins_table,
|
'plugins_table': plugins_table,
|
||||||
|
@ -6,6 +6,12 @@
|
|||||||
|
|
||||||
{% block title %}{% trans "System" %}{% endblock %}
|
{% block title %}{% trans "System" %}{% endblock %}
|
||||||
|
|
||||||
|
{% block controls %}
|
||||||
|
<a href="?export=true" class="btn btn-purple">
|
||||||
|
<i class="mdi mdi-download"></i> {% trans "Export" %}
|
||||||
|
</a>
|
||||||
|
{% endblock controls %}
|
||||||
|
|
||||||
{% block tabs %}
|
{% block tabs %}
|
||||||
<ul class="nav nav-tabs px-3">
|
<ul class="nav nav-tabs px-3">
|
||||||
<li class="nav-item" role="presentation">
|
<li class="nav-item" role="presentation">
|
||||||
|
Loading…
Reference in New Issue
Block a user