From 0f0ab1a3be9dd50549233f55977f6fcb678faeb9 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 19 Apr 2024 14:50:42 -0400 Subject: [PATCH] Closes #15547: Add comments field to CustomField model --- netbox/extras/api/serializers_/customfields.py | 2 +- netbox/extras/filtersets.py | 3 ++- netbox/extras/forms/bulk_edit.py | 9 +++------ netbox/extras/forms/bulk_import.py | 2 +- netbox/extras/forms/model_forms.py | 1 + .../0114_customfield_add_comments.py | 18 ++++++++++++++++++ netbox/extras/models/customfields.py | 4 ++++ netbox/extras/search.py | 12 ++++++++++++ netbox/extras/tables/tables.py | 2 +- netbox/templates/extras/customfield.html | 1 + 10 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 netbox/extras/migrations/0114_customfield_add_comments.py diff --git a/netbox/extras/api/serializers_/customfields.py b/netbox/extras/api/serializers_/customfields.py index 79bb39557..082047e94 100644 --- a/netbox/extras/api/serializers_/customfields.py +++ b/netbox/extras/api/serializers_/customfields.py @@ -65,7 +65,7 @@ class CustomFieldSerializer(ValidatedModelSerializer): 'id', 'url', 'display', 'object_types', 'type', 'related_object_type', 'data_type', 'name', 'label', 'group_name', 'description', 'required', 'search_weight', 'filter_logic', 'ui_visible', 'ui_editable', 'is_cloneable', 'default', 'weight', 'validation_minimum', 'validation_maximum', 'validation_regex', - 'choice_set', 'created', 'last_updated', + 'choice_set', 'comments', 'created', 'last_updated', ] brief_fields = ('id', 'url', 'display', 'name', 'description') diff --git a/netbox/extras/filtersets.py b/netbox/extras/filtersets.py index 4674335c9..274834d31 100644 --- a/netbox/extras/filtersets.py +++ b/netbox/extras/filtersets.py @@ -165,7 +165,8 @@ class CustomFieldFilterSet(ChangeLoggedModelFilterSet): Q(name__icontains=value) | Q(label__icontains=value) | Q(group_name__icontains=value) | - Q(description__icontains=value) + Q(description__icontains=value) | + Q(comments__icontains=value) ) diff --git a/netbox/extras/forms/bulk_edit.py b/netbox/extras/forms/bulk_edit.py index 9479fef99..7e9f452e8 100644 --- a/netbox/extras/forms/bulk_edit.py +++ b/netbox/extras/forms/bulk_edit.py @@ -5,7 +5,7 @@ from extras.choices import * from extras.models import * from netbox.forms import NetBoxModelBulkEditForm from utilities.forms import BulkEditForm, add_blank_choice -from utilities.forms.fields import ColorField, DynamicModelChoiceField +from utilities.forms.fields import ColorField, CommentField, DynamicModelChoiceField from utilities.forms.widgets import BulkEditNullBooleanSelect __all__ = ( @@ -64,6 +64,7 @@ class CustomFieldBulkEditForm(BulkEditForm): required=False, widget=BulkEditNullBooleanSelect() ) + comments = CommentField() nullable_fields = ('group_name', 'description', 'choice_set') @@ -316,8 +317,4 @@ class JournalEntryBulkEditForm(BulkEditForm): choices=add_blank_choice(JournalEntryKindChoices), required=False ) - comments = forms.CharField( - label=_('Comments'), - required=False, - widget=forms.Textarea() - ) + comments = CommentField() diff --git a/netbox/extras/forms/bulk_import.py b/netbox/extras/forms/bulk_import.py index 55f71dbd2..d0114077a 100644 --- a/netbox/extras/forms/bulk_import.py +++ b/netbox/extras/forms/bulk_import.py @@ -71,7 +71,7 @@ class CustomFieldImportForm(CSVModelForm): fields = ( 'name', 'label', 'group_name', 'type', 'object_types', 'related_object_type', 'required', 'description', 'search_weight', 'filter_logic', 'default', 'choice_set', 'weight', 'validation_minimum', - 'validation_maximum', 'validation_regex', 'ui_visible', 'ui_editable', 'is_cloneable', + 'validation_maximum', 'validation_regex', 'ui_visible', 'ui_editable', 'is_cloneable', 'comments', ) diff --git a/netbox/extras/forms/model_forms.py b/netbox/extras/forms/model_forms.py index 680bec1e4..b08f3d43c 100644 --- a/netbox/extras/forms/model_forms.py +++ b/netbox/extras/forms/model_forms.py @@ -53,6 +53,7 @@ class CustomFieldForm(forms.ModelForm): queryset=CustomFieldChoiceSet.objects.all(), required=False ) + comments = CommentField() fieldsets = ( FieldSet( diff --git a/netbox/extras/migrations/0114_customfield_add_comments.py b/netbox/extras/migrations/0114_customfield_add_comments.py new file mode 100644 index 000000000..cd85db1ba --- /dev/null +++ b/netbox/extras/migrations/0114_customfield_add_comments.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.3 on 2024-04-19 18:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('extras', '0113_customfield_rename_object_type'), + ] + + operations = [ + migrations.AddField( + model_name='customfield', + name='comments', + field=models.TextField(blank=True), + ), + ] diff --git a/netbox/extras/models/customfields.py b/netbox/extras/models/customfields.py index a14c71c63..676c6c66a 100644 --- a/netbox/extras/models/customfields.py +++ b/netbox/extras/models/customfields.py @@ -205,6 +205,10 @@ class CustomField(CloningMixin, ExportTemplatesMixin, ChangeLoggedModel): verbose_name=_('is cloneable'), help_text=_('Replicate this value when cloning objects') ) + comments = models.TextField( + verbose_name=_('comments'), + blank=True + ) objects = CustomFieldManager() diff --git a/netbox/extras/search.py b/netbox/extras/search.py index fff59fa77..9203b9144 100644 --- a/netbox/extras/search.py +++ b/netbox/extras/search.py @@ -2,6 +2,18 @@ from netbox.search import SearchIndex, register_search from . import models +@register_search +class CustomFieldIndex(SearchIndex): + model = models.CustomField + fields = ( + ('name', 100), + ('label', 100), + ('description', 500), + ('comments', 5000), + ) + display_attrs = ('description',) + + @register_search class JournalEntryIndex(SearchIndex): model = models.JournalEntry diff --git a/netbox/extras/tables/tables.py b/netbox/extras/tables/tables.py index 04bebd603..c448c2a31 100644 --- a/netbox/extras/tables/tables.py +++ b/netbox/extras/tables/tables.py @@ -78,7 +78,7 @@ class CustomFieldTable(NetBoxTable): fields = ( 'pk', 'id', 'name', 'object_types', 'label', 'type', 'related_object_type', 'group_name', 'required', 'default', 'description', 'search_weight', 'filter_logic', 'ui_visible', 'ui_editable', 'is_cloneable', - 'weight', 'choice_set', 'choices', 'created', 'last_updated', + 'weight', 'choice_set', 'choices', 'comments', 'created', 'last_updated', ) default_columns = ('pk', 'name', 'object_types', 'label', 'group_name', 'type', 'required', 'description') diff --git a/netbox/templates/extras/customfield.html b/netbox/templates/extras/customfield.html index 1fec35417..4efd1e4d0 100644 --- a/netbox/templates/extras/customfield.html +++ b/netbox/templates/extras/customfield.html @@ -85,6 +85,7 @@ + {% include 'inc/panels/comments.html' %} {% plugin_left_page object %}