17178 review changes

This commit is contained in:
Arthur 2025-03-17 11:48:43 -07:00
parent a4eb86f8b6
commit 83793de408
5 changed files with 27 additions and 10 deletions

View File

@ -65,13 +65,13 @@ class ContactRoleFilterSet(OrganizationalModelFilterSet):
class ContactFilterSet(NetBoxModelFilterSet): class ContactFilterSet(NetBoxModelFilterSet):
contact_group_id = TreeNodeMultipleChoiceFilter( group_id = TreeNodeMultipleChoiceFilter(
queryset=ContactGroup.objects.all(), queryset=ContactGroup.objects.all(),
field_name='groups', field_name='groups',
lookup_expr='in', lookup_expr='in',
label=_('Contact group (ID)'), label=_('Contact group (ID)'),
) )
contact_group = TreeNodeMultipleChoiceFilter( group = TreeNodeMultipleChoiceFilter(
queryset=ContactGroup.objects.all(), queryset=ContactGroup.objects.all(),
field_name='groups', field_name='groups',
to_field_name='slug', to_field_name='slug',

View File

@ -90,8 +90,13 @@ class ContactRoleBulkEditForm(NetBoxModelBulkEditForm):
class ContactBulkEditForm(NetBoxModelBulkEditForm): class ContactBulkEditForm(NetBoxModelBulkEditForm):
groups = DynamicModelMultipleChoiceField( add_groups = DynamicModelMultipleChoiceField(
label=_('Groups'), label=_('Add groups'),
queryset=ContactGroup.objects.all(),
required=False
)
remove_groups = DynamicModelMultipleChoiceField(
label=_('Remove groups'),
queryset=ContactGroup.objects.all(), queryset=ContactGroup.objects.all(),
required=False required=False
) )
@ -127,9 +132,11 @@ class ContactBulkEditForm(NetBoxModelBulkEditForm):
model = Contact model = Contact
fieldsets = ( fieldsets = (
FieldSet('groups', 'title', 'phone', 'email', 'address', 'link', 'description'), FieldSet('add_groups', 'remove_groups', 'title', 'phone', 'email', 'address', 'link', 'description'),
)
nullable_fields = (
'add_groups', 'remove_groups', 'title', 'phone', 'email', 'address', 'link', 'description', 'comments'
) )
nullable_fields = ('groups', 'title', 'phone', 'email', 'address', 'link', 'description', 'comments')
class ContactAssignmentBulkEditForm(NetBoxModelBulkEditForm): class ContactAssignmentBulkEditForm(NetBoxModelBulkEditForm):

View File

@ -71,11 +71,11 @@ class ContactRoleFilterForm(NetBoxModelFilterSetForm):
class ContactFilterForm(NetBoxModelFilterSetForm): class ContactFilterForm(NetBoxModelFilterSetForm):
model = Contact model = Contact
contact_group_id = DynamicModelMultipleChoiceField( group_id = DynamicModelMultipleChoiceField(
queryset=ContactGroup.objects.all(), queryset=ContactGroup.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
label=_('Group') label=_('Groups')
) )
tag = TagFilterField(model) tag = TagFilterField(model)

View File

@ -241,6 +241,7 @@ class ContactRoleTestCase(TestCase, ChangeLoggedFilterSetTests):
class ContactTestCase(TestCase, ChangeLoggedFilterSetTests): class ContactTestCase(TestCase, ChangeLoggedFilterSetTests):
queryset = Contact.objects.all() queryset = Contact.objects.all()
filterset = ContactFilterSet filterset = ContactFilterSet
ignore_fields = ('groups',)
@classmethod @classmethod
def setUpTestData(cls): def setUpTestData(cls):
@ -277,9 +278,9 @@ class ContactTestCase(TestCase, ChangeLoggedFilterSetTests):
def test_group(self): def test_group(self):
group = ContactGroup.objects.all()[:2] group = ContactGroup.objects.all()[:2]
params = {'contact_group_id': [group[0].pk, group[1].pk]} params = {'group_id': [group[0].pk, group[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'contact_group': [group[0].slug, group[1].slug]} params = {'group': [group[0].slug, group[1].slug]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)

View File

@ -400,6 +400,15 @@ class ContactAssignmentBulkEditView(generic.BulkEditView):
table = tables.ContactAssignmentTable table = tables.ContactAssignmentTable
form = forms.ContactAssignmentBulkEditForm form = forms.ContactAssignmentBulkEditForm
def post_save_operations(self, form, obj):
super().post_save_operations(form, obj)
# Add/remove groups
if form.cleaned_data.get('add_groups', None):
obj.groups.add(*form.cleaned_data['add_groups'])
if form.cleaned_data.get('remove_groups', None):
obj.groups.remove(*form.cleaned_data['remove_groups'])
@register_model_view(ContactAssignment, 'bulk_delete', path='delete', detail=False) @register_model_view(ContactAssignment, 'bulk_delete', path='delete', detail=False)
class ContactAssignmentBulkDeleteView(generic.BulkDeleteView): class ContactAssignmentBulkDeleteView(generic.BulkDeleteView):