await page.routeFromHAR(REQUESTS_HAR1, { notFound: 'fallback' })
await page.goto('/dashboard')
await page.getByRole('link', { name: 'Documents in inbox' }).click()
- await expect(page).toHaveURL(/tags__id__all=9/)
+ await expect(page).toHaveURL(/tags__id__in=9/)
await expect(page.locator('pngx-document-list')).toHaveText(/8 documents/)
})
"content": {
"size": -1,
"mimeType": "application/json",
- "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tag\":9,\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
+ "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tags\":[9],\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
},
"headersSize": -1,
"bodySize": -1,
"time": 0.609,
"request": {
"method": "GET",
- "url": "http://localhost:8000/api/documents/?page=1&page_size=10&ordering=-created&truncate_content=true&tags__id__all=9",
+ "url": "http://localhost:8000/api/documents/?page=1&page_size=10&ordering=-created&truncate_content=true&tags__id__in=9",
"httpVersion": "HTTP/1.1",
"cookies": [],
"headers": [
"value": "true"
},
{
- "name": "tags__id__all",
+ "name": "tags__id__in",
"value": "9"
}
],
"time": 0.951,
"request": {
"method": "GET",
- "url": "http://localhost:8000/api/documents/?page=1&page_size=50&ordering=-created&truncate_content=true&tags__id__all=9",
+ "url": "http://localhost:8000/api/documents/?page=1&page_size=50&ordering=-created&truncate_content=true&tags__id__in=9",
"httpVersion": "HTTP/1.1",
"cookies": [],
"headers": [
"value": "true"
},
{
- "name": "tags__id__all",
+ "name": "tags__id__in",
"value": "9"
}
],
"content": {
"size": -1,
"mimeType": "application/json",
- "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tag\":9,\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
+ "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tags\":[9],\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
},
"headersSize": -1,
"bodySize": -1,
"time": 0.622,
"request": {
"method": "GET",
- "url": "http://localhost:8000/api/documents/?page=1&page_size=10&ordering=-created&truncate_content=true&tags__id__all=9",
+ "url": "http://localhost:8000/api/documents/?page=1&page_size=10&ordering=-created&truncate_content=true&tags__id__in=9",
"httpVersion": "HTTP/1.1",
"cookies": [],
"headers": [
"value": "true"
},
{
- "name": "tags__id__all",
+ "name": "tags__id__in",
"value": "9"
}
],
"content": {
"size": -1,
"mimeType": "application/json",
- "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tag\":9,\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
+ "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tags\":[9],\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
},
"headersSize": -1,
"bodySize": -1,
"content": {
"size": -1,
"mimeType": "application/json",
- "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tag\":9,\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
+ "text": "{\"documents_total\":61,\"documents_inbox\":8,\"inbox_tags\":[9],\"document_file_type_counts\":[{\"mime_type\":\"application/pdf\",\"mime_type_count\":57},{\"mime_type\":\"text/plain\",\"mime_type_count\":3},{\"mime_type\":\"text/csv\",\"mime_type_count\":1}],\"character_count\":2407053}"
},
"headersSize": -1,
"bodySize": -1,
const mockStats = {
documents_total: 200,
documents_inbox: 18,
- inbox_tag: 10,
+ inbox_tags: [10],
}
const req = httpTestingController.expectOne(
const mockStats = {
documents_total: 200,
documents_inbox: 18,
- inbox_tag: 10,
+ inbox_tags: [10],
document_file_type_counts: [
{
mime_type: 'application/pdf',
import { HttpClient } from '@angular/common/http'
import { Component, OnDestroy, OnInit } from '@angular/core'
import { Observable, Subscription } from 'rxjs'
-import { FILTER_HAS_TAGS_ALL } from 'src/app/data/filter-rule-type'
+import { FILTER_HAS_TAGS_ANY } from 'src/app/data/filter-rule-type'
import { ConsumerStatusService } from 'src/app/services/consumer-status.service'
import { DocumentListViewService } from 'src/app/services/document-list-view.service'
import { environment } from 'src/environments/environment'
export interface Statistics {
documents_total?: number
documents_inbox?: number
- inbox_tag?: number
+ inbox_tags?: number[]
document_file_type_counts?: DocumentFileType[]
character_count?: number
tag_count?: number
goToInbox() {
this.documentListViewService.quickFilter([
{
- rule_type: FILTER_HAS_TAGS_ALL,
- value: this.statistics.inbox_tag.toString(),
+ rule_type: FILTER_HAS_TAGS_ANY,
+ value: this.statistics.inbox_tags
+ .map((tagID) => tagID.toString())
+ .join(','),
},
])
}
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,
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):
"""
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
)
{
"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),