mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-28 11:26:26 -06:00
Correct filter name in redirect after bulk edit
* Added modified_by_request filter to ChangeLoggedFilterSet
This commit is contained in:
parent
b022952d18
commit
bf7405fd28
@ -965,11 +965,13 @@ class ChangeLoggedFilterSetTestCase(TestCase):
|
|||||||
Site(name='Site 1', slug='site-1'),
|
Site(name='Site 1', slug='site-1'),
|
||||||
Site(name='Site 2', slug='site-2'),
|
Site(name='Site 2', slug='site-2'),
|
||||||
Site(name='Site 3', slug='site-3'),
|
Site(name='Site 3', slug='site-3'),
|
||||||
|
Site(name='Site 4', slug='site-4'),
|
||||||
)
|
)
|
||||||
Site.objects.bulk_create(sites)
|
Site.objects.bulk_create(sites)
|
||||||
|
|
||||||
# Simulate *creation* changelog records for two of the sites
|
# Simulate *creation* changelog records for two of the sites
|
||||||
request_id = uuid.uuid4()
|
request_id = uuid.uuid4()
|
||||||
|
cls.create_request_id = request_id
|
||||||
objectchanges = (
|
objectchanges = (
|
||||||
ObjectChange(
|
ObjectChange(
|
||||||
changed_object_type=content_type,
|
changed_object_type=content_type,
|
||||||
@ -988,6 +990,7 @@ class ChangeLoggedFilterSetTestCase(TestCase):
|
|||||||
|
|
||||||
# Simulate *update* changelog records for two of the sites
|
# Simulate *update* changelog records for two of the sites
|
||||||
request_id = uuid.uuid4()
|
request_id = uuid.uuid4()
|
||||||
|
cls.update_request_id = request_id
|
||||||
objectchanges = (
|
objectchanges = (
|
||||||
ObjectChange(
|
ObjectChange(
|
||||||
changed_object_type=content_type,
|
changed_object_type=content_type,
|
||||||
@ -1004,14 +1007,36 @@ class ChangeLoggedFilterSetTestCase(TestCase):
|
|||||||
)
|
)
|
||||||
ObjectChange.objects.bulk_create(objectchanges)
|
ObjectChange.objects.bulk_create(objectchanges)
|
||||||
|
|
||||||
|
# Simulate *create* and *update* changelog records for two of the sites
|
||||||
|
request_id = uuid.uuid4()
|
||||||
|
cls.create_update_request_id = request_id
|
||||||
|
objectchanges = (
|
||||||
|
ObjectChange(
|
||||||
|
changed_object_type=content_type,
|
||||||
|
changed_object_id=sites[2].pk,
|
||||||
|
action=ObjectChangeActionChoices.ACTION_CREATE,
|
||||||
|
request_id=request_id
|
||||||
|
),
|
||||||
|
ObjectChange(
|
||||||
|
changed_object_type=content_type,
|
||||||
|
changed_object_id=sites[3].pk,
|
||||||
|
action=ObjectChangeActionChoices.ACTION_UPDATE,
|
||||||
|
request_id=request_id
|
||||||
|
),
|
||||||
|
)
|
||||||
|
ObjectChange.objects.bulk_create(objectchanges)
|
||||||
|
|
||||||
def test_created_by_request(self):
|
def test_created_by_request(self):
|
||||||
request_id = ObjectChange.objects.filter(action=ObjectChangeActionChoices.ACTION_CREATE).first().request_id
|
params = {'created_by_request': self.create_request_id}
|
||||||
params = {'created_by_request': request_id}
|
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
self.assertEqual(self.queryset.count(), 3)
|
self.assertEqual(self.queryset.count(), 4)
|
||||||
|
|
||||||
def test_updated_by_request(self):
|
def test_updated_by_request(self):
|
||||||
request_id = ObjectChange.objects.filter(action=ObjectChangeActionChoices.ACTION_UPDATE).first().request_id
|
params = {'updated_by_request': self.update_request_id}
|
||||||
params = {'updated_by_request': request_id}
|
|
||||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
self.assertEqual(self.queryset.count(), 3)
|
self.assertEqual(self.queryset.count(), 4)
|
||||||
|
|
||||||
|
def test_modified_by_request(self):
|
||||||
|
params = {'modified_by_request': self.create_update_request_id}
|
||||||
|
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
|
||||||
|
self.assertEqual(self.queryset.count(), 4)
|
||||||
|
@ -246,18 +246,22 @@ class ChangeLoggedModelFilterSet(BaseFilterSet):
|
|||||||
updated_by_request = django_filters.UUIDFilter(
|
updated_by_request = django_filters.UUIDFilter(
|
||||||
method='filter_by_request'
|
method='filter_by_request'
|
||||||
)
|
)
|
||||||
|
modified_by_request = django_filters.UUIDFilter(
|
||||||
|
method='filter_by_request'
|
||||||
|
)
|
||||||
|
|
||||||
def filter_by_request(self, queryset, name, value):
|
def filter_by_request(self, queryset, name, value):
|
||||||
content_type = ContentType.objects.get_for_model(self.Meta.model)
|
content_type = ContentType.objects.get_for_model(self.Meta.model)
|
||||||
action = {
|
action = {
|
||||||
'created_by_request': ObjectChangeActionChoices.ACTION_CREATE,
|
'created_by_request': Q(action=ObjectChangeActionChoices.ACTION_CREATE),
|
||||||
'updated_by_request': ObjectChangeActionChoices.ACTION_UPDATE,
|
'updated_by_request': Q(action=ObjectChangeActionChoices.ACTION_UPDATE),
|
||||||
|
'modified_by_request': Q(action__in=[ObjectChangeActionChoices.ACTION_CREATE, ObjectChangeActionChoices.ACTION_UPDATE]),
|
||||||
}.get(name)
|
}.get(name)
|
||||||
request_id = value
|
request_id = value
|
||||||
pks = ObjectChange.objects.filter(
|
pks = ObjectChange.objects.filter(
|
||||||
|
action,
|
||||||
changed_object_type=content_type,
|
changed_object_type=content_type,
|
||||||
action=action,
|
request_id=request_id,
|
||||||
request_id=request_id
|
|
||||||
).values_list('changed_object_id', flat=True)
|
).values_list('changed_object_id', flat=True)
|
||||||
return queryset.filter(pk__in=pks)
|
return queryset.filter(pk__in=pks)
|
||||||
|
|
||||||
|
@ -458,7 +458,7 @@ class BulkImportView(GetReturnURLMixin, BaseMultiObjectView):
|
|||||||
messages.success(request, msg)
|
messages.success(request, msg)
|
||||||
|
|
||||||
view_name = get_viewname(model, action='list')
|
view_name = get_viewname(model, action='list')
|
||||||
results_url = f"{reverse(view_name)}?created_by_request={request.id}"
|
results_url = f"{reverse(view_name)}?modified_by_request={request.id}"
|
||||||
return redirect(results_url)
|
return redirect(results_url)
|
||||||
|
|
||||||
except (AbortTransaction, ValidationError):
|
except (AbortTransaction, ValidationError):
|
||||||
|
Loading…
Reference in New Issue
Block a user