From dcc6b32a9c243d4264b0ec7884ac58fbbbd6352d Mon Sep 17 00:00:00 2001 From: Valentin Rigal <rigal@teklia.com> Date: Thu, 21 Jan 2021 10:50:44 +0100 Subject: [PATCH] Avoid a request resulting in a stale read when creating a corpus --- arkindex/documents/serializers/elements.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py index f9ed4b96ca..9f5a1ed044 100644 --- a/arkindex/documents/serializers/elements.py +++ b/arkindex/documents/serializers/elements.py @@ -2,6 +2,7 @@ from collections import defaultdict from uuid import UUID from django.contrib.gis.geos import LinearRing +from django.db import transaction from django.utils.functional import cached_property from rest_framework import serializers from rest_framework.exceptions import ValidationError @@ -123,6 +124,7 @@ class CorpusSerializer(serializers.ModelSerializer): raise ValidationError(['Only admin users are allowed to edit the public attribute on a corpus.']) return public + @transaction.atomic def create(self, validated_data): corpus = Corpus.objects.create(**validated_data) corpus.memberships.create( @@ -130,6 +132,9 @@ class CorpusSerializer(serializers.ModelSerializer): level=Role.Admin.value ) corpus.create_default_types() + # Cheat annotating corpus to avoid a stale read when serializing it + corpus.access_level = Role.Admin.value + corpus.authorized_users = 1 return corpus -- GitLab