Remove TagField

This commit is contained in:
Jeremy Stretch 2020-06-12 09:58:59 -04:00
parent da906f48d9
commit 7dc4f8d5cc
7 changed files with 101 additions and 59 deletions

View File

@ -3,8 +3,8 @@ from django import forms
from dcim.models import Region, Site from dcim.models import Region, Site
from extras.forms import ( from extras.forms import (
AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldFilterForm, CustomFieldModelForm, CustomFieldModelCSVForm, AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldFilterForm, CustomFieldModelForm, CustomFieldModelCSVForm,
TagField,
) )
from extras.models import Tag
from tenancy.forms import TenancyFilterForm, TenancyForm from tenancy.forms import TenancyFilterForm, TenancyForm
from tenancy.models import Tenant from tenancy.models import Tenant
from utilities.forms import ( from utilities.forms import (
@ -23,7 +23,8 @@ from .models import Circuit, CircuitTermination, CircuitType, Provider
class ProviderForm(BootstrapMixin, CustomFieldModelForm): class ProviderForm(BootstrapMixin, CustomFieldModelForm):
slug = SlugField() slug = SlugField()
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -165,7 +166,8 @@ class CircuitForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=CircuitType.objects.all() queryset=CircuitType.objects.all()
) )
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )

View File

@ -14,8 +14,9 @@ from timezone_field import TimeZoneFormField
from circuits.models import Circuit, Provider from circuits.models import Circuit, Provider
from extras.forms import ( from extras.forms import (
AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldFilterForm, CustomFieldModelForm, AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldFilterForm, CustomFieldModelForm,
LocalConfigContextFilterForm, TagField, LocalConfigContextFilterForm,
) )
from extras.models import Tag
from ipam.constants import BGP_ASN_MAX, BGP_ASN_MIN from ipam.constants import BGP_ASN_MAX, BGP_ASN_MIN
from ipam.models import IPAddress, VLAN from ipam.models import IPAddress, VLAN
from tenancy.forms import TenancyFilterForm, TenancyForm from tenancy.forms import TenancyFilterForm, TenancyForm
@ -225,7 +226,8 @@ class SiteForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
) )
slug = SlugField() slug = SlugField()
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -481,7 +483,8 @@ class RackForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
required=False required=False
) )
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -750,7 +753,8 @@ class RackReservationForm(BootstrapMixin, TenancyForm, forms.ModelForm):
), ),
widget=StaticSelect2() widget=StaticSelect2()
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -912,7 +916,8 @@ class DeviceTypeForm(BootstrapMixin, CustomFieldModelForm):
slug_source='model' slug_source='model'
) )
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -1716,11 +1721,14 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
required=False required=False
) )
comments = CommentField() comments = CommentField()
tags = TagField(required=False)
local_context_data = JSONField( local_context_data = JSONField(
required=False, required=False,
label='' label=''
) )
tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False
)
class Meta: class Meta:
model = Device model = Device
@ -2209,7 +2217,8 @@ class ConsolePortFilterForm(DeviceComponentFilterForm):
class ConsolePortForm(BootstrapMixin, forms.ModelForm): class ConsolePortForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2236,7 +2245,8 @@ class ConsolePortCreateForm(LabeledComponentForm):
max_length=100, max_length=100,
required=False required=False
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2292,7 +2302,8 @@ class ConsoleServerPortFilterForm(DeviceComponentFilterForm):
class ConsoleServerPortForm(BootstrapMixin, forms.ModelForm): class ConsoleServerPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2319,7 +2330,8 @@ class ConsoleServerPortCreateForm(LabeledComponentForm):
max_length=100, max_length=100,
required=False required=False
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2389,7 +2401,8 @@ class PowerPortFilterForm(DeviceComponentFilterForm):
class PowerPortForm(BootstrapMixin, forms.ModelForm): class PowerPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2426,7 +2439,8 @@ class PowerPortCreateForm(LabeledComponentForm):
max_length=100, max_length=100,
required=False required=False
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2486,7 +2500,8 @@ class PowerOutletForm(BootstrapMixin, forms.ModelForm):
queryset=PowerPort.objects.all(), queryset=PowerPort.objects.all(),
required=False required=False
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2530,7 +2545,8 @@ class PowerOutletCreateForm(LabeledComponentForm):
max_length=100, max_length=100,
required=False required=False
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2689,7 +2705,8 @@ class InterfaceForm(InterfaceCommonForm, BootstrapMixin, forms.ModelForm):
}, },
) )
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -2773,7 +2790,8 @@ class InterfaceCreateForm(InterfaceCommonForm, LabeledComponentForm):
required=False, required=False,
widget=StaticSelect2(), widget=StaticSelect2(),
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
untagged_vlan = DynamicModelChoiceField( untagged_vlan = DynamicModelChoiceField(
@ -2985,7 +3003,8 @@ class FrontPortFilterForm(DeviceComponentFilterForm):
class FrontPortForm(BootstrapMixin, forms.ModelForm): class FrontPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -3176,7 +3195,8 @@ class RearPortFilterForm(DeviceComponentFilterForm):
class RearPortForm(BootstrapMixin, forms.ModelForm): class RearPortForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -3279,7 +3299,8 @@ class DeviceBayFilterForm(DeviceComponentFilterForm):
class DeviceBayForm(BootstrapMixin, forms.ModelForm): class DeviceBayForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -3300,7 +3321,8 @@ class DeviceBayCreateForm(BootstrapMixin, forms.Form):
name_pattern = ExpandableNameField( name_pattern = ExpandableNameField(
label='Name' label='Name'
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -3330,7 +3352,8 @@ class DeviceBayBulkCreateForm(
form_from_model(DeviceBay, ['description', 'tags']), form_from_model(DeviceBay, ['description', 'tags']),
DeviceBulkAddComponentForm DeviceBulkAddComponentForm
): ):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -3634,7 +3657,8 @@ class ConnectCableToPowerFeedForm(BootstrapMixin, forms.ModelForm):
class CableForm(BootstrapMixin, forms.ModelForm): class CableForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -3963,7 +3987,8 @@ class InventoryItemForm(BootstrapMixin, forms.ModelForm):
queryset=Manufacturer.objects.all(), queryset=Manufacturer.objects.all(),
required=False required=False
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -4111,7 +4136,8 @@ class DeviceSelectionForm(forms.Form):
class VirtualChassisForm(BootstrapMixin, forms.ModelForm): class VirtualChassisForm(BootstrapMixin, forms.ModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -4301,7 +4327,8 @@ class PowerPanelForm(BootstrapMixin, forms.ModelForm):
queryset=RackGroup.objects.all(), queryset=RackGroup.objects.all(),
required=False required=False
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -4425,7 +4452,8 @@ class PowerFeedForm(BootstrapMixin, CustomFieldModelForm):
required=False required=False
) )
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )

View File

@ -3,7 +3,6 @@ from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from mptt.forms import TreeNodeMultipleChoiceField from mptt.forms import TreeNodeMultipleChoiceField
from taggit.forms import TagField as TagField_
from dcim.models import DeviceRole, Platform, Region, Site from dcim.models import DeviceRole, Platform, Region, Site
from tenancy.models import Tenant, TenantGroup from tenancy.models import Tenant, TenantGroup
@ -143,15 +142,6 @@ class CustomFieldFilterForm(forms.Form):
# Tags # Tags
# #
class TagField(TagField_):
def widget_attrs(self, widget):
# Apply the "tagfield" CSS class to trigger the special API-based selection widget for tags
return {
'class': 'tagfield'
}
class TagForm(BootstrapMixin, forms.ModelForm): class TagForm(BootstrapMixin, forms.ModelForm):
slug = SlugField() slug = SlugField()
@ -179,8 +169,14 @@ class AddRemoveTagsForm(forms.Form):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
# Add add/remove tags fields # Add add/remove tags fields
self.fields['add_tags'] = TagField(required=False) self.fields['add_tags'] = DynamicModelMultipleChoiceField(
self.fields['remove_tags'] = TagField(required=False) queryset=Tag.objects.all(),
required=False
)
self.fields['remove_tags'] = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False
)
class TagFilterForm(BootstrapMixin, forms.Form): class TagFilterForm(BootstrapMixin, forms.Form):

View File

@ -4,8 +4,8 @@ from django.core.validators import MaxValueValidator, MinValueValidator
from dcim.models import Device, Interface, Rack, Region, Site from dcim.models import Device, Interface, Rack, Region, Site
from extras.forms import ( from extras.forms import (
AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldModelForm, CustomFieldFilterForm, AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldModelForm, CustomFieldFilterForm,
TagField,
) )
from extras.models import Tag
from tenancy.forms import TenancyFilterForm, TenancyForm from tenancy.forms import TenancyFilterForm, TenancyForm
from tenancy.models import Tenant from tenancy.models import Tenant
from utilities.forms import ( from utilities.forms import (
@ -33,7 +33,8 @@ IPADDRESS_MASK_LENGTH_CHOICES = add_blank_choice([
# #
class VRFForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): class VRFForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -141,7 +142,8 @@ class AggregateForm(BootstrapMixin, CustomFieldModelForm):
rir = DynamicModelChoiceField( rir = DynamicModelChoiceField(
queryset=RIR.objects.all() queryset=RIR.objects.all()
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -292,7 +294,10 @@ class PrefixForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=Role.objects.all(), queryset=Role.objects.all(),
required=False required=False
) )
tags = TagField(required=False) tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False
)
class Meta: class Meta:
model = Prefix model = Prefix
@ -584,7 +589,8 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel
required=False, required=False,
label='Make this the primary IP for the device/VM' label='Make this the primary IP for the device/VM'
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -990,7 +996,10 @@ class VLANForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=Role.objects.all(), queryset=Role.objects.all(),
required=False required=False
) )
tags = TagField(required=False) tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False
)
class Meta: class Meta:
model = VLAN model = VLAN
@ -1157,7 +1166,8 @@ class ServiceForm(BootstrapMixin, CustomFieldModelForm):
min_value=SERVICE_PORT_MIN, min_value=SERVICE_PORT_MIN,
max_value=SERVICE_PORT_MAX max_value=SERVICE_PORT_MAX
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )

View File

@ -5,8 +5,8 @@ from django import forms
from dcim.models import Device from dcim.models import Device
from extras.forms import ( from extras.forms import (
AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldFilterForm, CustomFieldModelForm, CustomFieldModelCSVForm, AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldFilterForm, CustomFieldModelForm, CustomFieldModelCSVForm,
TagField,
) )
from extras.models import Tag
from utilities.forms import ( from utilities.forms import (
APISelectMultiple, BootstrapMixin, CSVModelChoiceField, CSVModelForm, DynamicModelChoiceField, APISelectMultiple, BootstrapMixin, CSVModelChoiceField, CSVModelForm, DynamicModelChoiceField,
DynamicModelMultipleChoiceField, SlugField, StaticSelect2Multiple, TagFilterField, DynamicModelMultipleChoiceField, SlugField, StaticSelect2Multiple, TagFilterField,
@ -90,7 +90,8 @@ class SecretForm(BootstrapMixin, CustomFieldModelForm):
role = DynamicModelChoiceField( role = DynamicModelChoiceField(
queryset=SecretRole.objects.all() queryset=SecretRole.objects.all()
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )

View File

@ -2,8 +2,8 @@ from django import forms
from extras.forms import ( from extras.forms import (
AddRemoveTagsForm, CustomFieldModelForm, CustomFieldBulkEditForm, CustomFieldFilterForm, CustomFieldModelCSVForm, AddRemoveTagsForm, CustomFieldModelForm, CustomFieldBulkEditForm, CustomFieldFilterForm, CustomFieldModelCSVForm,
TagField,
) )
from extras.models import Tag
from utilities.forms import ( from utilities.forms import (
APISelect, APISelectMultiple, BootstrapMixin, CommentField, CSVModelChoiceField, CSVModelForm, APISelect, APISelectMultiple, BootstrapMixin, CommentField, CSVModelChoiceField, CSVModelForm,
DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, TagFilterField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, TagFilterField,
@ -57,7 +57,8 @@ class TenantForm(BootstrapMixin, CustomFieldModelForm):
required=False required=False
) )
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )

View File

@ -7,8 +7,8 @@ from dcim.forms import INTERFACE_MODE_HELP_TEXT
from dcim.models import Device, DeviceRole, Interface, Platform, Rack, Region, Site from dcim.models import Device, DeviceRole, Interface, Platform, Rack, Region, Site
from extras.forms import ( from extras.forms import (
AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldModelForm, CustomFieldFilterForm, AddRemoveTagsForm, CustomFieldBulkEditForm, CustomFieldModelCSVForm, CustomFieldModelForm, CustomFieldFilterForm,
TagField,
) )
from extras.models import Tag
from ipam.models import IPAddress, VLAN from ipam.models import IPAddress, VLAN
from tenancy.forms import TenancyFilterForm, TenancyForm from tenancy.forms import TenancyFilterForm, TenancyForm
from tenancy.models import Tenant from tenancy.models import Tenant
@ -83,7 +83,8 @@ class ClusterForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
required=False required=False
) )
comments = CommentField() comments = CommentField()
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -312,13 +313,14 @@ class VirtualMachineForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
required=False required=False
) )
tags = TagField(
required=False
)
local_context_data = JSONField( local_context_data = JSONField(
required=False, required=False,
label='' label=''
) )
tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False
)
class Meta: class Meta:
model = VirtualMachine model = VirtualMachine
@ -590,7 +592,8 @@ class InterfaceForm(BootstrapMixin, forms.ModelForm):
}, },
) )
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )
@ -697,7 +700,8 @@ class InterfaceCreateForm(BootstrapMixin, forms.Form):
}, },
) )
) )
tags = TagField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False required=False
) )