diff --git a/common/lib/xmodule/xmodule/modulestore/__init__.py b/common/lib/xmodule/xmodule/modulestore/__init__.py index 8eb64ad2e4..fc9a1daaa6 100644 --- a/common/lib/xmodule/xmodule/modulestore/__init__.py +++ b/common/lib/xmodule/xmodule/modulestore/__init__.py @@ -154,17 +154,6 @@ class ActiveBulkThread(threading.local): self.records = defaultdict(bulk_ops_record_type) -class NullSignalHandler(object): - """ - A null handler that does nothing - """ - def send(self, *args, **kwargs): - """ - No-op - """ - pass - - class BulkOperationsMixin(object): """ This implements the :meth:`bulk_operations` modulestore semantics which handles nested invocations @@ -180,23 +169,8 @@ class BulkOperationsMixin(object): def __init__(self, *args, **kwargs): super(BulkOperationsMixin, self).__init__(*args, **kwargs) self._active_bulk_ops = ActiveBulkThread(self._bulk_ops_record_type) - self._signal_handler = None + self.signal_handler = None - @property - def signal_handler(self): - """ - Return a signal handler, defaults to a null handler that does nothing. - """ - if not self._signal_handler: - self._signal_handler = NullSignalHandler() - return self._signal_handler - - @signal_handler.setter - def signal_handler(self, value): - """ - Set the signal handler - """ - self._signal_handler = value @contextmanager def bulk_operations(self, course_id, emit_signals=True): @@ -324,7 +298,7 @@ class BulkOperationsMixin(object): """ Sends out the signal that items have been published from within this course. """ - if bulk_ops_record.has_publish_item: + if self.signal_handler and bulk_ops_record.has_publish_item: self.signal_handler.send("course_published", course_key=course_id) bulk_ops_record.has_publish_item = False @@ -332,7 +306,7 @@ class BulkOperationsMixin(object): """ Sends out the signal that library have been updated. """ - if bulk_ops_record.has_library_updated_item: + if self.signal_handler and bulk_ops_record.has_library_updated_item: self.signal_handler.send("library_updated", library_key=library_id) bulk_ops_record.has_library_updated_item = False @@ -1364,11 +1338,12 @@ class ModuleStoreWriteBase(ModuleStoreReadBase, ModuleStoreWrite): Arguments: course_key - course_key to which the signal applies """ - bulk_record = self._get_bulk_ops_record(course_key) if isinstance(self, BulkOperationsMixin) else None - if bulk_record and bulk_record.active: - bulk_record.has_publish_item = True - else: - self.signal_handler.send("course_published", course_key=course_key) + if self.signal_handler: + bulk_record = self._get_bulk_ops_record(course_key) if isinstance(self, BulkOperationsMixin) else None + if bulk_record and bulk_record.active: + bulk_record.has_publish_item = True + else: + self.signal_handler.send("course_published", course_key=course_key) def _flag_library_updated_event(self, library_key): """ @@ -1379,17 +1354,19 @@ class ModuleStoreWriteBase(ModuleStoreReadBase, ModuleStoreWrite): Arguments: library_key - library_key to which the signal applies """ - bulk_record = self._get_bulk_ops_record(library_key) if isinstance(self, BulkOperationsMixin) else None - if bulk_record and bulk_record.active: - bulk_record.has_library_updated_item = True - else: - self.signal_handler.send("library_updated", library_key=library_key) + if self.signal_handler: + bulk_record = self._get_bulk_ops_record(library_key) if isinstance(self, BulkOperationsMixin) else None + if bulk_record and bulk_record.active: + bulk_record.has_library_updated_item = True + else: + self.signal_handler.send("library_updated", library_key=library_key) def _emit_course_deleted_signal(self, course_key): """ Helper method used to emit the course_deleted signal. """ - self.signal_handler.send("course_deleted", course_key=course_key) + if self.signal_handler: + self.signal_handler.send("course_deleted", course_key=course_key) def only_xmodules(identifier, entry_points):