From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Thu, 23 Feb 2023 22:32:58 +0000 (-0800) Subject: Only return logs that exist X-Git-Tag: v1.14.0-beta.rc1~88^2 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2739%2Fhead;p=thirdparty%2Fpaperless-ngx.git Only return logs that exist --- diff --git a/src-ui/src/app/components/manage/logs/logs.component.ts b/src-ui/src/app/components/manage/logs/logs.component.ts index b2e6af80df..2da52e9504 100644 --- a/src-ui/src/app/components/manage/logs/logs.component.ts +++ b/src-ui/src/app/components/manage/logs/logs.component.ts @@ -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) { diff --git a/src/documents/tests/test_api.py b/src/documents/tests/test_api.py index 5ad1252e4d..a386519849 100644 --- a/src/documents/tests/test_api.py +++ b/src/documents/tests/test_api.py @@ -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) diff --git a/src/documents/views.py b/src/documents/views.py index 7305073f57..c14cb70e66 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -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):