Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
a2dbd403
Commit
a2dbd403
authored
Jul 29, 2015
by
Davorin Sego
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add a null signal handler to BulkOperationMixin, remove conditionals
parent
bee837be
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
15 deletions
+35
-15
common/lib/xmodule/xmodule/modulestore/__init__.py
+35
-15
No files found.
common/lib/xmodule/xmodule/modulestore/__init__.py
View file @
a2dbd403
...
...
@@ -154,6 +154,17 @@ 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
...
...
@@ -169,6 +180,23 @@ 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
@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
):
...
...
@@ -296,18 +324,16 @@ class BulkOperationsMixin(object):
"""
Sends out the signal that items have been published from within this course.
"""
signal_handler
=
getattr
(
self
,
'signal_handler'
,
None
)
if
signal_handler
and
bulk_ops_record
.
has_publish_item
:
signal_handler
.
send
(
"course_published"
,
course_key
=
course_id
)
if
bulk_ops_record
.
has_publish_item
:
self
.
signal_handler
.
send
(
"course_published"
,
course_key
=
course_id
)
bulk_ops_record
.
has_publish_item
=
False
def
send_bulk_library_updated_signal
(
self
,
bulk_ops_record
,
library_id
):
"""
Sends out the signal that library have been updated.
"""
signal_handler
=
getattr
(
self
,
'signal_handler'
,
None
)
if
signal_handler
and
bulk_ops_record
.
has_library_updated_item
:
signal_handler
.
send
(
"library_updated"
,
library_key
=
library_id
)
if
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
...
...
@@ -1338,13 +1364,11 @@ class ModuleStoreWriteBase(ModuleStoreReadBase, ModuleStoreWrite):
Arguments:
course_key - course_key to which the signal applies
"""
signal_handler
=
getattr
(
self
,
'signal_handler'
,
None
)
if
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
:
signal_handler
.
send
(
"course_published"
,
course_key
=
course_key
)
self
.
signal_handler
.
send
(
"course_published"
,
course_key
=
course_key
)
def
_flag_library_updated_event
(
self
,
library_key
):
"""
...
...
@@ -1355,21 +1379,17 @@ class ModuleStoreWriteBase(ModuleStoreReadBase, ModuleStoreWrite):
Arguments:
library_key - library_key to which the signal applies
"""
signal_handler
=
getattr
(
self
,
'signal_handler'
,
None
)
if
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
:
signal_handler
.
send
(
"library_updated"
,
library_key
=
library_key
)
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.
"""
signal_handler
=
getattr
(
self
,
'signal_handler'
,
None
)
if
signal_handler
:
signal_handler
.
send
(
"course_deleted"
,
course_key
=
course_key
)
self
.
signal_handler
.
send
(
"course_deleted"
,
course_key
=
course_key
)
def
only_xmodules
(
identifier
,
entry_points
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment