mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-18 13:38:16 -06:00
add "Location" to CircuitTermination
model and form
This commit is contained in:
parent
4315c4697c
commit
f193dd4281
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -9,7 +9,7 @@
|
|||||||
IF YOUR PULL REQUEST DOES NOT REFERENCE AN ACCEPTED BUG REPORT OR
|
IF YOUR PULL REQUEST DOES NOT REFERENCE AN ACCEPTED BUG REPORT OR
|
||||||
FEATURE REQUEST, IT WILL BE MARKED AS INVALID AND CLOSED.
|
FEATURE REQUEST, IT WILL BE MARKED AS INVALID AND CLOSED.
|
||||||
-->
|
-->
|
||||||
### Fixes: <ISSUE NUMBER GOES HERE>
|
### Fixes: 9604
|
||||||
<!--
|
<!--
|
||||||
Please include a summary of the proposed changes below.
|
Please include a summary of the proposed changes below.
|
||||||
-->
|
-->
|
||||||
|
@ -2,7 +2,7 @@ from django import forms
|
|||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from circuits.models import *
|
from circuits.models import *
|
||||||
from dcim.models import Region, Site, SiteGroup
|
from dcim.models import Location, Region, Site, SiteGroup
|
||||||
from ipam.models import ASN
|
from ipam.models import ASN
|
||||||
from netbox.forms import NetBoxModelForm
|
from netbox.forms import NetBoxModelForm
|
||||||
from tenancy.forms import TenancyForm
|
from tenancy.forms import TenancyForm
|
||||||
@ -150,6 +150,14 @@ class CircuitTerminationForm(BootstrapMixin, forms.ModelForm):
|
|||||||
},
|
},
|
||||||
required=False
|
required=False
|
||||||
)
|
)
|
||||||
|
location = DynamicModelChoiceField(
|
||||||
|
queryset=Location.objects.all(),
|
||||||
|
query_params={
|
||||||
|
'region_id': '$region',
|
||||||
|
'site_id': '$site',
|
||||||
|
},
|
||||||
|
required=False
|
||||||
|
)
|
||||||
provider_network = DynamicModelChoiceField(
|
provider_network = DynamicModelChoiceField(
|
||||||
queryset=ProviderNetwork.objects.all(),
|
queryset=ProviderNetwork.objects.all(),
|
||||||
required=False
|
required=False
|
||||||
@ -158,7 +166,7 @@ class CircuitTerminationForm(BootstrapMixin, forms.ModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = CircuitTermination
|
model = CircuitTermination
|
||||||
fields = [
|
fields = [
|
||||||
'provider', 'circuit', 'term_side', 'region', 'site_group', 'site', 'provider_network', 'mark_connected',
|
'provider', 'circuit', 'term_side', 'region', 'site_group', 'site', 'location', 'provider_network', 'mark_connected',
|
||||||
'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info', 'description',
|
'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info', 'description',
|
||||||
]
|
]
|
||||||
help_texts = {
|
help_texts = {
|
||||||
|
@ -154,6 +154,13 @@ class CircuitTermination(WebhooksMixin, ChangeLoggedModel, LinkTermination):
|
|||||||
blank=True,
|
blank=True,
|
||||||
null=True
|
null=True
|
||||||
)
|
)
|
||||||
|
location = models.ForeignKey(
|
||||||
|
to='dcim.Location',
|
||||||
|
on_delete=models.PROTECT,
|
||||||
|
related_name='circuit_terminations',
|
||||||
|
blank=True,
|
||||||
|
null=True
|
||||||
|
)
|
||||||
provider_network = models.ForeignKey(
|
provider_network = models.ForeignKey(
|
||||||
to='circuits.ProviderNetwork',
|
to='circuits.ProviderNetwork',
|
||||||
on_delete=models.PROTECT,
|
on_delete=models.PROTECT,
|
||||||
@ -204,9 +211,10 @@ class CircuitTermination(WebhooksMixin, ChangeLoggedModel, LinkTermination):
|
|||||||
|
|
||||||
# Must define either site *or* provider network
|
# Must define either site *or* provider network
|
||||||
if self.site is None and self.provider_network is None:
|
if self.site is None and self.provider_network is None:
|
||||||
raise ValidationError("A circuit termination must attach to either a site or a provider network.")
|
raise ValidationError("A circuit termination must attach to either a site [+optionally a location] or a provider network.")
|
||||||
|
|
||||||
if self.site and self.provider_network:
|
if self.site and self.provider_network:
|
||||||
raise ValidationError("A circuit termination cannot attach to both a site and a provider network.")
|
raise ValidationError("A circuit termination cannot attach to both a site [+optionally a location] and a provider network.")
|
||||||
|
|
||||||
def to_objectchange(self, action):
|
def to_objectchange(self, action):
|
||||||
objectchange = super().to_objectchange(action)
|
objectchange = super().to_objectchange(action)
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
{% render_field form.region %}
|
{% render_field form.region %}
|
||||||
{% render_field form.site_group %}
|
{% render_field form.site_group %}
|
||||||
{% render_field form.site %}
|
{% render_field form.site %}
|
||||||
|
{% render_field form.location %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane{% if providernetwork_tab_active %} active{% endif %}" id="providernetwork">
|
<div class="tab-pane{% if providernetwork_tab_active %} active{% endif %}" id="providernetwork">
|
||||||
{% render_field form.provider_network %}
|
{% render_field form.provider_network %}
|
||||||
|
Loading…
Reference in New Issue
Block a user