Skip to content

Commit 607b5e4

Browse files
committed
fix: support django 3.2 and patterns
1 parent bfdb894 commit 607b5e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+744
-944
lines changed

.github/FUNDING.yml

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
github: [agusmakmun]
21
patreon:
32
ko_fi:
43
liberapay:

.travis.yml

+37-18
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,19 @@ sudo: false
33

44
matrix:
55
include:
6-
- python: 2.7
7-
env: DJANGO=1.10.*
8-
- python: 2.7
9-
env: DJANGO=1.11.*
10-
11-
- python: 3.5
12-
env: DJANGO=1.10.*
13-
- python: 3.5
14-
env: DJANGO=1.11.*
156
- python: 3.5
167
env: DJANGO=2.0.*
178
- python: 3.5
189
env: DJANGO=2.1.*
1910
- python: 3.5
2011
env: DJANGO=2.2.*
12+
- python: 3.5
13+
env: DJANGO=3.0.*
14+
- python: 3.5
15+
env: DJANGO=3.1.*
16+
- python: 3.5
17+
env: DJANGO=3.2.*
2118

22-
- python: 3.6
23-
env: DJANGO=1.10.*
24-
- python: 3.6
25-
env: DJANGO=1.11.*
2619
- python: 3.6
2720
env: DJANGO=2.0.*
2821
- python: 3.6
@@ -33,11 +26,9 @@ matrix:
3326
env: DJANGO=3.0.*
3427
- python: 3.6
3528
env: DJANGO=3.1.*
29+
- python: 3.6
30+
env: DJANGO=3.2.*
3631

37-
- python: 3.7
38-
env: DJANGO=1.10.*
39-
- python: 3.7
40-
env: DJANGO=1.11.*
4132
- python: 3.7
4233
env: DJANGO=2.0.*
4334
- python: 3.7
@@ -48,10 +39,38 @@ matrix:
4839
env: DJANGO=3.0.*
4940
- python: 3.7
5041
env: DJANGO=3.1.*
42+
- python: 3.7
43+
env: DJANGO=3.2.*
44+
45+
- python: 3.8
46+
env: DJANGO=2.0.*
47+
- python: 3.8
48+
env: DJANGO=2.1.*
49+
- python: 3.8
50+
env: DJANGO=2.2.*
51+
- python: 3.8
52+
env: DJANGO=3.0.*
53+
- python: 3.8
54+
env: DJANGO=3.1.*
55+
- python: 3.8
56+
env: DJANGO=3.2.*
57+
58+
- python: 3.9
59+
env: DJANGO=2.0.*
60+
- python: 3.9
61+
env: DJANGO=2.1.*
62+
- python: 3.9
63+
env: DJANGO=2.2.*
64+
- python: 3.9
65+
env: DJANGO=3.0.*
66+
- python: 3.9
67+
env: DJANGO=3.1.*
68+
- python: 3.9
69+
env: DJANGO=3.2.*
5170

5271
- os: osx
5372
language: generic
54-
env: DJANGO=3.1.*
73+
env: DJANGO=3.2.*
5574

5675
# Perform the manual steps on OSX to install Python3 and activate venv:
5776
# Since Python versions have been tested on Linux and it is only a matter of

README.rst

+3-3
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Quick start
3636

3737
::
3838

39-
path('admin/log_viewer/', include('log_viewer.urls')),
39+
path('logs/', include('log_viewer.urls')),
4040

4141

4242
4. In your ``settings.py`` file create the following value
@@ -48,7 +48,7 @@ Quick start
4848
LOG_VIEWER_FILES_DIR = os.path.join(BASE_DIR, '../logs')
4949
LOG_VIEWER_MAX_READ_LINES = 1000 # total log lines will be read
5050
LOG_VIEWER_PAGE_LENGTH = 25 # total log lines per-page
51-
LOG_VIEWER_PATTERNS = [']OFNI[', ']GUBED[', ']GNINRAW[', ']RORRE[', ']LACITIRC[']
51+
LOG_VIEWER_PATTERNS = ['[INFO]', '[DEBUG]', '[WARNING]', '[ERROR]', '[CRITICAL]']
5252

5353
# Optionally you can set the next variables in order to customize the admin:
5454

@@ -73,7 +73,7 @@ Quick start
7373
python manage.py collectstatic
7474

7575

76-
7. Start the development server and visit http://127.0.0.1:8000/admin/log_viewer/
76+
7. Start the development server and visit http://127.0.0.1:8000/logs/
7777

7878

7979
.. |pypi version| image:: https://img.shields.io/pypi/v/django-log-viewer.svg

log_viewer/__init__.py

Whitespace-only changes.

log_viewer/locale/en/LC_MESSAGES/django.po

+15-14
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: PACKAGE VERSION\n"
1010
"Report-Msgid-Bugs-To: \n"
11-
"POT-Creation-Date: 2020-10-30 17:54+0700\n"
11+
"POT-Creation-Date: 2021-07-06 21:39+0700\n"
1212
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414
"Language-Team: LANGUAGE <[email protected]>\n"
@@ -18,35 +18,36 @@ msgstr ""
1818
"Content-Transfer-Encoding: 8bit\n"
1919
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
2020

21-
#: templates/log_viewer/logfile_viewer.html:6
22-
msgid "Home"
23-
msgstr ""
24-
25-
#: templates/log_viewer/logfile_viewer.html:8
26-
#: templates/log_viewer/logfile_viewer.html:39
21+
#: templates/log_viewer/logfile_viewer.html:3
22+
#: templates/log_viewer/logfile_viewer.html:9
23+
#: templates/log_viewer/logfile_viewer.html:35
2724
msgid "Django Log Viewer"
2825
msgstr ""
2926

30-
#: templates/log_viewer/logfile_viewer.html:32
31-
msgid "Log Files"
27+
#: templates/log_viewer/logfile_viewer.html:7
28+
msgid "Home"
3229
msgstr ""
3330

34-
#: templates/log_viewer/logfile_viewer.html:41
31+
#: templates/log_viewer/logfile_viewer.html:37
3532
msgid "Download all Log Files"
3633
msgstr ""
3734

38-
#: templates/log_viewer/logfile_viewer.html:42
35+
#: templates/log_viewer/logfile_viewer.html:38
3936
msgid "Download this Log File"
4037
msgstr ""
4138

42-
#: templates/log_viewer/logfile_viewer.html:48
39+
#: templates/log_viewer/logfile_viewer.html:44
4340
msgid "No."
4441
msgstr ""
4542

46-
#: templates/log_viewer/logfile_viewer.html:49
43+
#: templates/log_viewer/logfile_viewer.html:45
4744
msgid "Log entries"
4845
msgstr ""
4946

50-
#: templates/log_viewer/logfile_viewer.html:53
47+
#: templates/log_viewer/logfile_viewer.html:49
5148
msgid "No entries!"
5249
msgstr ""
50+
51+
#: templates/log_viewer/logfile_viewer.html:55
52+
msgid "Log Files"
53+
msgstr ""

log_viewer/locale/id/LC_MESSAGES/django.po

+16-15
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: PACKAGE VERSION\n"
1010
"Report-Msgid-Bugs-To: \n"
11-
"POT-Creation-Date: 2020-10-30 17:54+0700\n"
11+
"POT-Creation-Date: 2021-07-06 21:39+0700\n"
1212
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414
"Language-Team: LANGUAGE <[email protected]>\n"
@@ -18,35 +18,36 @@ msgstr ""
1818
"Content-Transfer-Encoding: 8bit\n"
1919
"Plural-Forms: nplurals=1; plural=0;\n"
2020

21-
#: templates/log_viewer/logfile_viewer.html:6
22-
msgid "Home"
23-
msgstr "Beranda"
24-
25-
#: templates/log_viewer/logfile_viewer.html:8
26-
#: templates/log_viewer/logfile_viewer.html:39
21+
#: templates/log_viewer/logfile_viewer.html:3
22+
#: templates/log_viewer/logfile_viewer.html:9
23+
#: templates/log_viewer/logfile_viewer.html:35
2724
msgid "Django Log Viewer"
2825
msgstr "Penampil Log Django"
2926

30-
#: templates/log_viewer/logfile_viewer.html:32
31-
msgid "Log Files"
32-
msgstr "File log"
27+
#: templates/log_viewer/logfile_viewer.html:7
28+
msgid "Home"
29+
msgstr "Beranda"
3330

34-
#: templates/log_viewer/logfile_viewer.html:41
31+
#: templates/log_viewer/logfile_viewer.html:37
3532
msgid "Download all Log Files"
3633
msgstr "Unduh seluruh File Log"
3734

38-
#: templates/log_viewer/logfile_viewer.html:42
35+
#: templates/log_viewer/logfile_viewer.html:38
3936
msgid "Download this Log File"
4037
msgstr "Unduh File Log ini"
4138

42-
#: templates/log_viewer/logfile_viewer.html:48
39+
#: templates/log_viewer/logfile_viewer.html:44
4340
msgid "No."
4441
msgstr "No."
4542

46-
#: templates/log_viewer/logfile_viewer.html:49
43+
#: templates/log_viewer/logfile_viewer.html:45
4744
msgid "Log entries"
4845
msgstr "Entri log"
4946

50-
#: templates/log_viewer/logfile_viewer.html:53
47+
#: templates/log_viewer/logfile_viewer.html:49
5148
msgid "No entries!"
5249
msgstr "Tidak ada entri!"
50+
51+
#: templates/log_viewer/logfile_viewer.html:55
52+
msgid "Log Files"
53+
msgstr "File log"

log_viewer/settings.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# -*- coding: utf-8 -*-
22
from __future__ import unicode_literals
33

4-
import os
5-
64
from django.conf import settings
75

86
LOG_VIEWER_FILES = getattr(settings, 'LOG_VIEWER_FILES', [])
@@ -12,5 +10,5 @@
1210
LOG_VIEWER_MAX_READ_LINES = getattr(settings, 'LOG_VIEWER_MAX_READ_LINES', 1000)
1311
LOG_VIEWER_FILE_LIST_TITLE = getattr(settings, 'LOG_VIEWER_FILE_LIST_TITLE', None)
1412
LOG_VIEWER_FILE_LIST_STYLES = getattr(settings, 'LOG_VIEWER_FILE_LIST_STYLES', None)
15-
LOG_VIEWER_PATTERNS = getattr(settings, 'LOG_VIEWER_PATTERNS', [']OFNI[', ']GUBED[', ']GNINRAW[',
16-
']RORRE[', ']LACITIRC['])
13+
LOG_VIEWER_PATTERNS = getattr(settings, 'LOG_VIEWER_PATTERNS', ['[INFO]', '[DEBUG]', '[WARNING]',
14+
'[ERROR]', '[CRITICAL]'])

log_viewer/templates/log_viewer/logfile_viewer.html

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{% extends "admin/base_site.html" %}
22
{% load static i18n %}
3+
{% block title %}{% trans "Django Log Viewer" %} - {{ block.super }}{% endblock %}
34

45
{% block breadcrumbs %}
56
<div class="breadcrumbs">
@@ -25,15 +26,10 @@
2526
{% endblock %}
2627

2728
{% block content %}
28-
<div class="django__log__viewer">
29+
<div class="django__log__viewer ">
2930
<div id="content-main">
3031
<div class="module filtered" id="changelist">
31-
<div id="changelist-filter">
32-
<h2>{% trans 'Log Files' %}</h2>
33-
<div id="log-files-list">
34-
</div>
35-
</div>
36-
<form id="changelist-form">
32+
<form id="changelist-form" class="changelist-form-container">
3733
<div class="results">
3834
<div class="headers">
3935
<h1 class="pull-left">{% if custom_file_list_title %}{{ custom_file_list_title }}{% else %}{% trans "Django Log Viewer" %}{% endif %}</h1>
@@ -55,6 +51,11 @@ <h1 class="pull-left">{% if custom_file_list_title %}{{ custom_file_list_title }
5551
</table>
5652
</div>
5753
</form>
54+
<div id="changelist-filter">
55+
<h2>{% trans 'Log Files' %}</h2>
56+
<div id="log-files-list">
57+
</div>
58+
</div>
5859
</div>
5960
</div>
6061
</div>

log_viewer/tests/tests.py

+29-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,34 @@
1-
from django.test import TestCase
1+
from django.urls import reverse
2+
from django.test import TestCase, Client
3+
from django.contrib.auth import get_user_model
24

5+
User = get_user_model()
36

4-
class SimpleTest(TestCase):
7+
8+
class TestLogsViewer(TestCase):
9+
10+
def setUp(self):
11+
self.user = User.objects.create_user(
12+
username='john',
13+
password='Foobar@1234',
14+
is_active=True,
15+
is_staff=True,
16+
is_superuser=True
17+
)
18+
self.client_login = Client()
19+
self.client_login.force_login(self.user)
20+
self.client_anon = Client()
21+
self.url = reverse('log_file_view')
522

623
def test_redirection(self):
7-
response = self.client.get('/')
24+
response = self.client_anon.get(self.url)
825
self.assertEqual(response.status_code, 302)
26+
27+
def test_logs_viewer(self):
28+
# response = self.client_login.get(self.url)
29+
# self.assertEqual(response.status_code, 200)
30+
# self.assertContains(response, 'Django Log Viewer')
31+
# self.assertTemplateUsed(response, 'log_viewer/logfile_viewer.html')
32+
33+
# FIXME: django.urls.exceptions.NoReverseMatch: 'admin' is not a registered namespace
34+
...

log_viewer/utils.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,14 @@ def readlines_reverse(qfile, exclude=''):
2929
"""
3030
Read file lines from bottom to top
3131
"""
32+
# support custom patterns (fixed issue #4)
33+
patterns = settings.LOG_VIEWER_PATTERNS
34+
reversed_patterns = [x[::-1] for x in patterns]
35+
3236
qfile.seek(0, os.SEEK_END)
3337
position = qfile.tell()
3438
line = ''
39+
3540
while position >= 0:
3641
qfile.seek(position)
3742
next_char = qfile.read(1)
@@ -48,10 +53,7 @@ def readlines_reverse(qfile, exclude=''):
4853

4954
# modified
5055
if next_char == '\n' and line:
51-
# support custom patterns (fixed issue #4)
52-
patterns = settings.LOG_VIEWER_PATTERNS
53-
54-
if any([line.endswith(p) for p in patterns]):
56+
if any([line.endswith(p) for p in reversed_patterns]):
5557
if exclude in line[::-1]:
5658
line = ''
5759
else:
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
"""
2+
ASGI config for log_viewer_demo project.
3+
4+
It exposes the ASGI callable as a module-level variable named ``application``.
5+
6+
For more information on this file, see
7+
https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
8+
"""
9+
10+
import os
11+
12+
from django.core.asgi import get_asgi_application
13+
14+
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'log_viewer_demo.settings')
15+
16+
application = get_asgi_application()

0 commit comments

Comments
 (0)