Skip to content

Commit 1cf9500

Browse files
committed
fix: allow get_log_files to collect logs from multiple directories
Resolves: #44
1 parent 723cf80 commit 1cf9500

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

log_viewer/tests/tests.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
import types
23
import tempfile
34
from itertools import islice
@@ -36,14 +37,24 @@ def test_logs_viewer(self):
3637
self.assertTemplateUsed(response, "log_viewer/logfile_viewer.html")
3738

3839
def test_get_log_files(self):
39-
with tempfile.TemporaryDirectory() as log_dir:
40-
open("%s/default.log" % log_dir, "a").close()
41-
result = get_log_files(log_dir, 1, 1)
40+
with tempfile.TemporaryDirectory() as parent_level_log_dir, \
41+
tempfile.TemporaryDirectory(dir=parent_level_log_dir) as child_one_log_dir, \
42+
tempfile.TemporaryDirectory(dir=parent_level_log_dir) as child_two_log_dir:
43+
open("%s/default.log" % parent_level_log_dir, "a").close()
44+
open("%s/a.log" % child_one_log_dir, "a").close()
45+
open("%s/b.log" % child_two_log_dir, "a").close()
46+
47+
child_one_relative_path = os.path.relpath(child_one_log_dir, parent_level_log_dir)
48+
child_two_relative_path = os.path.relpath(child_two_log_dir, parent_level_log_dir)
49+
50+
result = get_log_files(parent_level_log_dir, 2, 1)
4251
self.assertEqual(
4352
result,
4453
{
4554
"logs": {
4655
"": ["default.log"],
56+
child_one_relative_path: ["a.log"],
57+
child_two_relative_path: ["b.log"],
4758
},
4859
"next_page_files": 2,
4960
"last_files": True,

log_viewer/utils.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,22 @@ def get_log_files(directory, max_items_per_page, current_page):
2727
}
2828
>>>
2929
"""
30-
result = {}
31-
all_log_files = []
30+
result = {"logs": {}}
3231
for root, _, files in os.walk(directory):
3332
all_files = list(filter(lambda x: x.find("~") == -1, files))
3433

35-
all_log_files.extend(
36-
list(filter(lambda x: x in settings.LOG_VIEWER_FILES, all_files))
37-
)
38-
all_log_files.extend(
34+
log_files = list(filter(lambda x: x in settings.LOG_VIEWER_FILES, all_files))
35+
log_files.extend(
3936
[x for x in all_files if fnmatch(x, settings.LOG_VIEWER_FILES_PATTERN)]
4037
)
4138
log_dir = os.path.relpath(root, directory)
4239
if log_dir == ".":
4340
log_dir = ""
4441

45-
result["logs"] = {log_dir: list(set(all_log_files))}
42+
result["logs"][log_dir] = list(set(log_files))
4643
result["next_page_files"] = current_page + 1
4744
result["last_files"] = (
48-
all_log_files.__len__() <= current_page * max_items_per_page
45+
log_files.__len__() <= current_page * max_items_per_page
4946
)
5047

5148
return result

0 commit comments

Comments
 (0)