From 6d5f9e97b493a8d523e00a6076b3446dc0b8bbd5 Mon Sep 17 00:00:00 2001 From: Brandon Taylor Date: Mon, 9 Jul 2018 07:49:55 -0400 Subject: [PATCH] Added `after_sorting` method to SortableAdminBase class that can be defined on a model admin to be executed after sorting has occurred. --- adminsortable/admin.py | 7 +++++++ sample_project/samples/admin.py | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/adminsortable/admin.py b/adminsortable/admin.py index 10281a6..ea3fd8f 100644 --- a/adminsortable/admin.py +++ b/adminsortable/admin.py @@ -56,6 +56,11 @@ class SortableAdminBase(object): return super(SortableAdminBase, self).changelist_view(request, extra_context=extra_context) + # override this function in your SortableAdmin if you need to do something + # after sorting has occurred + def after_sorting(self): + pass + class SortableAdmin(SortableAdminBase, ModelAdmin): """ @@ -303,6 +308,8 @@ class SortableAdmin(SortableAdminBase, ModelAdmin): AttributeError, ValueError): pass + self.after_sorting() + return HttpResponse(json.dumps(response, ensure_ascii=False), content_type='application/json') diff --git a/sample_project/samples/admin.py b/sample_project/samples/admin.py index fb1acf1..993eae7 100644 --- a/sample_project/samples/admin.py +++ b/sample_project/samples/admin.py @@ -61,6 +61,9 @@ class NoteInline(SortableStackedInline): model = Note extra = 2 + def after_sorting(self): + print('I happened after sorting') + class GenericNoteInline(SortableGenericStackedInline): model = GenericNote @@ -83,9 +86,13 @@ class ProjectAdmin(SortableAdmin): NonSortableCreditInline, NonSortableNoteInline ] list_display = ['__str__', 'category'] + list_filter = ('category__title',) after_sorting_js_callback_name = 'afterSortCallback' sortable_change_list_template = 'adminsortable/custom_change_list.html' - sortable_change_form_template = "adminsortable/custom_change_form.html" + sortable_change_form_template = 'adminsortable/custom_change_form.html' + + def after_sorting(self): + print('I happened after sorting') admin.site.register(Project, ProjectAdmin)