mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -06:00
Move config parameter value population to ConfigRevisionForm init
This commit is contained in:
parent
acdebea7f1
commit
1e317f82f5
@ -14,25 +14,14 @@ EMPTY_VALUES = ('', None, [], ())
|
||||
class FormMetaclass(forms.models.ModelFormMetaclass):
|
||||
|
||||
def __new__(mcs, name, bases, attrs):
|
||||
config = get_config()
|
||||
|
||||
# Emulate a declared field for each supported configuration parameter
|
||||
param_fields = {}
|
||||
for param in PARAMS:
|
||||
is_static = hasattr(settings, param.name)
|
||||
help_text = f'{param.description}<br />' if param.description else ''
|
||||
value = getattr(config, param.name)
|
||||
if value:
|
||||
help_text += f'Current value: <strong>{value}</strong>'
|
||||
if is_static:
|
||||
help_text += ' (defined statically)'
|
||||
elif value == param.default:
|
||||
help_text += ' (default)'
|
||||
field_kwargs = {
|
||||
'required': False,
|
||||
'disabled': is_static,
|
||||
'label': param.label,
|
||||
'help_text': help_text,
|
||||
'help_text': param.description,
|
||||
}
|
||||
field_kwargs.update(**param.field_kwargs)
|
||||
param_fields[param.name] = param.field(**field_kwargs)
|
||||
@ -50,6 +39,24 @@ class ConfigRevisionForm(forms.BaseModelForm, metaclass=FormMetaclass):
|
||||
'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 = f'<br />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)
|
||||
|
||||
|
@ -78,16 +78,15 @@ class Config:
|
||||
|
||||
try:
|
||||
revision = ConfigRevision.objects.last()
|
||||
if revision is None:
|
||||
logger.debug("No previous configuration found in database; proceeding with default values")
|
||||
return
|
||||
logger.debug("Loaded configuration data from database")
|
||||
except DatabaseError:
|
||||
# The database may not be available yet (e.g. when running a management command)
|
||||
logger.warning(f"Skipping config initialization (database unavailable)")
|
||||
return
|
||||
|
||||
if revision is None:
|
||||
logger.debug("No previous configuration found in database; proceeding with default values")
|
||||
return
|
||||
|
||||
revision.activate()
|
||||
logger.debug("Filled cache with data from latest ConfigRevision")
|
||||
self._populate_from_cache()
|
||||
|
@ -4,7 +4,7 @@ from django.contrib.postgres.forms import SimpleArrayField
|
||||
|
||||
class ConfigParam:
|
||||
|
||||
def __init__(self, name, label, default, description=None, field=None, field_kwargs=None):
|
||||
def __init__(self, name, label, default, description='', field=None, field_kwargs=None):
|
||||
self.name = name
|
||||
self.label = label
|
||||
self.default = default
|
||||
|
Loading…
Reference in New Issue
Block a user