[#1928] fix nested delete bug

This commit is contained in:
Aaron McMillin 2019-09-18 22:16:00 -04:00
parent 1a1203fcb6
commit 2dfb327f88
2 changed files with 7 additions and 3 deletions

View file

@ -1695,9 +1695,9 @@ class CmdSetAttribute(ObjManipCommand):
if nested_keys:
del_key = nested_keys[-1]
val = obj.attributes.get(key)
val = self.do_nested_lookup(val, *nested_keys[:-1])
if val is not self.not_found:
del val[del_key]
deep = self.do_nested_lookup(val, *nested_keys[:-1])
if deep is not self.not_found:
del deep[del_key]
obj.attributes.add(key, val)
return "\nDeleted attribute '%s' (= nested) from %s." % (attr, obj.name)
else:

View file

@ -566,6 +566,10 @@ class TestBuilding(CommandTest):
"Obj/test3=[{'one': 1}]", "Created attribute Obj/test3 = [{'one': 1}]")
self.call(building.CmdSetAttribute(), "Obj/test3[0]['one']", "Attribute Obj/test3[0]['one'] = 1")
self.call(building.CmdSetAttribute(), "Obj/test3[0]", "Attribute Obj/test3[0] = {'one': 1}")
self.call(building.CmdSetAttribute(),
"Obj/test3[0]['one'] =", "Deleted attribute 'test3[0]['one']' (= nested) from Obj.")
self.call(building.CmdSetAttribute(), "Obj/test3[0]", "Attribute Obj/test3[0] = {}")
self.call(building.CmdSetAttribute(), "Obj/test3", "Attribute Obj/test3 = [{}]")
# Naughty keys
self.call(building.CmdSetAttribute(),