|
|
@@ -1,5 +1,3 @@
|
|
|
-import traceback
|
|
|
-
|
|
|
from django.contrib import messages
|
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
from django.core.paginator import EmptyPage, PageNotAnInteger
|
|
|
@@ -2106,7 +2104,8 @@ class DeviceRenderConfigView(generic.ObjectView):
|
|
|
# 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')
|
|
|
+ content = context['rendered_config'] or context['error_message']
|
|
|
+ response = HttpResponse(content, content_type='text')
|
|
|
filename = f"{instance.name or 'config'}.txt"
|
|
|
response['Content-Disposition'] = f'attachment; filename="{filename}"'
|
|
|
return response
|
|
|
@@ -2124,17 +2123,18 @@ class DeviceRenderConfigView(generic.ObjectView):
|
|
|
|
|
|
# Render the config template
|
|
|
rendered_config = None
|
|
|
+ error_message = None
|
|
|
if config_template := instance.get_config_template():
|
|
|
try:
|
|
|
rendered_config = config_template.render(context=context_data)
|
|
|
except TemplateError as e:
|
|
|
- messages.error(request, _("An error occurred while rendering the template: {error}").format(error=e))
|
|
|
- rendered_config = traceback.format_exc()
|
|
|
+ error_message = _("An error occurred while rendering the template: {error}").format(error=e)
|
|
|
|
|
|
return {
|
|
|
'config_template': config_template,
|
|
|
'context_data': context_data,
|
|
|
'rendered_config': rendered_config,
|
|
|
+ 'error_message': error_message,
|
|
|
}
|
|
|
|
|
|
|