Skip to content

Commit 9b538d6

Browse files
committed
Remove on_commit for archive item saving and deletion
1 parent 0e5b012 commit 9b538d6

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

app/grandchallenge/archives/signals.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from django.db.models.signals import m2m_changed, post_save, pre_delete
2-
from django.db.transaction import on_commit
32
from django.dispatch import receiver
43
from guardian.shortcuts import assign_perm
54

@@ -70,11 +69,15 @@ def update_permissions_on_archive_item_changed(
7069

7170
@receiver(pre_delete, sender=ArchiveItem)
7271
@receiver(post_save, sender=ArchiveItem)
73-
def update_view_image_permissions(*_, instance: ArchiveItem, **__):
74-
images = [civ.image for civ in instance.values.filter(image__isnull=False)]
75-
76-
def update_permissions():
77-
for image in images:
78-
image.update_viewer_groups_permissions()
72+
def update_permissions_on_archive_item_change(
73+
*_, instance: ArchiveItem, signal, **__
74+
):
75+
images = Image.objects.filter(
76+
componentinterfacevalue__archive_items=instance
77+
).distinct()
78+
exclude_archive_items = [instance] if signal is pre_delete else None
7979

80-
on_commit(update_permissions)
80+
for image in images:
81+
image.update_viewer_groups_permissions(
82+
exclude_archive_items=exclude_archive_items
83+
)

0 commit comments

Comments
 (0)