Skip to content

Commit df04efd

Browse files
committed
add search field by grep
1 parent 810ef0a commit df04efd

File tree

5 files changed

+29
-9
lines changed

5 files changed

+29
-9
lines changed

log_reader/admin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ def get_urls(self):
2020

2121
def changelist_view(self, request, extra_context=None):
2222
filename = request.GET.get('file_name', settings.LOG_READER_DEFAULT_FILE)
23-
is_valid, file_contents = read_file_lines(file_name=filename)
23+
search = request.GET.get('q', None) or None
24+
is_valid, file_contents = read_file_lines(file_name=filename, search=search)
2425
if not is_valid:
2526
self.message_user(request, file_contents, level=messages.ERROR)
2627
log_files = get_log_files(settings.LOG_READER_DIR_PATH)

log_reader/static/log_reader/css/log_reader.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@
55
color: #ffffff;
66
cursor: pointer;
77
border: 1px solid #d0d0d0;
8+
position: fixed;
9+
right: 315px;
10+
top: 156px;
811
}

log_reader/templates/log_reader/admin/change_list.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,13 @@ <h1>File Logs</h1>
3030
<div class="changelist-form-container">{% endif %}
3131
{% if file_contents %}
3232
<div id="toolbar">
33+
<form id="changelist-search" method="get">
34+
<div><!-- DIV needed for valid HTML -->
35+
<label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search"></label>
36+
<input type="text" size="40" name="q" value="{{ request.GET.q }}" id="searchbar" autofocus="">
37+
<input type="submit" value="Search">
38+
</div>
39+
</form>
3340
<button id="DownloadLogFile" type="submit">Download</button>
3441
</div>
3542
{% endif %}

log_reader/utils.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,27 @@ def get_log_files(directory):
2424
return []
2525

2626

27-
def read_file_lines(file_name):
27+
def read_file_lines(file_name, search=None):
2828
if file_name not in get_log_files(settings.LOG_READER_DIR_PATH):
2929
return False, _("%s file, not found. Please try again." % file_name)
3030

3131
try:
3232
file_path = '%s/%s' % (settings.LOG_READER_DIR_PATH, file_name)
33-
result = subprocess.run(
34-
['tail', '-%s' % settings.LOG_READER_MAX_READ_LINES, file_path],
35-
stdout=PIPE,
36-
stderr=PIPE,
37-
encoding="utf8",
38-
)
33+
34+
if search:
35+
result = subprocess.run(
36+
['grep', '-m %s' % settings.LOG_READER_MAX_READ_LINES, search, file_path],
37+
stdout=PIPE,
38+
stderr=PIPE,
39+
encoding="utf8",
40+
)
41+
else:
42+
result = subprocess.run(
43+
['tail', '-%s' % settings.LOG_READER_MAX_READ_LINES, file_path],
44+
stdout=PIPE,
45+
stderr=PIPE,
46+
encoding="utf8",
47+
)
3948
content = repr(result.stdout) if result.stdout else None
4049
except Exception as e:
4150
return False, str(e)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
setup(
1111
name='django-log-reader',
12-
version='1.1.6',
12+
version='1.1.7',
1313
zip_safe=False,
1414
packages=find_packages(),
1515
include_package_data=True,

0 commit comments

Comments
 (0)