From cb90e7640586fb5ce172205a4ecf18428e15580f Mon Sep 17 00:00:00 2001
From: Erwan Rouchet <rouchet@teklia.com>
Date: Tue, 23 Jun 2020 10:57:01 +0000
Subject: [PATCH] Include authorized_users in all corpora endpoints

---
 arkindex/documents/serializers/elements.py | 8 +++++++-
 arkindex/documents/tests/test_corpus.py    | 2 ++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py
index 970d48e7d6..784075ff14 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 a0a1bd8412..6824e3c33d 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):
-- 
GitLab