1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
Files
netbox-community-netbox/netbox/circuits/forms/model_forms.py

163 lines
4.5 KiB
Python
Raw Normal View History

from django.utils.translation import gettext_lazy as _
2021-09-27 15:23:12 -04:00
from circuits.choices import CircuitCommitRateChoices, CircuitTerminationPortSpeedChoices
2021-09-27 15:23:12 -04:00
from circuits.models import *
from dcim.models import Site
from ipam.models import ASN
from netbox.forms import NetBoxModelForm
2021-09-27 15:23:12 -04:00
from tenancy.forms import TenancyForm
from utilities.forms.fields import CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField
from utilities.forms.widgets import DatePicker, NumberWithOptions
2021-09-27 15:23:12 -04:00
__all__ = (
'CircuitForm',
'CircuitTerminationForm',
'CircuitTypeForm',
'ProviderForm',
'ProviderAccountForm',
2021-09-27 15:23:12 -04:00
'ProviderNetworkForm',
)
class ProviderForm(NetBoxModelForm):
2021-09-27 15:23:12 -04:00
slug = SlugField()
asns = DynamicModelMultipleChoiceField(
queryset=ASN.objects.all(),
label=_('ASNs'),
required=False
)
2021-09-27 15:23:12 -04:00
comments = CommentField()
fieldsets = (
(_('Provider'), ('name', 'slug', 'asns', 'description', 'tags')),
)
2021-09-27 15:23:12 -04:00
class Meta:
model = Provider
fields = [
'name', 'slug', 'asns', 'description', 'comments', 'tags',
]
class ProviderAccountForm(NetBoxModelForm):
provider = DynamicModelChoiceField(
label=_('Provider'),
queryset=Provider.objects.all()
)
comments = CommentField()
class Meta:
model = ProviderAccount
fields = [
'provider', 'name', 'account', 'description', 'comments', 'tags',
2021-09-27 15:23:12 -04:00
]
class ProviderNetworkForm(NetBoxModelForm):
2021-09-27 15:23:12 -04:00
provider = DynamicModelChoiceField(
label=_('Provider'),
2021-09-27 15:23:12 -04:00
queryset=Provider.objects.all()
)
comments = CommentField()
fieldsets = (
(_('Provider Network'), ('provider', 'name', 'service_id', 'description', 'tags')),
)
2021-09-27 15:23:12 -04:00
class Meta:
model = ProviderNetwork
fields = [
'provider', 'name', 'service_id', 'description', 'comments', 'tags',
2021-09-27 15:23:12 -04:00
]
class CircuitTypeForm(NetBoxModelForm):
2021-09-27 15:23:12 -04:00
slug = SlugField()
fieldsets = (
(_('Circuit Type'), (
'name', 'slug', 'description', 'tags',
)),
)
2021-09-27 15:23:12 -04:00
class Meta:
model = CircuitType
fields = [
'name', 'slug', 'description', 'tags',
2021-09-27 15:23:12 -04:00
]
class CircuitForm(TenancyForm, NetBoxModelForm):
2021-09-27 15:23:12 -04:00
provider = DynamicModelChoiceField(
label=_('Provider'),
queryset=Provider.objects.all(),
selector=True
)
provider_account = DynamicModelChoiceField(
label=_('Provider account'),
queryset=ProviderAccount.objects.all(),
required=False,
query_params={
'provider_id': '$provider',
}
2021-09-27 15:23:12 -04:00
)
type = DynamicModelChoiceField(
queryset=CircuitType.objects.all()
)
comments = CommentField()
fieldsets = (
(_('Circuit'), ('provider', 'provider_account', 'cid', 'type', 'status', 'description', 'tags')),
(_('Service Parameters'), ('install_date', 'termination_date', 'commit_rate')),
(_('Tenancy'), ('tenant_group', 'tenant')),
)
2021-09-27 15:23:12 -04:00
class Meta:
model = Circuit
fields = [
'cid', 'type', 'provider', 'provider_account', 'status', 'install_date', 'termination_date', 'commit_rate',
'description', 'tenant_group', 'tenant', 'comments', 'tags',
2021-09-27 15:23:12 -04:00
]
widgets = {
'install_date': DatePicker(),
'termination_date': DatePicker(),
'commit_rate': NumberWithOptions(
options=CircuitCommitRateChoices
),
2021-09-27 15:23:12 -04:00
}
class CircuitTerminationForm(NetBoxModelForm):
circuit = DynamicModelChoiceField(
label=_('Circuit'),
queryset=Circuit.objects.all(),
selector=True
)
2021-09-27 15:23:12 -04:00
site = DynamicModelChoiceField(
label=_('Site'),
2021-09-27 15:23:12 -04:00
queryset=Site.objects.all(),
required=False,
selector=True
)
2021-09-27 15:23:12 -04:00
provider_network = DynamicModelChoiceField(
label=_('Provider network'),
2021-09-27 15:23:12 -04:00
queryset=ProviderNetwork.objects.all(),
required=False,
selector=True
2021-09-27 15:23:12 -04:00
)
class Meta:
model = CircuitTermination
fields = [
'circuit', 'term_side', 'site', 'provider_network', 'mark_connected', 'port_speed', 'upstream_speed',
'xconnect_id', 'pp_info', 'description', 'tags',
2021-09-27 15:23:12 -04:00
]
widgets = {
'port_speed': NumberWithOptions(
options=CircuitTerminationPortSpeedChoices
),
'upstream_speed': NumberWithOptions(
options=CircuitTerminationPortSpeedChoices
),
2021-09-27 15:23:12 -04:00
}