moved context to render method of ConfigTemplate

This commit is contained in:
Abhimanyu Saharan 2023-08-09 21:22:05 +05:30
parent 55c7c14fba
commit 69ffdbf8dd
3 changed files with 11 additions and 18 deletions

View File

@ -1,4 +1,3 @@
from django.apps import apps
from django.http import Http404, HttpResponse from django.http import Http404, HttpResponse
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from drf_spectacular.types import OpenApiTypes from drf_spectacular.types import OpenApiTypes
@ -24,7 +23,6 @@ from netbox.api.renderers import TextRenderer
from netbox.api.viewsets import NetBoxModelViewSet from netbox.api.viewsets import NetBoxModelViewSet
from netbox.api.viewsets.mixins import SequentialBulkCreatesMixin from netbox.api.viewsets.mixins import SequentialBulkCreatesMixin
from netbox.constants import NESTED_SERIALIZER_PREFIX from netbox.constants import NESTED_SERIALIZER_PREFIX
from netbox.registry import registry
from utilities.api import get_serializer_for_model from utilities.api import get_serializer_for_model
from utilities.utils import count_related from utilities.utils import count_related
from virtualization.models import VirtualMachine from virtualization.models import VirtualMachine
@ -436,13 +434,6 @@ class DeviceViewSet(
context_data.update(request.data) context_data.update(request.data)
context_data.update({'device': device}) context_data.update({'device': device})
app_ns = registry['model_features']['custom_fields'].keys()
for app in app_ns:
context_data.setdefault(app, {})
models = apps.get_app_config(app).get_models()
for model in models:
context_data[app][model.__name__] = model
return self.render_configtemplate(request, configtemplate, context_data) return self.render_configtemplate(request, configtemplate, context_data)

View File

@ -1,6 +1,5 @@
import traceback import traceback
from django.apps import apps
from django.contrib import messages from django.contrib import messages
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core.paginator import EmptyPage, PageNotAnInteger from django.core.paginator import EmptyPage, PageNotAnInteger
@ -20,7 +19,6 @@ from circuits.models import Circuit, CircuitTermination
from extras.views import ObjectConfigContextView from extras.views import ObjectConfigContextView
from ipam.models import ASN, IPAddress, Prefix, VLAN, VLANGroup from ipam.models import ASN, IPAddress, Prefix, VLAN, VLANGroup
from ipam.tables import InterfaceVLANTable from ipam.tables import InterfaceVLANTable
from netbox.registry import registry
from netbox.views import generic from netbox.views import generic
from tenancy.views import ObjectContactsView from tenancy.views import ObjectContactsView
from utilities.forms import ConfirmationForm from utilities.forms import ConfirmationForm
@ -2082,13 +2080,6 @@ class DeviceRenderConfigView(generic.ObjectView):
context_data = instance.get_config_context() context_data = instance.get_config_context()
context_data.update({'device': instance}) context_data.update({'device': instance})
app_ns = registry['model_features']['custom_fields'].keys()
for app in app_ns:
context_data.setdefault(app, {})
models = apps.get_app_config(app).get_models()
for model in models:
context_data[app][model.__name__] = model
# Render the config template # Render the config template
rendered_config = None rendered_config = None
if config_template := instance.get_config_template(): if config_template := instance.get_config_template():

View File

@ -1,3 +1,4 @@
from django.apps import apps
from django.conf import settings from django.conf import settings
from django.core.validators import ValidationError from django.core.validators import ValidationError
from django.db import models from django.db import models
@ -8,6 +9,7 @@ from jinja2.sandbox import SandboxedEnvironment
from extras.querysets import ConfigContextQuerySet from extras.querysets import ConfigContextQuerySet
from netbox.config import get_config from netbox.config import get_config
from netbox.registry import registry
from netbox.models import ChangeLoggedModel from netbox.models import ChangeLoggedModel
from netbox.models.features import CloningMixin, ExportTemplatesMixin, SyncedDataMixin, TagsMixin from netbox.models.features import CloningMixin, ExportTemplatesMixin, SyncedDataMixin, TagsMixin
from utilities.jinja2 import ConfigTemplateLoader from utilities.jinja2 import ConfigTemplateLoader
@ -257,6 +259,15 @@ class ConfigTemplate(SyncedDataMixin, ExportTemplatesMixin, TagsMixin, ChangeLog
""" """
context = context or {} context = context or {}
app_ns = registry['model_features']['custom_fields'].keys()
for app in app_ns:
context.setdefault(app, {})
models = apps.get_app_config(app).get_models()
for model in models:
context[app][model.__name__] = model
print(context)
# Initialize the Jinja2 environment and instantiate the Template # Initialize the Jinja2 environment and instantiate the Template
environment = self._get_environment() environment = self._get_environment()
if self.data_file: if self.data_file: