From 899f92f53a0bf6ccce8b06b161dee690b7bf93d9 Mon Sep 17 00:00:00 2001 From: blag Date: Sun, 24 May 2020 15:58:44 -0700 Subject: [PATCH] Return an HTTP 400 if the queryset size has changed since the page was loaded --- adminsortable/admin.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/adminsortable/admin.py b/adminsortable/admin.py index cd855c1..50ef603 100644 --- a/adminsortable/admin.py +++ b/adminsortable/admin.py @@ -314,6 +314,15 @@ class SortableAdmin(SortableAdminBase, ModelAdmin): objects_dict = {str(obj.pk): obj for obj in qs} objects_list = list(objects_dict.keys()) + if len(indexes) != len(objects_dict): + return HttpResponseBadRequest( + json.dumps({ + 'objects_sorted': False, + 'reason': _("An object has been added or removed " + "since the last load. Please refresh " + "the page and try reordering again."), + }, ensure_ascii=False), + content_type='application/json') order_field_name = klass._meta.ordering[0] if order_field_name.startswith('-'):