mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-26 01:06:11 -06:00
12591 review changes
This commit is contained in:
parent
7ca0712b0f
commit
c6391bfb5b
@ -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 += '<br />' # Line break
|
|
||||||
help_text += f'Current value: <strong>{value}</strong>'
|
|
||||||
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
|
|
@ -383,7 +383,7 @@ class JournalEntryForm(NetBoxModelForm):
|
|||||||
EMPTY_VALUES = ('', None, [], ())
|
EMPTY_VALUES = ('', None, [], ())
|
||||||
|
|
||||||
|
|
||||||
class FormMetaclass(forms.models.ModelFormMetaclass):
|
class ConfigFormMetaclass(forms.models.ModelFormMetaclass):
|
||||||
|
|
||||||
def __new__(mcs, name, bases, attrs):
|
def __new__(mcs, name, bases, attrs):
|
||||||
|
|
||||||
@ -402,7 +402,7 @@ class FormMetaclass(forms.models.ModelFormMetaclass):
|
|||||||
return super().__new__(mcs, name, bases, attrs)
|
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.
|
Form for creating a new ConfigRevision.
|
||||||
"""
|
"""
|
||||||
|
@ -353,7 +353,7 @@ ADMIN_MENU = Menu(
|
|||||||
items=(
|
items=(
|
||||||
MenuItem(
|
MenuItem(
|
||||||
link='extras:configrevision',
|
link='extras:configrevision',
|
||||||
link_text=_('Config Revision'),
|
link_text=_('Config Revisions'),
|
||||||
permissions=['extras.config_revision']
|
permissions=['extras.config_revision']
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -105,19 +105,19 @@
|
|||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<table class="table table-hover attr-table">
|
<table class="table table-hover attr-table">
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Banner login:</th>
|
<th scope="row">Login banner:</th>
|
||||||
<td>{{ object.data.BANNER_LOGIN }}</td>
|
<td>{{ object.data.BANNER_LOGIN }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Banner maintenance:</th>
|
<th scope="row">Maintenance banner:</th>
|
||||||
<td>{{ object.data.BANNER_MAINTENANCE }}</td>
|
<td>{{ object.data.BANNER_MAINTENANCE }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Banner top:</th>
|
<th scope="row">Top banner:</th>
|
||||||
<td>{{ object.data.BANNER_TOP }}</td>
|
<td>{{ object.data.BANNER_TOP }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">Banner bottom:</th>
|
<th scope="row">Bottom banner:</th>
|
||||||
<td>{{ object.data.BANNER_BOTTOM }}</td>
|
<td>{{ object.data.BANNER_BOTTOM }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
Loading…
Reference in New Issue
Block a user