diff --git a/netbox/extras/forms/config.py b/netbox/extras/forms/config.py deleted file mode 100644 index 4a7dba614..000000000 --- a/netbox/extras/forms/config.py +++ /dev/null @@ -1,82 +0,0 @@ -from django import forms -from django.conf import settings - -from netbox.config import get_config, PARAMS - -__all__ = ( - 'ConfigRevisionForm', -) - - -EMPTY_VALUES = ('', None, [], ()) - - -class FormMetaclass(forms.models.ModelFormMetaclass): - - def __new__(mcs, name, bases, attrs): - - # Emulate a declared field for each supported configuration parameter - param_fields = {} - for param in PARAMS: - field_kwargs = { - 'required': False, - 'label': param.label, - 'help_text': param.description, - } - field_kwargs.update(**param.field_kwargs) - param_fields[param.name] = param.field(**field_kwargs) - attrs.update(param_fields) - - return super().__new__(mcs, name, bases, attrs) - - -class ConfigRevisionForm(forms.BaseModelForm, metaclass=FormMetaclass): - """ - Form for creating a new ConfigRevision. - """ - class Meta: - widgets = { - 'comment': forms.Textarea(), - } - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - # Append current parameter values to form field help texts and check for static configurations - config = get_config() - for param in PARAMS: - value = getattr(config, param.name) - is_static = hasattr(settings, param.name) - if value: - help_text = self.fields[param.name].help_text - if help_text: - help_text += '
' # Line break - help_text += f'Current value: {value}' - if is_static: - help_text += ' (defined statically)' - elif value == param.default: - help_text += ' (default)' - self.fields[param.name].help_text = help_text - if is_static: - self.fields[param.name].disabled = True - - def save(self, commit=True): - instance = super().save(commit=False) - - # Populate JSON data on the instance - instance.data = self.render_json() - - if commit: - instance.save() - - return instance - - def render_json(self): - json = {} - - # Iterate through each field and populate non-empty values - for field_name in self.declared_fields: - if field_name in self.cleaned_data and self.cleaned_data[field_name] not in EMPTY_VALUES: - json[field_name] = self.cleaned_data[field_name] - - return json diff --git a/netbox/extras/forms/model_forms.py b/netbox/extras/forms/model_forms.py index 6da17f9ed..621052c96 100644 --- a/netbox/extras/forms/model_forms.py +++ b/netbox/extras/forms/model_forms.py @@ -383,7 +383,7 @@ class JournalEntryForm(NetBoxModelForm): EMPTY_VALUES = ('', None, [], ()) -class FormMetaclass(forms.models.ModelFormMetaclass): +class ConfigFormMetaclass(forms.models.ModelFormMetaclass): def __new__(mcs, name, bases, attrs): @@ -402,7 +402,7 @@ class FormMetaclass(forms.models.ModelFormMetaclass): return super().__new__(mcs, name, bases, attrs) -class ConfigRevisionForm(BootstrapMixin, forms.ModelForm, metaclass=FormMetaclass): +class ConfigRevisionForm(BootstrapMixin, forms.ModelForm, metaclass=ConfigFormMetaclass): """ Form for creating a new ConfigRevision. """ diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index b227a3c55..b98f4a4b0 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -353,7 +353,7 @@ ADMIN_MENU = Menu( items=( MenuItem( link='extras:configrevision', - link_text=_('Config Revision'), + link_text=_('Config Revisions'), permissions=['extras.config_revision'] ), ), diff --git a/netbox/templates/extras/configrevision.html b/netbox/templates/extras/configrevision.html index 0fabf39c9..5c62bc10a 100644 --- a/netbox/templates/extras/configrevision.html +++ b/netbox/templates/extras/configrevision.html @@ -105,19 +105,19 @@
- + - + - + - +
Banner login:Login banner: {{ object.data.BANNER_LOGIN }}
Banner maintenance:Maintenance banner: {{ object.data.BANNER_MAINTENANCE }}
Banner top:Top banner: {{ object.data.BANNER_TOP }}
Banner bottom:Bottom banner: {{ object.data.BANNER_BOTTOM }}