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
0e03834d
Commit
0e03834d
authored
Jan 09, 2015
by
Dennis Jen
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #6524 from edx/hotfix/2014-01-09
Handle children pointers to non-existent children in has_changes
parents
592665cc
a9697556
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
24 additions
and
14 deletions
+24
-14
common/lib/xmodule/xmodule/modulestore/mongo/draft.py
+3
-0
common/lib/xmodule/xmodule/modulestore/split_mongo/split_draft.py
+3
-1
common/lib/xmodule/xmodule/modulestore/tests/test_mixed_modulestore.py
+18
-13
No files found.
common/lib/xmodule/xmodule/modulestore/mongo/draft.py
View file @
0e03834d
...
@@ -624,6 +624,9 @@ class DraftModuleStore(MongoModuleStore):
...
@@ -624,6 +624,9 @@ class DraftModuleStore(MongoModuleStore):
return
True
return
True
# if this block doesn't have changes, then check its children
# if this block doesn't have changes, then check its children
elif
xblock
.
has_children
:
elif
xblock
.
has_children
:
# fix a bug where dangling pointers should imply a change
if
len
(
xblock
.
children
)
>
len
(
xblock
.
get_children
()):
return
True
return
any
([
self
.
has_changes
(
child
)
for
child
in
xblock
.
get_children
()])
return
any
([
self
.
has_changes
(
child
)
for
child
in
xblock
.
get_children
()])
# otherwise there are no changes
# otherwise there are no changes
else
:
else
:
...
...
common/lib/xmodule/xmodule/modulestore/split_mongo/split_draft.py
View file @
0e03834d
...
@@ -268,8 +268,10 @@ class DraftVersioningModuleStore(SplitMongoModuleStore, ModuleStoreDraftAndPubli
...
@@ -268,8 +268,10 @@ class DraftVersioningModuleStore(SplitMongoModuleStore, ModuleStoreDraftAndPubli
def
has_changes_subtree
(
block_key
):
def
has_changes_subtree
(
block_key
):
draft_block
=
get_block
(
draft_course
,
block_key
)
draft_block
=
get_block
(
draft_course
,
block_key
)
if
draft_block
is
None
:
# temporary fix for bad pointers TNL-1141
return
True
published_block
=
get_block
(
published_course
,
block_key
)
published_block
=
get_block
(
published_course
,
block_key
)
if
not
published_block
:
if
published_block
is
None
:
return
True
return
True
# check if the draft has changed since the published was created
# check if the draft has changed since the published was created
...
...
common/lib/xmodule/xmodule/modulestore/tests/test_mixed_modulestore.py
View file @
0e03834d
...
@@ -663,25 +663,30 @@ class TestMixedModuleStore(CourseComparisonTest):
...
@@ -663,25 +663,30 @@ class TestMixedModuleStore(CourseComparisonTest):
self
.
assertTrue
(
self
.
_has_changes
(
parent
.
location
))
self
.
assertTrue
(
self
.
_has_changes
(
parent
.
location
))
self
.
assertTrue
(
self
.
_has_changes
(
child
.
location
))
self
.
assertTrue
(
self
.
_has_changes
(
child
.
location
))
@ddt.data
(
'draft'
,
'split'
)
@ddt.data
(
*
itertools
.
product
(
def
test_has_changes_missing_child
(
self
,
default_ms
):
(
'draft'
,
'split'
),
(
ModuleStoreEnum
.
Branch
.
draft_preferred
,
ModuleStoreEnum
.
Branch
.
published_only
)
))
@ddt.unpack
def
test_has_changes_missing_child
(
self
,
default_ms
,
default_branch
):
"""
"""
Tests that has_changes() does not throw an exception when a child doesn't exist.
Tests that has_changes() does not throw an exception when a child doesn't exist.
"""
"""
self
.
initdb
(
default_ms
)
self
.
initdb
(
default_ms
)
# Create the parent and point it to a fake child
with
self
.
store
.
branch_setting
(
default_branch
,
self
.
course
.
id
):
parent
=
self
.
store
.
create_item
(
# Create the parent and point it to a fake child
self
.
user_id
,
parent
=
self
.
store
.
create_item
(
self
.
course
.
id
,
self
.
user_id
,
'vertical'
,
self
.
course
.
id
,
block_id
=
'parent'
,
'vertical'
,
)
block_id
=
'parent'
,
parent
.
children
+=
[
self
.
course
.
id
.
make_usage_key
(
'vertical'
,
'does_not_exist'
)]
)
parent
=
self
.
store
.
update_item
(
parent
,
self
.
user_id
)
parent
.
children
+=
[
self
.
course
.
id
.
make_usage_key
(
'vertical'
,
'does_not_exist'
)]
parent
=
self
.
store
.
update_item
(
parent
,
self
.
user_id
)
# Check the parent for changes should return True and not throw an exception
# Check the parent for changes should return True and not throw an exception
self
.
assertTrue
(
self
.
store
.
has_changes
(
parent
))
self
.
assertTrue
(
self
.
store
.
has_changes
(
parent
))
# Draft
# Draft
# Find: find parents (definition.children query), get parent, get course (fill in run?),
# Find: find parents (definition.children query), get parent, get course (fill in run?),
...
...
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