mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #12187: Add button to download rendered config from UI
This commit is contained in:
@ -6,6 +6,7 @@ from django.core.paginator import EmptyPage, PageNotAnInteger
|
|||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.db.models import Prefetch
|
from django.db.models import Prefetch
|
||||||
from django.forms import ModelMultipleChoiceField, MultipleHiddenInput, modelformset_factory
|
from django.forms import ModelMultipleChoiceField, MultipleHiddenInput, modelformset_factory
|
||||||
|
from django.http import HttpResponse
|
||||||
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.html import escape
|
from django.utils.html import escape
|
||||||
@ -2012,6 +2013,24 @@ class DeviceRenderConfigView(generic.ObjectView):
|
|||||||
weight=2100
|
weight=2100
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get(self, request, **kwargs):
|
||||||
|
instance = self.get_object(**kwargs)
|
||||||
|
context = self.get_extra_context(request, instance)
|
||||||
|
|
||||||
|
# If a direct export has been requested, return the rendered template content as a
|
||||||
|
# downloadable file.
|
||||||
|
if request.GET.get('export'):
|
||||||
|
response = HttpResponse(context['rendered_config'], content_type='text')
|
||||||
|
filename = f"{instance.name or 'config'}.txt"
|
||||||
|
response['Content-Disposition'] = f'attachment; filename="{filename}"'
|
||||||
|
return response
|
||||||
|
|
||||||
|
return render(request, self.get_template_name(), {
|
||||||
|
'object': instance,
|
||||||
|
'tab': self.tab,
|
||||||
|
**context,
|
||||||
|
})
|
||||||
|
|
||||||
def get_extra_context(self, request, instance):
|
def get_extra_context(self, request, instance):
|
||||||
# Compile context data
|
# Compile context data
|
||||||
context_data = instance.get_config_context()
|
context_data = instance.get_config_context()
|
||||||
|
@ -36,6 +36,14 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="float-end">
|
||||||
|
<a href="?export=True" class="btn btn-sm btn-primary" role="button">
|
||||||
|
<i class="mdi mdi-download" aria-hidden="true"></i> Download
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<h5>Rendered Config</h5>
|
||||||
|
</div>
|
||||||
{% if config_template %}
|
{% if config_template %}
|
||||||
<pre class="card-body">{{ rendered_config }}</pre>
|
<pre class="card-body">{{ rendered_config }}</pre>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
Reference in New Issue
Block a user