浏览代码

Fix issues with the ContactAssignmentListView

kkthxbye-code 3 年之前
父节点
当前提交
c73829fe92
共有 3 个文件被更改,包括 20 次插入0 次删除
  1. 12 0
      netbox/tenancy/filtersets.py
  2. 1 0
      netbox/tenancy/urls.py
  3. 7 0
      netbox/tenancy/views.py

+ 12 - 0
netbox/tenancy/filtersets.py

@@ -81,6 +81,10 @@ class ContactFilterSet(NetBoxModelFilterSet):
 
 
 class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet):
+    q = django_filters.CharFilter(
+        method='search',
+        label=_('Search'),
+    )
     content_type = ContentTypeFilter()
     contact_id = django_filters.ModelMultipleChoiceFilter(
         queryset=Contact.objects.all(),
@@ -101,6 +105,14 @@ class ContactAssignmentFilterSet(ChangeLoggedModelFilterSet):
         model = ContactAssignment
         fields = ['id', 'content_type_id', 'object_id', 'priority']
 
+    def search(self, queryset, name, value):
+        if not value.strip():
+            return queryset
+        return queryset.filter(
+            Q(contact__name__icontains=value) |
+            Q(role__name__icontains=value)
+        )
+
 
 class ContactModelFilterSet(django_filters.FilterSet):
     contact = django_filters.ModelMultipleChoiceFilter(

+ 1 - 0
netbox/tenancy/urls.py

@@ -49,6 +49,7 @@ urlpatterns = [
     # Contact assignments
     path('contact-assignments/', views.ContactAssignmentListView.as_view(), name='contactassignment_list'),
     path('contact-assignments/add/', views.ContactAssignmentEditView.as_view(), name='contactassignment_add'),
+    path('contact-assignments/delete/', views.ContactAssignmentBulkDeleteView.as_view(), name='contactassignment_bulk_delete'),
     path('contact-assignments/<int:pk>/', include(get_model_urls('tenancy', 'contactassignment'))),
 
 ]

+ 7 - 0
netbox/tenancy/views.py

@@ -354,6 +354,7 @@ class ContactAssignmentListView(generic.ObjectListView):
     filterset = filtersets.ContactAssignmentFilterSet
     filterset_form = forms.ContactAssignmentFilterForm
     table = tables.ContactAssignmentTable
+    actions = ('export', 'bulk_delete')
 
 
 @register_model_view(ContactAssignment, 'edit')
@@ -376,6 +377,12 @@ class ContactAssignmentEditView(generic.ObjectEditView):
         }
 
 
+class ContactAssignmentBulkDeleteView(generic.BulkDeleteView):
+    queryset = ContactAssignment.objects.all()
+    filterset = filtersets.ContactAssignmentFilterSet
+    table = tables.ContactAssignmentTable
+
+
 @register_model_view(ContactAssignment, 'delete')
 class ContactAssignmentDeleteView(generic.ObjectDeleteView):
     queryset = ContactAssignment.objects.all()