Skip to content

Commit

Permalink
When page deleted, delete its shortcodes. Fix #4.
Browse files Browse the repository at this point in the history
  • Loading branch information
ryneeverett committed Sep 8, 2016
1 parent 220dc3f commit db13d06
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
8 changes: 7 additions & 1 deletion shortcodes/signals.py
@@ -1,4 +1,4 @@
from django.db.models.signals import pre_save
from django.db.models.signals import pre_save, pre_delete

from mezzanine.core.models import RichText

Expand Down Expand Up @@ -54,5 +54,11 @@ def on_save(sender, **kwargs):
_delete_tags(old_tags.difference(tags))


def on_delete(sender, **kwargs):
# Delete all associated shortcode model instances.
_delete_tags(ShortcodeSoup(kwargs['instance'].content).find_shortcodes())


for subclass in _get_subclasses(RichText):
pre_save.connect(on_save, subclass)
pre_delete.connect(on_delete, subclass)
11 changes: 11 additions & 0 deletions test/test_browser.py
Expand Up @@ -344,6 +344,17 @@ def test_remove_after_saving(self):
self.jQueryContent(".find('body').empty().append('blah')")
self.savePage()

def test_remove_after_deleting(self):
"""
When a page is deleted, all associated shortcodes are deleted too.
"""
self.insertFeaturefulButton()
self.savePage()

with self.assertDeletesInstance(FeaturefulButton):
self.browser.find_by_text('Delete').click()
self.browser.find_by_value("Yes, I'm sure").click()

@unittest.skipIf(WEBDRIVER == 'phantomjs', "Can't open dialog.")
def test_icon(self):
self.browser.execute_script("""\
Expand Down

0 comments on commit db13d06

Please sign in to comment.