mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-31 04:46:26 -06:00
9604 remove provider_network
This commit is contained in:
parent
e7b382df01
commit
0db4252273
@ -173,7 +173,7 @@ class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilte
|
|||||||
label=_('Provider account (account)'),
|
label=_('Provider account (account)'),
|
||||||
)
|
)
|
||||||
provider_network_id = django_filters.ModelMultipleChoiceFilter(
|
provider_network_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
field_name='terminations__provider_network',
|
field_name='terminations___provider_network',
|
||||||
queryset=ProviderNetwork.objects.all(),
|
queryset=ProviderNetwork.objects.all(),
|
||||||
label=_('Provider network (ID)'),
|
label=_('Provider network (ID)'),
|
||||||
)
|
)
|
||||||
@ -316,6 +316,7 @@ class CircuitTerminationFilterSet(NetBoxModelFilterSet, CabledObjectFilterSet):
|
|||||||
)
|
)
|
||||||
provider_network_id = django_filters.ModelMultipleChoiceFilter(
|
provider_network_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
queryset=ProviderNetwork.objects.all(),
|
queryset=ProviderNetwork.objects.all(),
|
||||||
|
field_name='_provider_network',
|
||||||
label=_('ProviderNetwork (ID)'),
|
label=_('ProviderNetwork (ID)'),
|
||||||
)
|
)
|
||||||
provider_id = django_filters.ModelMultipleChoiceFilter(
|
provider_id = django_filters.ModelMultipleChoiceFilter(
|
||||||
|
@ -12,7 +12,7 @@ from netbox.forms import NetBoxModelBulkEditForm
|
|||||||
from tenancy.models import Tenant
|
from tenancy.models import Tenant
|
||||||
from utilities.forms import add_blank_choice, get_field_value
|
from utilities.forms import add_blank_choice, get_field_value
|
||||||
from utilities.forms.fields import ColorField, CommentField, ContentTypeChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField
|
from utilities.forms.fields import ColorField, CommentField, ContentTypeChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField
|
||||||
from utilities.forms.rendering import FieldSet, TabbedGroups
|
from utilities.forms.rendering import FieldSet
|
||||||
from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker, HTMXSelect, NumberWithOptions
|
from utilities.forms.widgets import BulkEditNullBooleanSelect, DatePicker, HTMXSelect, NumberWithOptions
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
@ -212,11 +212,6 @@ class CircuitTerminationBulkEditForm(NetBoxModelBulkEditForm):
|
|||||||
disabled=True,
|
disabled=True,
|
||||||
selector=True
|
selector=True
|
||||||
)
|
)
|
||||||
provider_network = DynamicModelChoiceField(
|
|
||||||
label=_('Provider Network'),
|
|
||||||
queryset=ProviderNetwork.objects.all(),
|
|
||||||
required=False
|
|
||||||
)
|
|
||||||
port_speed = forms.IntegerField(
|
port_speed = forms.IntegerField(
|
||||||
required=False,
|
required=False,
|
||||||
label=_('Port speed (Kbps)'),
|
label=_('Port speed (Kbps)'),
|
||||||
@ -235,10 +230,7 @@ class CircuitTerminationBulkEditForm(NetBoxModelBulkEditForm):
|
|||||||
fieldsets = (
|
fieldsets = (
|
||||||
FieldSet(
|
FieldSet(
|
||||||
'description',
|
'description',
|
||||||
TabbedGroups(
|
FieldSet('scope_type', 'scope', name=_('Scope')),
|
||||||
FieldSet('scope_type', 'scope', name=_('Scope')),
|
|
||||||
FieldSet('provider_network', name=_('Provider Network')),
|
|
||||||
),
|
|
||||||
'mark_connected', name=_('Circuit Termination')
|
'mark_connected', name=_('Circuit Termination')
|
||||||
),
|
),
|
||||||
FieldSet('port_speed', 'upstream_speed', name=_('Termination Details')),
|
FieldSet('port_speed', 'upstream_speed', name=_('Termination Details')),
|
||||||
|
@ -133,19 +133,13 @@ class BaseCircuitTerminationImportForm(forms.ModelForm):
|
|||||||
required=False,
|
required=False,
|
||||||
label=_('Scope type (app & model)')
|
label=_('Scope type (app & model)')
|
||||||
)
|
)
|
||||||
provider_network = CSVModelChoiceField(
|
|
||||||
label=_('Provider network'),
|
|
||||||
queryset=ProviderNetwork.objects.all(),
|
|
||||||
to_field_name='name',
|
|
||||||
required=False
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class CircuitTerminationImportRelatedForm(BaseCircuitTerminationImportForm):
|
class CircuitTerminationImportRelatedForm(BaseCircuitTerminationImportForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CircuitTermination
|
model = CircuitTermination
|
||||||
fields = [
|
fields = [
|
||||||
'circuit', 'term_side', 'scope_type', 'scope_id', 'provider_network', 'port_speed', 'upstream_speed', 'xconnect_id',
|
'circuit', 'term_side', 'scope_type', 'scope_id', 'port_speed', 'upstream_speed', 'xconnect_id',
|
||||||
'pp_info', 'description'
|
'pp_info', 'description'
|
||||||
]
|
]
|
||||||
labels = {
|
labels = {
|
||||||
@ -158,7 +152,7 @@ class CircuitTerminationImportForm(NetBoxModelImportForm, BaseCircuitTermination
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = CircuitTermination
|
model = CircuitTermination
|
||||||
fields = [
|
fields = [
|
||||||
'circuit', 'term_side', 'scope_type', 'scope_id', 'provider_network', 'port_speed', 'upstream_speed', 'xconnect_id',
|
'circuit', 'term_side', 'scope_type', 'scope_id', 'port_speed', 'upstream_speed', 'xconnect_id',
|
||||||
'pp_info', 'description', 'tags'
|
'pp_info', 'description', 'tags'
|
||||||
]
|
]
|
||||||
labels = {
|
labels = {
|
||||||
|
@ -207,7 +207,7 @@ class CircuitTerminationFilterForm(NetBoxModelFilterSetForm):
|
|||||||
fieldsets = (
|
fieldsets = (
|
||||||
FieldSet('q', 'filter_id', 'tag'),
|
FieldSet('q', 'filter_id', 'tag'),
|
||||||
FieldSet('circuit_id', 'term_side', name=_('Circuit')),
|
FieldSet('circuit_id', 'term_side', name=_('Circuit')),
|
||||||
FieldSet('provider_id', 'provider_network_id', name=_('Provider')),
|
FieldSet('provider_id', name=_('Provider')),
|
||||||
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', name=_('Scope')),
|
FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', name=_('Scope')),
|
||||||
)
|
)
|
||||||
region_id = DynamicModelMultipleChoiceField(
|
region_id = DynamicModelMultipleChoiceField(
|
||||||
|
@ -11,7 +11,7 @@ from netbox.forms import NetBoxModelForm
|
|||||||
from tenancy.forms import TenancyForm
|
from tenancy.forms import TenancyForm
|
||||||
from utilities.forms import get_field_value
|
from utilities.forms import get_field_value
|
||||||
from utilities.forms.fields import CommentField, ContentTypeChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField
|
from utilities.forms.fields import CommentField, ContentTypeChoiceField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField
|
||||||
from utilities.forms.rendering import FieldSet, InlineFields, TabbedGroups
|
from utilities.forms.rendering import FieldSet, InlineFields
|
||||||
from utilities.forms.widgets import DatePicker, HTMXSelect, NumberWithOptions
|
from utilities.forms.widgets import DatePicker, HTMXSelect, NumberWithOptions
|
||||||
from utilities.templatetags.builtins.filters import bettertitle
|
from utilities.templatetags.builtins.filters import bettertitle
|
||||||
|
|
||||||
@ -162,20 +162,11 @@ class CircuitTerminationForm(NetBoxModelForm):
|
|||||||
disabled=True,
|
disabled=True,
|
||||||
selector=True
|
selector=True
|
||||||
)
|
)
|
||||||
provider_network = DynamicModelChoiceField(
|
|
||||||
label=_('Provider network'),
|
|
||||||
queryset=ProviderNetwork.objects.all(),
|
|
||||||
required=False,
|
|
||||||
selector=True
|
|
||||||
)
|
|
||||||
|
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
FieldSet(
|
FieldSet(
|
||||||
'circuit', 'term_side', 'description', 'tags',
|
'circuit', 'term_side', 'description', 'tags',
|
||||||
TabbedGroups(
|
FieldSet('scope_type', 'scope', name=_('Scope')),
|
||||||
FieldSet('scope_type', 'scope', name=_('Scope')),
|
|
||||||
FieldSet('provider_network', name=_('Provider Network')),
|
|
||||||
),
|
|
||||||
'mark_connected', name=_('Circuit Termination')
|
'mark_connected', name=_('Circuit Termination')
|
||||||
),
|
),
|
||||||
FieldSet('port_speed', 'upstream_speed', 'xconnect_id', 'pp_info', name=_('Termination Details')),
|
FieldSet('port_speed', 'upstream_speed', 'xconnect_id', 'pp_info', name=_('Termination Details')),
|
||||||
@ -184,7 +175,7 @@ class CircuitTerminationForm(NetBoxModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = CircuitTermination
|
model = CircuitTermination
|
||||||
fields = [
|
fields = [
|
||||||
'circuit', 'term_side', 'scope_type', 'provider_network', 'mark_connected', 'port_speed', 'upstream_speed',
|
'circuit', 'term_side', 'scope_type', 'mark_connected', 'port_speed', 'upstream_speed',
|
||||||
'xconnect_id', 'pp_info', 'description', 'tags',
|
'xconnect_id', 'pp_info', 'description', 'tags',
|
||||||
]
|
]
|
||||||
widgets = {
|
widgets = {
|
||||||
|
@ -64,7 +64,6 @@ class ProviderNetworkType(NetBoxObjectType):
|
|||||||
)
|
)
|
||||||
class CircuitTerminationType(CustomFieldsMixin, TagsMixin, CabledObjectMixin, ObjectType):
|
class CircuitTerminationType(CustomFieldsMixin, TagsMixin, CabledObjectMixin, ObjectType):
|
||||||
circuit: Annotated["CircuitType", strawberry.lazy('circuits.graphql.types')]
|
circuit: Annotated["CircuitType", strawberry.lazy('circuits.graphql.types')]
|
||||||
provider_network: Annotated["ProviderNetworkType", strawberry.lazy('circuits.graphql.types')] | None
|
|
||||||
|
|
||||||
@strawberry_django.field
|
@strawberry_django.field
|
||||||
def scope(self) -> Annotated[Union[
|
def scope(self) -> Annotated[Union[
|
||||||
@ -72,6 +71,7 @@ class CircuitTerminationType(CustomFieldsMixin, TagsMixin, CabledObjectMixin, Ob
|
|||||||
Annotated["RegionType", strawberry.lazy('dcim.graphql.types')],
|
Annotated["RegionType", strawberry.lazy('dcim.graphql.types')],
|
||||||
Annotated["SiteGroupType", strawberry.lazy('dcim.graphql.types')],
|
Annotated["SiteGroupType", strawberry.lazy('dcim.graphql.types')],
|
||||||
Annotated["SiteType", strawberry.lazy('dcim.graphql.types')],
|
Annotated["SiteType", strawberry.lazy('dcim.graphql.types')],
|
||||||
|
Annotated["ProviderNetworkType", strawberry.lazy('circuits.graphql.types')],
|
||||||
], strawberry.union("CircuitTerminationScopeType")] | None:
|
], strawberry.union("CircuitTerminationScopeType")] | None:
|
||||||
return self.scope
|
return self.scope
|
||||||
|
|
||||||
|
@ -42,6 +42,11 @@ class Migration(migrations.Migration):
|
|||||||
to='contenttypes.contenttype',
|
to='contenttypes.contenttype',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='circuittermination',
|
||||||
|
old_name='provider_network',
|
||||||
|
new_name='_provider_network',
|
||||||
|
),
|
||||||
|
|
||||||
# Copy over existing site assignments
|
# Copy over existing site assignments
|
||||||
migrations.RunPython(
|
migrations.RunPython(
|
||||||
|
@ -252,13 +252,6 @@ class CircuitTermination(
|
|||||||
ct_field='scope_type',
|
ct_field='scope_type',
|
||||||
fk_field='scope_id'
|
fk_field='scope_id'
|
||||||
)
|
)
|
||||||
provider_network = models.ForeignKey(
|
|
||||||
to='circuits.ProviderNetwork',
|
|
||||||
on_delete=models.PROTECT,
|
|
||||||
related_name='circuit_terminations',
|
|
||||||
blank=True,
|
|
||||||
null=True
|
|
||||||
)
|
|
||||||
port_speed = models.PositiveIntegerField(
|
port_speed = models.PositiveIntegerField(
|
||||||
verbose_name=_('port speed (Kbps)'),
|
verbose_name=_('port speed (Kbps)'),
|
||||||
blank=True,
|
blank=True,
|
||||||
@ -290,6 +283,13 @@ class CircuitTermination(
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Cached associations to enable efficient filtering
|
# Cached associations to enable efficient filtering
|
||||||
|
_provider_network = models.ForeignKey(
|
||||||
|
to='circuits.ProviderNetwork',
|
||||||
|
on_delete=models.PROTECT,
|
||||||
|
related_name='circuit_terminations',
|
||||||
|
blank=True,
|
||||||
|
null=True
|
||||||
|
)
|
||||||
_location = models.ForeignKey(
|
_location = models.ForeignKey(
|
||||||
to='dcim.Location',
|
to='dcim.Location',
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
@ -352,7 +352,7 @@ class CircuitTermination(
|
|||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
def cache_related_objects(self):
|
def cache_related_objects(self):
|
||||||
self._region = self._sitegroup = self._site = self._location = None
|
self._provider_network = self._region = self._sitegroup = self._site = self._location = None
|
||||||
if self.scope_type:
|
if self.scope_type:
|
||||||
scope_type = self.scope_type.model_class()
|
scope_type = self.scope_type.model_class()
|
||||||
if scope_type == apps.get_model('dcim', 'region'):
|
if scope_type == apps.get_model('dcim', 'region'):
|
||||||
@ -368,6 +368,8 @@ class CircuitTermination(
|
|||||||
self._sitegroup = self.scope.site.group
|
self._sitegroup = self.scope.site.group
|
||||||
self._site = self.scope.site
|
self._site = self.scope.site
|
||||||
self._location = self.scope
|
self._location = self.scope
|
||||||
|
elif scope_type == apps.get_model('circuits', 'providernetwork'):
|
||||||
|
self._provider_network = self.scope
|
||||||
cache_related_objects.alters_data = True
|
cache_related_objects.alters_data = True
|
||||||
|
|
||||||
def to_objectchange(self, action):
|
def to_objectchange(self, action):
|
||||||
|
Loading…
Reference in New Issue
Block a user