Skip to content

Commit f5c7a15

Browse files
author
Marius Schulze
committed
fix: delete snippet before snippet group
1 parent 5b786bc commit f5c7a15

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

src/djangocms_snippet/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,11 @@ def delete(self, *args, **kwargs):
116116
# check if this snippet was the only one connected to it
117117
# and if so, delete the grouper instance as well
118118

119+
deleted = super().delete(*args, **kwargs)
119120
if not Snippet.admin_manager.filter(snippet_grouper=self.snippet_grouper).exclude(id=self.id).exists():
120121
self.snippet_grouper.delete()
121122

122-
return super().delete(*args, **kwargs)
123+
return deleted
123124

124125

125126
# Plugin model - just a pointer to Snippet

tests/test_models.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
from cms.test_utils.testcases import CMSTestCase
2-
3-
from djangocms_snippet.models import (
4-
SEARCH_ENABLED,
5-
Snippet,
6-
SnippetGrouper,
7-
SnippetPtr,
8-
)
9-
2+
from djangocms_snippet.models import SEARCH_ENABLED, Snippet, SnippetGrouper, SnippetPtr
103
from .utils.factories import SnippetPluginFactory, SnippetWithVersionFactory
114

125

@@ -21,6 +14,21 @@ def setUp(self):
2114
self.snippet_grouper = self.snippet.snippet_grouper
2215
SnippetPluginFactory(snippet_grouper=self.snippet_grouper, language=["en"])
2316

17+
def test_snippet_grouper_deleted_with_last_snippet(self):
18+
grouper = SnippetGrouper.objects.create()
19+
snippet = Snippet.objects.create(
20+
name="Test Snippet",
21+
snippet_grouper=grouper,
22+
html="<p>test</p>",
23+
template="",
24+
slug="test-snippet-2",
25+
site=self.snippet.site,
26+
)
27+
self.assertTrue(Snippet.objects.filter(pk=snippet.pk).exists())
28+
self.assertTrue(SnippetGrouper.objects.filter(pk=grouper.pk).exists())
29+
snippet.delete()
30+
self.assertFalse(SnippetGrouper.objects.filter(pk=grouper.pk).exists())
31+
2432
def test_settings(self):
2533
self.assertEqual(SEARCH_ENABLED, False)
2634

@@ -46,10 +54,3 @@ def test_snippet_ptr_instance(self):
4654

4755
# test strings
4856
self.assertEqual(instance.snippet_grouper.name, "test snippet")
49-
50-
def test_snippet_grouper_deletion(self):
51-
grouper = SnippetGrouper.objects.all()
52-
self.assertEqual(grouper.count(), 1)
53-
self.snippet.delete()
54-
grouper = SnippetGrouper.objects.all()
55-
self.assertEqual(grouper.count(), 0)

0 commit comments

Comments
 (0)