From aa7b1996f50b0861af51913faca48385f01f90aa Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Sat, 17 Oct 2026 20:17:52 +0200 Subject: also show fietscron logs in admin view --- fietsboek/scripts/fietscron.py | 5 +- fietsboek/templates/admin_logs.jinja2 | 102 +++++++++++++++++++++++----------- fietsboek/views/admin.py | 12 +++- 3 files changed, 85 insertions(+), 34 deletions(-) diff --git a/fietsboek/scripts/fietscron.py b/fietsboek/scripts/fietscron.py index c9bb9dd..57ba820 100644 --- a/fietsboek/scripts/fietscron.py +++ b/fietsboek/scripts/fietscron.py @@ -1,6 +1,7 @@ """Script to do maintenance actions for fietsboek.""" import datetime +import json import logging import logging.config @@ -13,7 +14,7 @@ from sqlalchemy.engine import Engine from sqlalchemy.orm import Session from .. import config as mod_config -from .. import hittekaart, models, osm, trackmap +from .. import hittekaart, log, models, osm, trackmap from ..config import Config from ..data import DataManager from ..models import get_engine @@ -41,6 +42,7 @@ def cli(config): * Finds names for climbs not yet named """ logging.config.fileConfig(config) + log.install() settings = pyramid.paster.get_appsettings(config) config = mod_config.parse(settings) @@ -67,6 +69,7 @@ def cli(config): run_hittekaart(engine, data_manager, redis, config) redis.set("last-cronjob", datetime.datetime.now(datetime.UTC).timestamp()) + redis.set("last-cronjob:log", json.dumps([line.as_dict() for line in log.HANDLER.buffer])) def remove_old_uploads(engine: Engine): diff --git a/fietsboek/templates/admin_logs.jinja2 b/fietsboek/templates/admin_logs.jinja2 index ac3f956..fad0cab 100644 --- a/fietsboek/templates/admin_logs.jinja2 +++ b/fietsboek/templates/admin_logs.jinja2 @@ -1,46 +1,86 @@ {% set admin_index = 2 %} {% extends "admin.jinja2" %} {% block admin_content %} -
- Filter: - -
-
- - {% for entry in entries %} - - - - - - - - {% endfor %} -
{{ entry.time }}{{ entry.level_name }}{{ entry.name }}:{{ entry.lineno }}{{ entry.thread }}{{ entry.message }}
+ +
+
+
+ Filter: + +
+
+ + {% for entry in entries %} + + + + + + + + {% endfor %} +
{{ entry.time }}{{ entry.level_name }}{{ entry.name }}:{{ entry.lineno }}{{ entry.thread }}{{ entry.message }}
+
+
+
+
+ Filter: + +
+
+ + {% for entry in entries_fietscron %} + + + + + + + + {% endfor %} +
{{ entry.time }}{{ entry.level_name }}{{ entry.name }}:{{ entry.lineno }}{{ entry.thread }}{{ entry.message }}
+
+
{% endblock %} {% block latescripts %} {% endblock %} diff --git a/fietsboek/views/admin.py b/fietsboek/views/admin.py index 3385d3e..0f741a3 100644 --- a/fietsboek/views/admin.py +++ b/fietsboek/views/admin.py @@ -1,6 +1,7 @@ """Admin views.""" import datetime +import json import platform import stat from dataclasses import dataclass @@ -153,12 +154,19 @@ def admin(request: Request): renderer="fietsboek:templates/admin_logs.jinja2", permission="admin", ) -def admin_logs(_request: Request): +def admin_logs(request: Request): """Renders the admin logs overview. :param request: The pyramid request. """ - return {"entries": log.HANDLER.buffer} + entries_fc_json = request.redis.get("last-cronjob:log") + entries_fc = [] + if entries_fc_json is not None: + entries_fc = json.loads(entries_fc_json) + return { + "entries": log.HANDLER.buffer, + "entries_fietscron": entries_fc, + } @view_config( -- cgit v1.2.3