diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py index f9ed4b96ca0ba727b2186f234c0fff6487e9ec6b..9f5a1ed044bedf5ff2afd49961421ef08ff9d03b 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