Skip to content

Commit

Permalink
fix: check type of new_obj
Browse files Browse the repository at this point in the history
  • Loading branch information
huyenngn committed Sep 29, 2023
1 parent e3fda78 commit 6bb9cb3
Showing 1 changed file with 15 additions and 19 deletions.
34 changes: 15 additions & 19 deletions model_diffsummary/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,37 +241,33 @@ def _obj2diff(

old_val = getattr(old, attr)
new_val = getattr(new, attr)
if isinstance(old_val, c.GenericElement):

if isinstance(old_val, c.GenericElement) and isinstance(new_val, c.GenericElement):
if old_val.uuid != new_val.uuid:
changes[attr] = {
"previous": {
"uuid": old_val.uuid,
"display_name": old_val.name,
},
"current": {
"uuid": new_val.uuid,
"display_name": new_val.name,
},
"previous": _serialize_obj(old_val),
"current": _serialize_obj(new_val),
}
elif isinstance(old_val, c.ElementList):
elif isinstance(old_val, c.ElementList) and isinstance(new_val, c.ElementList):
if [i.uuid for i in old_val] != [i.uuid for i in new_val]:
changes[attr] = {
"previous": [
{"uuid": i.uuid, "display_name": i.name}
for i in old_val
],
"current": [
{"uuid": i.uuid, "display_name": i.name}
for i in new_val
],
"previous": _serialize_obj(old_val),
"current": _serialize_obj(new_val),
}
elif old_val != new_val:
changes[attr] = {"previous": old_val, "current": new_val}
changes[attr] = {"previous": _serialize_obj(old_val), "current": _serialize_obj(new_val)}

if not changes:
return None
return {"uuid": old.uuid, "display_name": new.name, "changes": changes}

def _serialize_obj(obj: c.GenericElement | t.Any):
if isinstance(obj, c.GenericElement):
return {"uuid": obj.uuid,
"display_name": obj.name},
elif isinstance(obj, c.ElementList):
return [{"uuid": i.uuid, "display_name": i.name} for i in obj]
return obj

if __name__ == "__main__":
main()

0 comments on commit 6bb9cb3

Please sign in to comment.