Skip to content

Commit ce33d1d

Browse files
committed
feat: add pre_delete signal to handle deletion of objects related to children blocks
1 parent bd50ee9 commit ce33d1d

3 files changed

Lines changed: 18 additions & 1 deletion

File tree

xmodule/modulestore/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,3 +1425,10 @@ def _emit_item_deleted_signal(self, usage_key, user_id):
14251425
"""
14261426
if self.signal_handler:
14271427
self.signal_handler.send("item_deleted", usage_key=usage_key, user_id=user_id)
1428+
1429+
def _emit_pre_item_deleted_signal(self, usage_key, user_id):
1430+
"""
1431+
Helper method used to emit the item_deleted signal.
1432+
"""
1433+
if self.signal_handler:
1434+
self.signal_handler.send("pre_item_deleted", usage_key=usage_key, user_id=user_id)

xmodule/modulestore/django.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,11 +189,19 @@ def do_my_expensive_update(course_key):
189189
course_deleted = SwitchedSignal("course_deleted")
190190
library_updated = SwitchedSignal("library_updated")
191191
item_deleted = SwitchedSignal("item_deleted")
192+
pre_item_deleted = SwitchedSignal("pre_item_deleted")
192193

193194
_mapping = {
194195
signal.name: signal
195196
for signal
196-
in [pre_publish, course_published, course_deleted, library_updated, item_deleted]
197+
in [
198+
pre_publish,
199+
course_published,
200+
course_deleted,
201+
library_updated,
202+
item_deleted,
203+
pre_item_deleted,
204+
]
197205
}
198206

199207
def __init__(self, modulestore_class):

xmodule/modulestore/split_mongo/split.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2523,6 +2523,8 @@ def delete_item(self, usage_locator, user_id, force=False): # lint-amnesty, pyl
25232523
# The supplied UsageKey is of the wrong type, so it can't possibly be stored in this modulestore.
25242524
raise ItemNotFoundError(usage_locator)
25252525

2526+
self._emit_pre_item_deleted_signal(usage_locator, user_id)
2527+
25262528
with self.bulk_operations(usage_locator.course_key):
25272529
original_structure = self._lookup_course(usage_locator.course_key).structure
25282530
block_key = BlockKey.from_usage_key(usage_locator)

0 commit comments

Comments
 (0)