Skip to content

Commit 3a762c2

Browse files
committed
Move select_for_update into transaction block
1 parent 333cdcb commit 3a762c2

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

dandiapi/api/views/dandiset.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@ def unembargo(self, request, dandiset__pk):
485485
# TODO: move these into a viewset
486486
@action(methods=['GET', 'PUT'], detail=True)
487487
def users(self, request, dandiset__pk): # noqa: C901
488-
dandiset: Dandiset = Dandiset.objects.select_for_update().get(pk=dandiset__pk)
488+
dandiset: Dandiset = self.get_object()
489489
if request.method == 'PUT':
490490
if dandiset.unembargo_in_progress:
491491
raise DandisetUnembargoInProgressError
@@ -522,13 +522,14 @@ def users(self, request, dandiset__pk): # noqa: C901
522522

523523
# All owners found
524524
with transaction.atomic():
525+
dandiset_locked = Dandiset.objects.select_for_update().get(pk=dandiset__pk)
525526
owners = user_owners + [acc.user for acc in socialaccount_owners]
526-
removed_owners, added_owners = replace_dandiset_owners(dandiset, owners)
527-
dandiset.save()
527+
removed_owners, added_owners = replace_dandiset_owners(dandiset_locked, owners)
528+
dandiset_locked.save()
528529

529530
if removed_owners or added_owners:
530531
audit.change_owners(
531-
dandiset=dandiset,
532+
dandiset=dandiset_locked,
532533
user=request.user,
533534
removed_owners=removed_owners,
534535
added_owners=added_owners,

0 commit comments

Comments
 (0)