Commit d06e16d9 by Davorin Sego

Initialize signal handler, so we can remove getattr

parent a7f2b025
......@@ -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):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment