diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py index 970d48e7d66fc57f439c47e091f665423389532d..784075ff14e95deabae5ee5843f67082786c9b7e 100644 --- a/arkindex/documents/serializers/elements.py +++ b/arkindex/documents/serializers/elements.py @@ -53,7 +53,7 @@ class CorpusSerializer(serializers.ModelSerializer): """ rights = serializers.SerializerMethodField(read_only=True) types = ElementTypeSerializer(many=True, read_only=True) - authorized_users = serializers.IntegerField(read_only=True) + authorized_users = serializers.SerializerMethodField(read_only=True) class Meta: model = Corpus @@ -71,6 +71,12 @@ class CorpusSerializer(serializers.ModelSerializer): def get_rights(self, corpus): return map(lambda x: x.value, corpus.get_acl_rights(self.context['request'].user)) + def get_authorized_users(self, corpus): + count = getattr(corpus, 'authorized_users', None) + if count is None: + count = corpus.corpus_right.count() + return count + def create(self, validated_data): corpus = Corpus.objects.create(**validated_data) corpus.corpus_right.create( diff --git a/arkindex/documents/tests/test_corpus.py b/arkindex/documents/tests/test_corpus.py index a0a1bd84123f5f2685347c459da8b8ea687437f9..6824e3c33ded4d4f4edc83ea707c8beb91fd9c65 100644 --- a/arkindex/documents/tests/test_corpus.py +++ b/arkindex/documents/tests/test_corpus.py @@ -354,6 +354,7 @@ class TestCorpus(FixtureAPITestCase): 'public': True, 'rights': ['read'], 'created': DB_CREATED, + 'authorized_users': 1, }) def test_retrieve(self): @@ -368,6 +369,7 @@ class TestCorpus(FixtureAPITestCase): 'rights': ['read', 'write'], 'types': [], 'created': str(FAKE_NOW).replace(' ', 'T') + 'Z', + 'authorized_users': 1, }) def test_retrieve_requires_login(self):