Fix: support multiple inbox tags from stats widget (#7281)

This commit is contained in:
shamoon
2024-07-22 10:07:51 -07:00
committed by GitHub
parent 82340ad6e3
commit 6b2e5559ca
9 changed files with 30 additions and 25 deletions

View File

@@ -954,7 +954,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["documents_total"], 3)
self.assertEqual(response.data["documents_inbox"], 1)
self.assertEqual(response.data["inbox_tag"], tag_inbox.pk)
self.assertEqual(response.data["inbox_tags"], [tag_inbox.pk])
self.assertEqual(
response.data["document_file_type_counts"][0]["mime_type_count"],
2,
@@ -975,7 +975,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
response = self.client.get("/api/statistics/")
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["documents_inbox"], None)
self.assertEqual(response.data["inbox_tag"], None)
self.assertEqual(response.data["inbox_tags"], None)
def test_statistics_multiple_users(self):
"""

View File

@@ -1418,13 +1418,11 @@ class StatisticsView(APIView):
documents_total = documents.count()
inbox_tag = tags.filter(is_inbox_tag=True)
inbox_tags = tags.filter(is_inbox_tag=True)
documents_inbox = (
documents.filter(tags__is_inbox_tag=True, tags__id__in=tags)
.distinct()
.count()
if inbox_tag.exists()
documents.filter(tags__id__in=inbox_tags).distinct().count()
if inbox_tags.exists()
else None
)
@@ -1454,7 +1452,12 @@ class StatisticsView(APIView):
{
"documents_total": documents_total,
"documents_inbox": documents_inbox,
"inbox_tag": inbox_tag.first().pk if inbox_tag.exists() else None,
"inbox_tag": inbox_tags.first().pk
if inbox_tags.exists()
else None, # backwards compatibility
"inbox_tags": [tag.pk for tag in inbox_tags]
if inbox_tags.exists()
else None,
"document_file_type_counts": document_file_type_counts,
"character_count": character_count,
"tag_count": len(tags),