mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-07-28 18:24:38 -05:00
Fix: get highest ASN regardless of user (#4326)
This commit is contained in:
@@ -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):
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user