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

Initial work on contacts

This commit is contained in:
jeremystretch
2021-10-18 11:45:05 -04:00
parent 6015c47587
commit 2e78568d4d
24 changed files with 1594 additions and 29 deletions

View File

@@ -1,15 +1,22 @@
from django import forms
from extras.forms import AddRemoveTagsForm, CustomFieldModelBulkEditForm
from tenancy.models import Tenant, TenantGroup
from tenancy.models import *
from utilities.forms import BootstrapMixin, DynamicModelChoiceField
__all__ = (
'ContactBulkEditForm',
'ContactGroupBulkEditForm',
'ContactRoleBulkEditForm',
'TenantBulkEditForm',
'TenantGroupBulkEditForm',
)
#
# Tenants
#
class TenantGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm):
pk = forms.ModelMultipleChoiceField(
queryset=TenantGroup.objects.all(),
@@ -42,3 +49,53 @@ class TenantBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk
nullable_fields = [
'group',
]
#
# Contacts
#
class ContactGroupBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm):
pk = forms.ModelMultipleChoiceField(
queryset=ContactGroup.objects.all(),
widget=forms.MultipleHiddenInput
)
parent = DynamicModelChoiceField(
queryset=ContactGroup.objects.all(),
required=False
)
description = forms.CharField(
max_length=200,
required=False
)
class Meta:
nullable_fields = ['parent', 'description']
class ContactRoleBulkEditForm(BootstrapMixin, CustomFieldModelBulkEditForm):
pk = forms.ModelMultipleChoiceField(
queryset=ContactRole.objects.all(),
widget=forms.MultipleHiddenInput
)
description = forms.CharField(
max_length=200,
required=False
)
class Meta:
nullable_fields = ['description']
class ContactBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEditForm):
pk = forms.ModelMultipleChoiceField(
queryset=Contact.objects.all(),
widget=forms.MultipleHiddenInput()
)
group = DynamicModelChoiceField(
queryset=ContactGroup.objects.all(),
required=False
)
class Meta:
nullable_fields = ['group', 'title', 'phone', 'email', 'address', 'comments']

View File

@@ -1,13 +1,20 @@
from extras.forms import CustomFieldModelCSVForm
from tenancy.models import Tenant, TenantGroup
from tenancy.models import *
from utilities.forms import CSVModelChoiceField, SlugField
__all__ = (
'ContactCSVForm',
'ContactGroupCSVForm',
'ContactRoleCSVForm',
'TenantCSVForm',
'TenantGroupCSVForm',
)
#
# Tenants
#
class TenantGroupCSVForm(CustomFieldModelCSVForm):
parent = CSVModelChoiceField(
queryset=TenantGroup.objects.all(),
@@ -34,3 +41,43 @@ class TenantCSVForm(CustomFieldModelCSVForm):
class Meta:
model = Tenant
fields = ('name', 'slug', 'group', 'description', 'comments')
#
# Contacts
#
class ContactGroupCSVForm(CustomFieldModelCSVForm):
parent = CSVModelChoiceField(
queryset=ContactGroup.objects.all(),
required=False,
to_field_name='name',
help_text='Parent group'
)
slug = SlugField()
class Meta:
model = ContactGroup
fields = ('name', 'slug', 'parent', 'description')
class ContactRoleCSVForm(CustomFieldModelCSVForm):
slug = SlugField()
class Meta:
model = ContactRole
fields = ('name', 'slug', 'description')
class ContactCSVForm(CustomFieldModelCSVForm):
slug = SlugField()
group = CSVModelChoiceField(
queryset=ContactGroup.objects.all(),
required=False,
to_field_name='name',
help_text='Assigned group'
)
class Meta:
model = Contact
fields = ('name', 'title', 'phone', 'email', 'address', 'group', 'comments')

View File

@@ -2,9 +2,21 @@ from django import forms
from django.utils.translation import gettext as _
from extras.forms import CustomFieldModelFilterForm
from tenancy.models import Tenant, TenantGroup
from tenancy.models import *
from utilities.forms import BootstrapMixin, DynamicModelMultipleChoiceField, TagFilterField
__all__ = (
'ContactFilterForm',
'ContactGroupFilterForm',
'ContactRoleFilterForm',
'TenantFilterForm',
'TenantGroupFilterForm',
)
#
# Tenants
#
class TenantGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = TenantGroup
@@ -40,3 +52,55 @@ class TenantFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
fetch_trigger='open'
)
tag = TagFilterField(model)
#
# Contacts
#
class ContactGroupFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = ContactGroup
q = forms.CharField(
required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
parent_id = DynamicModelMultipleChoiceField(
queryset=ContactGroup.objects.all(),
required=False,
label=_('Parent group'),
fetch_trigger='open'
)
class ContactRoleFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = ContactRole
field_groups = [
['q'],
]
q = forms.CharField(
required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
class ContactFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
model = Contact
field_groups = (
('q', 'tag'),
('group_id',),
)
q = forms.CharField(
required=False,
widget=forms.TextInput(attrs={'placeholder': _('All Fields')}),
label=_('Search')
)
group_id = DynamicModelMultipleChoiceField(
queryset=ContactGroup.objects.all(),
required=False,
null_option='None',
label=_('Group'),
fetch_trigger='open'
)
tag = TagFilterField(model)

View File

@@ -1,16 +1,23 @@
from extras.forms import CustomFieldModelForm
from extras.models import Tag
from tenancy.models import Tenant, TenantGroup
from tenancy.models import *
from utilities.forms import (
BootstrapMixin, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField,
BootstrapMixin, CommentField, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, SmallTextarea,
)
__all__ = (
'ContactForm',
'ContactGroupForm',
'ContactRoleForm',
'TenantForm',
'TenantGroupForm',
)
#
# Tenants
#
class TenantGroupForm(BootstrapMixin, CustomFieldModelForm):
parent = DynamicModelChoiceField(
queryset=TenantGroup.objects.all(),
@@ -45,3 +52,51 @@ class TenantForm(BootstrapMixin, CustomFieldModelForm):
fieldsets = (
('Tenant', ('name', 'slug', 'group', 'description', 'tags')),
)
#
# Contacts
#
class ContactGroupForm(BootstrapMixin, CustomFieldModelForm):
parent = DynamicModelChoiceField(
queryset=ContactGroup.objects.all(),
required=False
)
slug = SlugField()
class Meta:
model = ContactGroup
fields = ['parent', 'name', 'slug', 'description']
class ContactRoleForm(BootstrapMixin, CustomFieldModelForm):
slug = SlugField()
class Meta:
model = ContactRole
fields = ['name', 'slug', 'description']
class ContactForm(BootstrapMixin, CustomFieldModelForm):
group = DynamicModelChoiceField(
queryset=ContactGroup.objects.all(),
required=False
)
comments = CommentField()
tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(),
required=False
)
class Meta:
model = Contact
fields = (
'group', 'name', 'title', 'phone', 'email', 'address', 'comments', 'tags',
)
fieldsets = (
('Contact', ('group', 'name', 'title', 'phone', 'email', 'address', 'tags')),
)
widgets = {
'address': SmallTextarea(attrs={'rows': 3}),
}