1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00
2024-03-19 13:34:13 -04:00

154 lines
3.6 KiB
Python

from django import forms
from django.utils.translation import gettext_lazy as _
from netbox.forms import NetBoxModelForm
from tenancy.models import *
from utilities.forms.fields import CommentField, DynamicModelChoiceField, SlugField
from utilities.forms.rendering import FieldSet, ObjectAttribute
__all__ = (
'ContactAssignmentForm',
'ContactForm',
'ContactGroupForm',
'ContactRoleForm',
'TenantForm',
'TenantGroupForm',
)
#
# Tenants
#
class TenantGroupForm(NetBoxModelForm):
parent = DynamicModelChoiceField(
label=_('Parent'),
queryset=TenantGroup.objects.all(),
required=False
)
slug = SlugField()
fieldsets = (
FieldSet('parent', 'name', 'slug', 'description', 'tags', name=_('Tenant Group')),
)
class Meta:
model = TenantGroup
fields = [
'parent', 'name', 'slug', 'description', 'tags',
]
class TenantForm(NetBoxModelForm):
slug = SlugField()
group = DynamicModelChoiceField(
label=_('Group'),
queryset=TenantGroup.objects.all(),
required=False
)
comments = CommentField()
fieldsets = (
FieldSet('name', 'slug', 'group', 'description', 'tags', name=_('Tenant')),
)
class Meta:
model = Tenant
fields = (
'name', 'slug', 'group', 'description', 'comments', 'tags',
)
#
# Contacts
#
class ContactGroupForm(NetBoxModelForm):
parent = DynamicModelChoiceField(
label=_('Parent'),
queryset=ContactGroup.objects.all(),
required=False
)
slug = SlugField()
fieldsets = (
FieldSet('parent', 'name', 'slug', 'description', 'tags', name=_('Contact Group')),
)
class Meta:
model = ContactGroup
fields = ('parent', 'name', 'slug', 'description', 'tags')
class ContactRoleForm(NetBoxModelForm):
slug = SlugField()
fieldsets = (
FieldSet('name', 'slug', 'description', 'tags', name=_('Contact Role')),
)
class Meta:
model = ContactRole
fields = ('name', 'slug', 'description', 'tags')
class ContactForm(NetBoxModelForm):
group = DynamicModelChoiceField(
label=_('Group'),
queryset=ContactGroup.objects.all(),
required=False
)
comments = CommentField()
fieldsets = (
FieldSet(
'group', 'name', 'title', 'phone', 'email', 'address', 'link', 'description', 'tags',
name=_('Contact')
),
)
class Meta:
model = Contact
fields = (
'group', 'name', 'title', 'phone', 'email', 'address', 'link', 'description', 'comments', 'tags',
)
widgets = {
'address': forms.Textarea(attrs={'rows': 3}),
}
class ContactAssignmentForm(NetBoxModelForm):
group = DynamicModelChoiceField(
label=_('Group'),
queryset=ContactGroup.objects.all(),
required=False,
initial_params={
'contacts': '$contact'
}
)
contact = DynamicModelChoiceField(
label=_('Contact'),
queryset=Contact.objects.all(),
query_params={
'group_id': '$group'
}
)
role = DynamicModelChoiceField(
label=_('Role'),
queryset=ContactRole.objects.all()
)
fieldsets = (
FieldSet(ObjectAttribute('object'), 'group', 'contact', 'role', 'priority', 'tags'),
)
class Meta:
model = ContactAssignment
fields = (
'object_type', 'object_id', 'group', 'contact', 'role', 'priority', 'tags'
)
widgets = {
'object_type': forms.HiddenInput(),
'object_id': forms.HiddenInput(),
}