8749 add is_cloneable to custom fields

This commit is contained in:
Arthur 2022-11-15 11:10:17 -08:00
parent 564884a774
commit abc0d8b1d5
8 changed files with 37 additions and 5 deletions

View File

@ -91,7 +91,7 @@ class CustomFieldSerializer(ValidatedModelSerializer):
model = CustomField
fields = [
'id', 'url', 'display', 'content_types', 'type', 'object_type', 'data_type', 'name', 'label', 'group_name',
'description', 'required', 'filter_logic', 'ui_visibility', 'default', 'weight', 'validation_minimum',
'description', 'required', 'filter_logic', 'ui_visibility', 'is_cloneable', 'default', 'weight', 'validation_minimum',
'validation_maximum', 'validation_regex', 'choices', 'created', 'last_updated',
]

View File

@ -44,6 +44,10 @@ class CustomFieldBulkEditForm(BulkEditForm):
initial='',
widget=StaticSelect()
)
is_cloneable = forms.NullBooleanField(
required=False,
widget=BulkEditNullBooleanSelect()
)
nullable_fields = ('group_name', 'description',)

View File

@ -48,7 +48,7 @@ class CustomFieldCSVForm(CSVModelForm):
fields = (
'name', 'label', 'group_name', 'type', 'content_types', 'object_type', 'required', 'description', 'weight',
'filter_logic', 'default', 'choices', 'weight', 'validation_minimum', 'validation_maximum',
'validation_regex', 'ui_visibility',
'validation_regex', 'ui_visibility', 'is_cloneable',
)

View File

@ -43,7 +43,7 @@ class CustomFieldForm(BootstrapMixin, forms.ModelForm):
('Custom Field', (
'content_types', 'name', 'label', 'group_name', 'type', 'object_type', 'weight', 'required', 'description',
)),
('Behavior', ('filter_logic', 'ui_visibility')),
('Behavior', ('filter_logic', 'ui_visibility', 'is_cloneable')),
('Values', ('default', 'choices')),
('Validation', ('validation_minimum', 'validation_maximum', 'validation_regex')),
)

View File

@ -0,0 +1,18 @@
# Generated by Django 4.0.8 on 2022-11-15 18:59
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('extras', '0077_customlink_extend_text_and_url'),
]
operations = [
migrations.AddField(
model_name='customfield',
name='is_cloneable',
field=models.BooleanField(default=False),
),
]

View File

@ -143,12 +143,17 @@ class CustomField(CloningMixin, ExportTemplatesMixin, WebhooksMixin, ChangeLogge
verbose_name='UI visibility',
help_text='Specifies the visibility of custom field in the UI'
)
is_cloneable = models.BooleanField(
default=False,
verbose_name='Cloneable',
help_text='If true, this field will be copied over when cloning objects.'
)
objects = CustomFieldManager()
clone_fields = (
'content_types', 'type', 'object_type', 'group_name', 'description', 'required', 'filter_logic', 'default',
'weight', 'validation_minimum', 'validation_maximum', 'validation_regex', 'choices', 'ui_visibility',
'weight', 'validation_minimum', 'validation_maximum', 'validation_regex', 'choices', 'ui_visibility', 'is_cloneable',
)
class Meta:

View File

@ -29,12 +29,13 @@ class CustomFieldTable(NetBoxTable):
content_types = columns.ContentTypesColumn()
required = columns.BooleanColumn()
ui_visibility = columns.ChoiceFieldColumn(verbose_name="UI visibility")
is_cloneable = columns.BooleanColumn()
class Meta(NetBoxTable.Meta):
model = CustomField
fields = (
'pk', 'id', 'name', 'content_types', 'label', 'type', 'group_name', 'required', 'weight', 'default',
'description', 'filter_logic', 'ui_visibility', 'choices', 'created', 'last_updated',
'description', 'filter_logic', 'ui_visibility', 'is_cloneable', 'choices', 'created', 'last_updated',
)
default_columns = ('pk', 'name', 'content_types', 'label', 'group_name', 'type', 'required', 'description')

View File

@ -50,6 +50,10 @@
<th scope="row">UI Visibility</th>
<td>{{ object.get_ui_visibility_display }}</td>
</tr>
<tr>
<th scope="row">Cloneable</th>
<td>{% checkmark object.is_cloneable %}</td>
</tr>
</table>
</div>
</div>