]> git.ipfire.org Git - thirdparty/paperless-ngx.git/commitdiff
Only return logs that exist 2739/head
authorshamoon <4887959+shamoon@users.noreply.github.com>
Thu, 23 Feb 2023 22:32:58 +0000 (14:32 -0800)
committershamoon <4887959+shamoon@users.noreply.github.com>
Thu, 23 Feb 2023 22:43:43 +0000 (14:43 -0800)
src-ui/src/app/components/manage/logs/logs.component.ts
src/documents/tests/test_api.py
src/documents/views.py

index b2e6af80dfe666a04450f66a85b083a446ab0901..2da52e9504a723e904fe536ab443c482627c2f03 100644 (file)
@@ -38,14 +38,14 @@ export class LogsComponent implements OnInit, AfterViewChecked {
   }
 
   reloadLogs() {
-    this.logService.get(this.activeLog).subscribe(
-      (result) => {
+    this.logService.get(this.activeLog).subscribe({
+      next: (result) => {
         this.logs = result
       },
-      (error) => {
+      error: () => {
         this.logs = []
-      }
-    )
+      },
+    })
   }
 
   getLogLevel(log: string) {
index 5ad1252e4d35809a48c939946e25043d134ba6bb..a386519849b6d038be468e7eb8b2a89bea4ab273 100644 (file)
@@ -1590,10 +1590,23 @@ class TestDocumentApi(DirectoriesMixin, APITestCase):
         self.assertEqual(v1.filter_rules.count(), 0)
 
     def test_get_logs(self):
+        log_data = "test\ntest2\n"
+        with open(os.path.join(settings.LOGGING_DIR, "mail.log"), "w") as f:
+            f.write(log_data)
+        with open(os.path.join(settings.LOGGING_DIR, "paperless.log"), "w") as f:
+            f.write(log_data)
         response = self.client.get("/api/logs/")
         self.assertEqual(response.status_code, status.HTTP_200_OK)
         self.assertCountEqual(response.data, ["mail", "paperless"])
 
+    def test_get_logs_only_when_exist(self):
+        log_data = "test\ntest2\n"
+        with open(os.path.join(settings.LOGGING_DIR, "paperless.log"), "w") as f:
+            f.write(log_data)
+        response = self.client.get("/api/logs/")
+        self.assertEqual(response.status_code, status.HTTP_200_OK)
+        self.assertCountEqual(response.data, ["paperless"])
+
     def test_get_invalid_log(self):
         response = self.client.get("/api/logs/bogus_log/")
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
index 7305073f57c4fc078ec9b0b4e580035853749410..c14cb70e666f8259135ddc4e79de7f1696743609 100644 (file)
@@ -593,11 +593,14 @@ class LogViewSet(ViewSet):
 
     log_files = ["paperless", "mail"]
 
+    def get_log_filename(self, log):
+        return os.path.join(settings.LOGGING_DIR, f"{log}.log")
+
     def retrieve(self, request, pk=None, *args, **kwargs):
         if pk not in self.log_files:
             raise Http404()
 
-        filename = os.path.join(settings.LOGGING_DIR, f"{pk}.log")
+        filename = self.get_log_filename(pk)
 
         if not os.path.isfile(filename):
             raise Http404()
@@ -608,7 +611,10 @@ class LogViewSet(ViewSet):
         return Response(lines)
 
     def list(self, request, *args, **kwargs):
-        return Response(self.log_files)
+        exist = [
+            log for log in self.log_files if os.path.isfile(self.get_log_filename(log))
+        ]
+        return Response(exist)
 
 
 class SavedViewViewSet(ModelViewSet, PassUserMixin):