]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
option to truncate content on /documents endpoint
authorMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Sun, 20 Nov 2022 08:06:00 +0000 (00:06 -0800)
committerMichael Shamoon <4887959+shamoon@users.noreply.github.com>
Mon, 28 Nov 2022 05:19:23 +0000 (21:19 -0800)
src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts
src-ui/src/app/services/document-list-view.service.ts
src/documents/serialisers.py
src/documents/views.py

index de6b9403290fca04498ebd220afd6cb4faedae09..4ce1ef705fb2083c7893690e66287e2aca30431e 100644 (file)
@@ -119,6 +119,9 @@ export class DocumentCardLargeComponent implements OnInit {
   }
 
   get contentTrimmed() {
-    return this.document.content.substr(0, 500)
+    return (
+      this.document.content.substr(0, 500) +
+      (this.document.content.length > 500 ? '...' : '')
+    )
   }
 }
index 3eb036710b6550c41c316ecbf49e8244e6747a17..3c5dbca218eff3cafbe27f3a5ad39a8136786b38 100644 (file)
@@ -213,7 +213,8 @@ export class DocumentListViewService {
         this.currentPageSize,
         activeListViewState.sortField,
         activeListViewState.sortReverse,
-        activeListViewState.filterRules
+        activeListViewState.filterRules,
+        { truncate_content: true }
       )
       .subscribe({
         next: (result) => {
index db282cacd1e4db2fa8e21fcd819a98fe92cbc237..356dd0a696aad844ba20c154d6e49b303b6f206c 100644 (file)
@@ -234,6 +234,12 @@ class DocumentSerializer(DynamicFieldsModelSerializer):
         else:
             return None
 
+    def to_representation(self, instance):
+        doc = super().to_representation(instance)
+        if self.truncate_content:
+            doc["content"] = doc.get("content")[0:550]
+        return doc
+
     def update(self, instance, validated_data):
         if "created_date" in validated_data and "created" not in validated_data:
             new_datetime = datetime.datetime.combine(
@@ -247,6 +253,11 @@ class DocumentSerializer(DynamicFieldsModelSerializer):
         super().update(instance, validated_data)
         return instance
 
+    def __init__(self, *args, **kwargs):
+        self.truncate_content = kwargs.pop("truncate_content", False)
+
+        super().__init__(*args, **kwargs)
+
     class Meta:
         model = Document
         depth = 1
index 10225be6fe6b7b958c44b25f783421032851e997..eb6f205c13915549caaa1dc821687e6b38d3f463 100644 (file)
@@ -226,9 +226,11 @@ class DocumentViewSet(
             fields = fields_param.split(",")
         else:
             fields = None
+        truncate_content = self.request.query_params.get("truncate_content", "False")
         serializer_class = self.get_serializer_class()
         kwargs.setdefault("context", self.get_serializer_context())
         kwargs.setdefault("fields", fields)
+        kwargs.setdefault("truncate_content", truncate_content.lower() in ["true", "1"])
         return serializer_class(*args, **kwargs)
 
     def update(self, request, *args, **kwargs):