Use a setter to make editing location possible
This commit is contained in:
@@ -42,7 +42,7 @@ def wrap_draft(item):
|
||||
non-draft location in either case
|
||||
"""
|
||||
setattr(item, 'is_draft', item.location.revision == DRAFT)
|
||||
item.scope_ids = item.scope_ids._replace(usage_id=item.location.replace(revision=None))
|
||||
item.location = item.location.replace(revision=None)
|
||||
return item
|
||||
|
||||
|
||||
|
||||
@@ -110,27 +110,19 @@ def _clone_modules(modulestore, modules, source_location, dest_location):
|
||||
original_loc = Location(module.location)
|
||||
|
||||
if original_loc.category != 'course':
|
||||
new_location = module.location._replace(
|
||||
module.location = module.location._replace(
|
||||
tag=dest_location.tag,
|
||||
org=dest_location.org,
|
||||
course=dest_location.course
|
||||
)
|
||||
module.scope_ids = module.scope_ids._replace(
|
||||
def_id=new_location,
|
||||
usage_id=new_location
|
||||
)
|
||||
else:
|
||||
# on the course module we also have to update the module name
|
||||
new_location = module.location._replace(
|
||||
module.location = module.location._replace(
|
||||
tag=dest_location.tag,
|
||||
org=dest_location.org,
|
||||
course=dest_location.course,
|
||||
name=dest_location.name
|
||||
)
|
||||
module.scope_ids = module.scope_ids._replace(
|
||||
def_id=new_location,
|
||||
usage_id=new_location
|
||||
)
|
||||
|
||||
print "Cloning module {0} to {1}....".format(original_loc, module.location)
|
||||
|
||||
|
||||
@@ -375,30 +375,22 @@ def remap_namespace(module, target_location_namespace):
|
||||
# This looks a bit wonky as we need to also change the 'name' of the imported course to be what
|
||||
# the caller passed in
|
||||
if module.location.category != 'course':
|
||||
new_location = module.location._replace(
|
||||
module.location = module.location._replace(
|
||||
tag=target_location_namespace.tag,
|
||||
org=target_location_namespace.org,
|
||||
course=target_location_namespace.course
|
||||
)
|
||||
module.scope_ids = module.scope_ids._replace(
|
||||
def_id=new_location,
|
||||
usage_id=new_location
|
||||
)
|
||||
else:
|
||||
original_location = module.location
|
||||
#
|
||||
# module is a course module
|
||||
#
|
||||
new_location = module.location._replace(
|
||||
module.location = module.location._replace(
|
||||
tag=target_location_namespace.tag,
|
||||
org=target_location_namespace.org,
|
||||
course=target_location_namespace.course,
|
||||
name=target_location_namespace.name
|
||||
)
|
||||
module.scope_ids = module.scope_ids._replace(
|
||||
def_id=new_location,
|
||||
usage_id=new_location
|
||||
)
|
||||
#
|
||||
# There is more re-namespacing work we have to do when importing course modules
|
||||
#
|
||||
|
||||
@@ -146,6 +146,13 @@ class XModule(XModuleFields, HTMLSnippet, XBlock):
|
||||
else:
|
||||
return BlockUsageLocator(self.scope_ids.usage_id)
|
||||
|
||||
@location.setter
|
||||
def location(self, value):
|
||||
self.scope_ids = self.scope_ids._replace(
|
||||
def_id=value,
|
||||
usage_id=value,
|
||||
)
|
||||
|
||||
@property
|
||||
def url_name(self):
|
||||
if self.descriptor:
|
||||
@@ -457,6 +464,13 @@ class XModuleDescriptor(XModuleFields, HTMLSnippet, ResourceTemplates, XBlock):
|
||||
else:
|
||||
return BlockUsageLocator(self.scope_ids.usage_id)
|
||||
|
||||
@location.setter
|
||||
def location(self, value):
|
||||
self.scope_ids = self.scope_ids._replace(
|
||||
def_id=value,
|
||||
usage_id=value,
|
||||
)
|
||||
|
||||
@property
|
||||
def url_name(self):
|
||||
if isinstance(self.location, Location):
|
||||
|
||||
Reference in New Issue
Block a user