mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Cleanup and documentation for #1344
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
from django.contrib.auth.models import ContentType
|
||||
from rest_framework import serializers
|
||||
|
||||
from netbox.api import ContentTypeField
|
||||
from netbox.api import ChoiceField, ContentTypeField
|
||||
from netbox.api.serializers import NestedGroupModelSerializer, OrganizationalModelSerializer, PrimaryModelSerializer
|
||||
from tenancy.choices import ContactPriorityChoices
|
||||
from tenancy.models import *
|
||||
from .nested_serializers import *
|
||||
|
||||
@@ -93,9 +94,11 @@ class ContactAssignmentSerializer(PrimaryModelSerializer):
|
||||
)
|
||||
contact = NestedContactSerializer()
|
||||
role = NestedContactRoleSerializer(required=False, allow_null=True)
|
||||
priority = ChoiceField(choices=ContactPriorityChoices, required=False)
|
||||
|
||||
class Meta:
|
||||
model = ContactAssignment
|
||||
fields = [
|
||||
'id', 'url', 'display', 'content_type', 'object_id', 'contact', 'role', 'created', 'last_updated',
|
||||
'id', 'url', 'display', 'content_type', 'object_id', 'contact', 'role', 'priority', 'created',
|
||||
'last_updated',
|
||||
]
|
||||
|
@@ -2,8 +2,8 @@ import django_filters
|
||||
from django.db.models import Q
|
||||
|
||||
from extras.filters import TagFilter
|
||||
from netbox.filtersets import OrganizationalModelFilterSet, PrimaryModelFilterSet
|
||||
from utilities.filters import TreeNodeMultipleChoiceFilter
|
||||
from netbox.filtersets import ChangeLoggedModelFilterSet, OrganizationalModelFilterSet, PrimaryModelFilterSet
|
||||
from utilities.filters import ContentTypeFilter, TreeNodeMultipleChoiceFilter
|
||||
from .models import *
|
||||
|
||||
|
||||
@@ -168,7 +168,8 @@ class ContactFilterSet(PrimaryModelFilterSet):
|
||||
)
|
||||
|
||||
|
||||
class ContactAssignmentFilterSet(OrganizationalModelFilterSet):
|
||||
class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet):
|
||||
content_type = ContentTypeFilter()
|
||||
contact_id = django_filters.ModelMultipleChoiceFilter(
|
||||
queryset=Contact.objects.all(),
|
||||
label='Contact (ID)',
|
||||
@@ -186,4 +187,4 @@ class ContactAssignmentFilterSet(OrganizationalModelFilterSet):
|
||||
|
||||
class Meta:
|
||||
model = ContactAssignment
|
||||
fields = ['id', 'priority']
|
||||
fields = ['id', 'content_type_id', 'priority']
|
||||
|
@@ -96,6 +96,21 @@ class ContactBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBul
|
||||
queryset=ContactGroup.objects.all(),
|
||||
required=False
|
||||
)
|
||||
title = forms.CharField(
|
||||
max_length=100,
|
||||
required=False
|
||||
)
|
||||
phone = forms.CharField(
|
||||
max_length=50,
|
||||
required=False
|
||||
)
|
||||
email = forms.EmailField(
|
||||
required=False
|
||||
)
|
||||
address = forms.CharField(
|
||||
max_length=200,
|
||||
required=False
|
||||
)
|
||||
|
||||
class Meta:
|
||||
nullable_fields = ['group', 'title', 'phone', 'email', 'address', 'comments']
|
||||
|
@@ -109,10 +109,16 @@ class ContactForm(BootstrapMixin, CustomFieldModelForm):
|
||||
class ContactAssignmentForm(BootstrapMixin, forms.ModelForm):
|
||||
group = DynamicModelChoiceField(
|
||||
queryset=ContactGroup.objects.all(),
|
||||
required=False
|
||||
required=False,
|
||||
initial_params={
|
||||
'contacts': '$contact'
|
||||
}
|
||||
)
|
||||
contact = DynamicModelChoiceField(
|
||||
queryset=Contact.objects.all()
|
||||
queryset=Contact.objects.all(),
|
||||
query_params={
|
||||
'group_id': '$group'
|
||||
}
|
||||
)
|
||||
role = DynamicModelChoiceField(
|
||||
queryset=ContactRole.objects.all()
|
||||
|
@@ -259,3 +259,6 @@ class ContactAssignment(ChangeLoggedModel):
|
||||
|
||||
class Meta:
|
||||
ordering = ('priority', 'contact')
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.contact} ({self.get_priority_display()})" if self.priority else self.name
|
||||
|
Reference in New Issue
Block a user