Closes #20675: Enable NetBox Copilot integration (#20682)

This commit is contained in:
Jeremy Stretch
2025-10-27 09:54:38 -04:00
committed by GitHub
parent 77307b3c91
commit 3d143d635b
10 changed files with 69 additions and 14 deletions

View File

@@ -11,6 +11,7 @@ from django.utils.translation import gettext_lazy as _
from core.models import ObjectType
from ipam.formfields import IPNetworkFormField
from ipam.validators import prefix_validator
from netbox.config import get_config
from netbox.preferences import PREFERENCES
from users.constants import *
from users.models import *
@@ -64,8 +65,8 @@ class UserConfigFormMetaclass(forms.models.ModelFormMetaclass):
class UserConfigForm(forms.ModelForm, metaclass=UserConfigFormMetaclass):
fieldsets = (
FieldSet(
'locale.language', 'pagination.per_page', 'pagination.placement', 'ui.htmx_navigation',
'ui.tables.striping',
'locale.language', 'ui.copilot_enabled', 'pagination.per_page', 'pagination.placement',
'ui.htmx_navigation', 'ui.tables.striping',
name=_('User Interface')
),
FieldSet('data_format', 'csv_delimiter', name=_('Miscellaneous')),
@@ -83,8 +84,7 @@ class UserConfigForm(forms.ModelForm, metaclass=UserConfigFormMetaclass):
def __init__(self, *args, instance=None, **kwargs):
# Get initial data from UserConfig instance
initial_data = flatten_dict(instance.data)
kwargs['initial'] = initial_data
kwargs['initial'] = flatten_dict(instance.data)
super().__init__(*args, instance=instance, **kwargs)
@@ -93,6 +93,10 @@ class UserConfigForm(forms.ModelForm, metaclass=UserConfigFormMetaclass):
(f'tables.{table_name}', '') for table_name in instance.data.get('tables', [])
)
# Disable Copilot preference if it has been disabled globally
if not get_config().COPILOT_ENABLED:
self.fields['ui.copilot_enabled'].disabled = True
def save(self, *args, **kwargs):
# Set UserConfig data