Commit 1223c8a0 by Don Mitchell

has_course was incorrect, fixed

parent 47234673
...@@ -615,10 +615,14 @@ class MongoModuleStore(ModuleStoreWriteBase): ...@@ -615,10 +615,14 @@ class MongoModuleStore(ModuleStoreWriteBase):
otherwise, do a case sensitive search otherwise, do a case sensitive search
""" """
assert(isinstance(course_key, SlashSeparatedCourseKey)) assert(isinstance(course_key, SlashSeparatedCourseKey))
course_query = self._course_key_to_son(course_key) location = course_key.make_usage_key('course', course_key.run)
if ignore_case: if ignore_case:
course_query = location.to_deprecated_son('_id.')
for key in course_query.iterkeys(): for key in course_query.iterkeys():
course_query[key] = re.compile(r"(?i)^{}$".format(course_query[key])) if isinstance(course_query[key], basestring):
course_query[key] = re.compile(r"(?i)^{}$".format(course_query[key]))
else:
course_query = {'_id': location.to_deprecated_son()}
return self.collection.find_one(course_query, fields={'_id': True}) is not None return self.collection.find_one(course_query, fields={'_id': True}) is not None
def has_item(self, usage_key): def has_item(self, usage_key):
......
...@@ -15,6 +15,7 @@ from xmodule.errortracker import make_error_tracker ...@@ -15,6 +15,7 @@ from xmodule.errortracker import make_error_tracker
from .store_utilities import rewrite_nonportable_content_links from .store_utilities import rewrite_nonportable_content_links
import xblock import xblock
from xmodule.tabs import CourseTabList from xmodule.tabs import CourseTabList
from xmodule.modulestore.exceptions import InvalidLocationError
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
...@@ -165,6 +166,7 @@ def import_from_xml( ...@@ -165,6 +166,7 @@ def import_from_xml(
dest_course_id = course_key dest_course_id = course_key
if create_new_course: if create_new_course:
# this tests if exactly this course (ignoring case) exists; so, it checks the run
if store.has_course(dest_course_id, ignore_case=True): if store.has_course(dest_course_id, ignore_case=True):
log.debug( log.debug(
"Skipping import of course with id, {0}," "Skipping import of course with id, {0},"
...@@ -172,7 +174,15 @@ def import_from_xml( ...@@ -172,7 +174,15 @@ def import_from_xml(
) )
continue continue
else: else:
store.create_course(dest_course_id.org, dest_course_id.offering) try:
store.create_course(dest_course_id.org, dest_course_id.offering)
except InvalidLocationError:
# course w/ same org and course exists and store is old mongo
log.debug(
"Skipping import of course with id, {0},"
"since it collides with an existing one".format(dest_course_id)
)
continue
try: try:
# turn off all write signalling while importing as this # turn off all write signalling while importing as this
......
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