Skip to content

Commit 72271aa

Browse files
author
Marius Schulze
committed
fix: make sure .delete() is also called when batch deleting in admin
1 parent c5e6600 commit 72271aa

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/djangocms_snippet/admin.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,3 +186,12 @@ def has_delete_permission(self, request, obj=None):
186186
get_model_permission_codename(self.model, "add"),
187187
)
188188
return False
189+
190+
def delete_queryset(self, request, queryset):
191+
"""
192+
Override delete_queryset to ensure that the snippet grouper is deleted
193+
when the last snippet in a group is deleted.
194+
"""
195+
for obj in queryset:
196+
obj.delete()
197+
return queryset

tests/test_models.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,23 @@ def setUp(self):
2121
self.snippet_grouper = self.snippet.snippet_grouper
2222
SnippetPluginFactory(snippet_grouper=self.snippet_grouper, language=["en"])
2323

24+
def test_snippet_grouper_stays_when_snippet_deleted(self):
25+
"""
26+
Test that the snippet grouper stays when a snippet is deleted.
27+
This is to ensure that the grouper is not deleted when there are
28+
other snippets associated with it.
29+
"""
30+
temp_snippet = Snippet.objects.create(
31+
name="Temporary Snippet",
32+
snippet_grouper=self.snippet_grouper,
33+
html="<p>temporary</p>",
34+
slug="temporary_snippet",
35+
)
36+
self.assertTrue(Snippet.admin_manager.filter(pk=self.snippet.pk).exists())
37+
self.assertTrue(SnippetGrouper.objects.filter(pk=self.snippet_grouper.pk).exists())
38+
temp_snippet.delete()
39+
self.assertTrue(SnippetGrouper.objects.filter(pk=self.snippet_grouper.pk).exists())
40+
2441
def test_snippet_grouper_deleted_with_last_snippet(self):
2542
grouper = SnippetGrouper.objects.create()
2643
snippet = Snippet.objects.create(

0 commit comments

Comments
 (0)