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
e4b39c5c
Commit
e4b39c5c
authored
Nov 04, 2016
by
Adam Palay
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
only pass lists of text as iterable neo4j values
parent
d59ab18b
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
9 additions
and
27 deletions
+9
-27
openedx/core/djangoapps/coursegraph/management/commands/dump_to_neo4j.py
+3
-9
openedx/core/djangoapps/coursegraph/management/commands/tests/test_dump_to_neo4j.py
+6
-18
No files found.
openedx/core/djangoapps/coursegraph/management/commands/dump_to_neo4j.py
View file @
e4b39c5c
...
...
@@ -27,7 +27,6 @@ log = logging.getLogger(__name__)
bolt_log
=
logging
.
getLogger
(
'neo4j.bolt'
)
# pylint: disable=invalid-name
bolt_log
.
setLevel
(
logging
.
ERROR
)
ITERABLE_NEO4J_TYPES
=
(
tuple
,
list
,
set
,
frozenset
)
PRIMITIVE_NEO4J_TYPES
=
(
integer
,
string
,
neo4j_unicode
,
float
,
bool
)
COMMAND_LAST_RUN_CACHE
=
CommandLastRunCache
()
...
...
@@ -140,16 +139,11 @@ class ModuleStoreSerializer(object):
value: the value of an xblock's field
Returns: either the value, a text version of the value, or, if the
value is
iterable, the value with each element being converted to text
value is
a list, a list where each element is converted to text.
"""
coerced_value
=
value
if
isinstance
(
value
,
ITERABLE_NEO4J_TYPES
):
coerced_value
=
[]
for
element
in
value
:
coerced_value
.
append
(
six
.
text_type
(
element
))
# convert coerced_value back to its original type
coerced_value
=
type
(
value
)(
coerced_value
)
if
isinstance
(
value
,
list
):
coerced_value
=
[
six
.
text_type
(
element
)
for
element
in
coerced_value
]
# if it's not one of the types that neo4j accepts,
# just convert it to text
...
...
openedx/core/djangoapps/coursegraph/management/commands/tests/test_dump_to_neo4j.py
View file @
e4b39c5c
...
...
@@ -15,7 +15,6 @@ from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
from
openedx.core.djangoapps.coursegraph.management.commands.dump_to_neo4j
import
(
ModuleStoreSerializer
,
ITERABLE_NEO4J_TYPES
,
)
from
openedx.core.djangoapps.coursegraph.signals
import
_listen_for_course_publish
...
...
@@ -131,21 +130,6 @@ class TestModuleStoreSerializer(TestDumpToNeo4jCommandBase):
self
.
assertEqual
(
len
(
nodes
),
9
)
self
.
assertEqual
(
len
(
relationships
),
7
)
@ddt.data
(
*
ITERABLE_NEO4J_TYPES
)
def
test_coerce_types_iterable
(
self
,
iterable_type
):
"""
Tests the coerce_types helper method for iterable types
"""
example_iterable
=
iterable_type
([
object
,
object
,
object
])
# each element in the iterable is not unicode:
self
.
assertFalse
(
any
(
isinstance
(
tab
,
six
.
text_type
)
for
tab
in
example_iterable
))
# but after they are coerced, they are:
coerced
=
ModuleStoreSerializer
()
.
coerce_types
(
example_iterable
)
self
.
assertTrue
(
all
(
isinstance
(
tab
,
six
.
text_type
)
for
tab
in
coerced
))
# finally, make sure we haven't changed the type:
self
.
assertEqual
(
type
(
coerced
),
iterable_type
)
@ddt.data
(
(
1
,
1
),
(
object
,
"<type 'object'>"
),
...
...
@@ -154,11 +138,15 @@ class TestModuleStoreSerializer(TestDumpToNeo4jCommandBase):
(
b
"plain string"
,
b
"plain string"
),
(
True
,
True
),
(
None
,
"None"
),
((
1
,),
"(1,)"
),
# list of elements should be coerced into a list of the
# string representations of those elements
([
object
,
object
],
[
"<type 'object'>"
,
"<type 'object'>"
])
)
@ddt.unpack
def
test_coerce_types
_base
(
self
,
original_value
,
coerced_expected
):
def
test_coerce_types
(
self
,
original_value
,
coerced_expected
):
"""
Tests the coerce_types helper
for the neo4j base types
Tests the coerce_types helper
"""
coerced_value
=
self
.
mss
.
coerce_types
(
original_value
)
self
.
assertEqual
(
coerced_value
,
coerced_expected
)
...
...
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