Unable to Edit/Delete Static Linked Records with Streamlined STK

nblum
nblum Member Posts: 4
First Comment
**

Summary

I was attempting to use the Streamlined layer of the Granta MI STK (version 3.2) to remove all links from a link group for a specific record, however, this does not seem to be possible. I have detailed the issue I'm encountering below. If anyone has any suggestions, or if I'm doing something wrong, please let me know.

This behavior is possible using the Foundation layer, but since it is planned to be deprecated in the future, I would like to use the Streamlined layer if possible.

What I tried

The documentation says to use the Record.set_links function, which accepts an iterable of Records. This is already counter intuitive, because the default behavior is to add any new Record to the link group.

For example, if I wanted to replace the linked records for a record, I would think that this would work:

print(record.links["my_group"])
# {<Record 1>, <Record 2>}

new_links = {record2, record3}
record.set_links("my_group", new_links)
record = mi.update_links([record])[0]

I would expect:

print(record.links["my_group"])
# {<Record 2>, <Record 3>}

Instead, I would get:

print(record.links["my_group"])
# {<Record 1>, <Record 2>, <Record 3>}

Potential Workarounds

I can, however, work around that by doing:

print(record.links["my_group"])
# {<Record 1>, <Record 2>}

new_links = {record3, record4}

### Have to empty the set object prior ###
record.links["my_group"] = set()

# record.set_links("my_group", new_links)
record = mi.update_links([record])[0]

### Correct Output ###
print(record.links["my_group"])
# {<Record 3>, <Record 4>}

Limitation 1

But, this only works if I supply at least one record to the set_links function, and only if I do not include any items that were already linked.

Limitation 2

As well, if I supply an empty set, it will not remove ANY of the links from the link group, making it impossible to delete all links from a link group using the Streamlined STK.

print(record.links["my_group"])
# {<Record 1>, <Record 2>}

new_links = set()
record.set_links("my_group", new_links)

record = mi.update_links([record])[0]

### Incorrect Output ###
print(record.links["my_group"])
# {<Record 1>, <Record 2>}

Expected Behavior & Conclusion

I would expect that Record.set_links would override the existing links with the new links I provide, but currently it's just adding the new links to the existing links. There is a potential workaround, but that only works if you are willing to add at least one new link to the link group.

Again, if I'm missing something completely I would be more than happy to hear about it! Otherwise, I would like to know if there are any plans to support this behavior in the future.

Comments