From 25ce71d5731edd5917648f9b6cbdcc611fc1606c Mon Sep 17 00:00:00 2001 From: Galen Date: Sun, 9 Feb 2025 20:35:17 -0800 Subject: [PATCH] delete relations that were deleted from a resource-instance dt tile, re #11730 --- arches/app/datatypes/datatypes.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/arches/app/datatypes/datatypes.py b/arches/app/datatypes/datatypes.py index dce4591933..4f53450345 100644 --- a/arches/app/datatypes/datatypes.py +++ b/arches/app/datatypes/datatypes.py @@ -2094,14 +2094,26 @@ def pre_tile_save(self, tile, nodeid): def post_tile_save(self, tile, nodeid, request): ret = False - sql = """ + create_sql = """ SELECT * FROM __arches_create_resource_x_resource_relationships('%s') as t; """ % ( tile.pk ) + delete_sql = """ + DELETE FROM resource_x_resource WHERE tileid = '%s' AND resourcexid NOT IN (%s); + """ % ( + tile.pk, + ",".join( + [ + "'%s'" % relationship["resourceXresourceId"] + for relationship in tile.data[nodeid] + ] + ), + ) with connection.cursor() as cursor: - cursor.execute(sql) + cursor.execute(delete_sql) + cursor.execute(create_sql) ret = cursor.fetchone() return ret