Fix some document actions but many are now wrong (not paginated)

This commit is contained in:
shamoon 2024-12-01 01:37:43 -08:00
parent 31a2b36883
commit fa18844b92

View File

@ -377,16 +377,10 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
), ),
history=extend_schema( history=extend_schema(
description="View the document history", description="View the document history",
parameters=[
OpenApiParameter(
name="id",
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
),
],
responses={ responses={
200: inline_serializer( 200: inline_serializer(
name="LogEntry", name="LogEntry",
many=True,
fields={ fields={
"id": serializers.IntegerField(), "id": serializers.IntegerField(),
"timestamp": serializers.DateTimeField(), "timestamp": serializers.DateTimeField(),
@ -408,13 +402,6 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
), ),
metadata=extend_schema( metadata=extend_schema(
description="View the document metadata", description="View the document metadata",
parameters=[
OpenApiParameter(
name="id",
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
),
],
responses={ responses={
200: inline_serializer( 200: inline_serializer(
name="Metadata", name="Metadata",
@ -440,29 +427,15 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
), ),
notes=extend_schema( notes=extend_schema(
description="View, add, or delete notes for the document", description="View, add, or delete notes for the document",
parameters=[
OpenApiParameter(
name="id",
type=OpenApiTypes.STR,
location=OpenApiParameter.QUERY,
),
],
responses={ responses={
200: inline_serializer( 200: inline_serializer(
name="Note", name="Note",
many=True,
fields={ fields={
"id": serializers.IntegerField(), "id": serializers.IntegerField(),
"note": serializers.CharField(), "note": serializers.CharField(),
"created": serializers.DateTimeField(), "created": serializers.DateTimeField(),
"user": inline_serializer( "user": UserSerializer(),
name="User",
fields={
"id": serializers.IntegerField(),
"username": serializers.CharField(),
"first_name": serializers.CharField(),
"last_name": serializers.CharField(),
},
),
}, },
), ),
400: None, 400: None,
@ -472,13 +445,6 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
), ),
suggestions=extend_schema( suggestions=extend_schema(
description="View suggestions for the document", description="View suggestions for the document",
parameters=[
OpenApiParameter(
name="id",
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
),
],
responses={ responses={
200: inline_serializer( 200: inline_serializer(
name="Suggestions", name="Suggestions",
@ -503,17 +469,14 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
), ),
thumb=extend_schema( thumb=extend_schema(
description="View the document thumbnail", description="View the document thumbnail",
parameters=[
OpenApiParameter(
name="id",
type=OpenApiTypes.STR,
location=OpenApiParameter.PATH,
),
],
responses={200: OpenApiTypes.BINARY}, responses={200: OpenApiTypes.BINARY},
), ),
preview=extend_schema( preview=extend_schema(
description="View the document preview", description="View the document preview",
responses={200: OpenApiTypes.BINARY},
),
share_links=extend_schema(
description="View share links for the document",
parameters=[ parameters=[
OpenApiParameter( OpenApiParameter(
name="id", name="id",
@ -521,7 +484,12 @@ class DocumentTypeViewSet(ModelViewSet, PermissionsAwareDocumentCountMixin):
location=OpenApiParameter.PATH, location=OpenApiParameter.PATH,
), ),
], ],
responses={200: OpenApiTypes.BINARY}, responses={
200: ShareLinkSerializer(many=True),
400: None,
403: None,
404: None,
},
), ),
) )
class DocumentViewSet( class DocumentViewSet(
@ -657,7 +625,7 @@ class DocumentViewSet(
else: else:
return None return None
@action(methods=["get"], detail=True) @action(methods=["get"], detail=True, filter_backends=[])
@method_decorator(cache_control(no_cache=True)) @method_decorator(cache_control(no_cache=True))
@method_decorator( @method_decorator(
condition(etag_func=metadata_etag, last_modified_func=metadata_last_modified), condition(etag_func=metadata_etag, last_modified_func=metadata_last_modified),
@ -716,7 +684,7 @@ class DocumentViewSet(
return Response(meta) return Response(meta)
@action(methods=["get"], detail=True) @action(methods=["get"], detail=True, filter_backends=[])
@method_decorator(cache_control(no_cache=True)) @method_decorator(cache_control(no_cache=True))
@method_decorator( @method_decorator(
condition( condition(
@ -767,7 +735,7 @@ class DocumentViewSet(
return Response(resp_data) return Response(resp_data)
@action(methods=["get"], detail=True) @action(methods=["get"], detail=True, filter_backends=[])
@method_decorator(cache_control(no_cache=True)) @method_decorator(cache_control(no_cache=True))
@method_decorator( @method_decorator(
condition(etag_func=preview_etag, last_modified_func=preview_last_modified), condition(etag_func=preview_etag, last_modified_func=preview_last_modified),
@ -779,7 +747,7 @@ class DocumentViewSet(
except (FileNotFoundError, Document.DoesNotExist): except (FileNotFoundError, Document.DoesNotExist):
raise Http404 raise Http404
@action(methods=["get"], detail=True) @action(methods=["get"], detail=True, filter_backends=[])
@method_decorator(cache_control(no_cache=True)) @method_decorator(cache_control(no_cache=True))
@method_decorator(last_modified(thumbnail_last_modified)) @method_decorator(last_modified(thumbnail_last_modified))
def thumb(self, request, pk=None): def thumb(self, request, pk=None):
@ -838,6 +806,7 @@ class DocumentViewSet(
methods=["get", "post", "delete"], methods=["get", "post", "delete"],
detail=True, detail=True,
permission_classes=[PaperlessNotePermissions], permission_classes=[PaperlessNotePermissions],
filter_backends=[],
) )
def notes(self, request, pk=None): def notes(self, request, pk=None):
currentUser = request.user currentUser = request.user
@ -945,7 +914,7 @@ class DocumentViewSet(
}, },
) )
@action(methods=["get"], detail=True) @action(methods=["get"], detail=True, filter_backends=[])
def share_links(self, request, pk=None): def share_links(self, request, pk=None):
currentUser = request.user currentUser = request.user
try: try:
@ -963,21 +932,16 @@ class DocumentViewSet(
if request.method == "GET": if request.method == "GET":
now = timezone.now() now = timezone.now()
links = [ links = (
{ ShareLink.objects.filter(document=doc)
"id": c.pk,
"created": c.created,
"expiration": c.expiration,
"slug": c.slug,
}
for c in ShareLink.objects.filter(document=doc)
.only("pk", "created", "expiration", "slug") .only("pk", "created", "expiration", "slug")
.exclude(expiration__lt=now) .exclude(expiration__lt=now)
.order_by("-created") .order_by("-created")
] )
return Response(links) serializer = ShareLinkSerializer(links, many=True)
return Response(serializer.data)
@action(methods=["get"], detail=True, name="Audit Trail") @action(methods=["get"], detail=True, name="Audit Trail", filter_backends=[])
def history(self, request, pk=None): def history(self, request, pk=None):
if not settings.AUDIT_LOG_ENABLED: if not settings.AUDIT_LOG_ENABLED:
return HttpResponseBadRequest("Audit log is disabled") return HttpResponseBadRequest("Audit log is disabled")