Fix: get highest ASN regardless of user (#4326)

This commit is contained in:
shamoon
2023-10-06 17:22:31 -07:00
committed by GitHub
parent a2bdd64ad0
commit f7f5d0efa6
6 changed files with 75 additions and 45 deletions

View File

@@ -2689,6 +2689,50 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
def test_next_asn(self):
"""
GIVEN:
- Existing documents with ASNs, highest owned by user2
WHEN:
- API request is made by user1 to get next ASN
THEN:
- ASN +1 from user2's doc is returned for user1
"""
user1 = User.objects.create_user(username="test1")
user1.user_permissions.add(*Permission.objects.all())
user1.save()
user2 = User.objects.create_user(username="test2")
user2.save()
doc1 = Document.objects.create(
title="test",
mime_type="application/pdf",
content="this is a document 1",
checksum="1",
archive_serial_number=998,
)
doc1.owner = user1
doc1.save()
doc2 = Document.objects.create(
title="test2",
mime_type="application/pdf",
content="this is a document 2 with higher ASN",
checksum="2",
archive_serial_number=999,
)
doc2.owner = user2
doc2.save()
self.client.force_authenticate(user1)
resp = self.client.get(
"/api/documents/next_asn/",
)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.content, b"1000")
class TestDocumentApiV2(DirectoriesMixin, APITestCase):
def setUp(self):

View File

@@ -661,6 +661,19 @@ class UnifiedSearchViewSet(DocumentViewSet):
else:
return super().list(request)
@action(detail=False, methods=["GET"], name="Get Next ASN")
def next_asn(self, request, *args, **kwargs):
return Response(
(
Document.objects.filter(archive_serial_number__gte=0)
.order_by("archive_serial_number")
.last()
.archive_serial_number
or 0
)
+ 1,
)
class LogViewSet(ViewSet):
permission_classes = (IsAuthenticated, PaperlessAdminPermissions)