Skip to content
Snippets Groups Projects
Commit 6deafbc4 authored by Martin Mareš's avatar Martin Mareš
Browse files

Zobrazování logu (zatím pouze pro admina)

parent a5f5cf00
Branches
No related tags found
No related merge requests found
...@@ -211,6 +211,7 @@ import mo.web.misc ...@@ -211,6 +211,7 @@ import mo.web.misc
import mo.web.org import mo.web.org
import mo.web.org_contest import mo.web.org_contest
import mo.web.org_jobs import mo.web.org_jobs
import mo.web.org_log
import mo.web.org_place import mo.web.org_place
import mo.web.org_round import mo.web.org_round
import mo.web.org_score import mo.web.org_score
......
# Konfigurace Jinjových šablon a pomocné funkce # Konfigurace Jinjových šablon a pomocné funkce
from flask import url_for from flask import url_for
import json
from markupsafe import Markup from markupsafe import Markup
from typing import Any from typing import Any
...@@ -69,3 +70,13 @@ def pion_link(u: db.User, contest_id: int) -> Markup: ...@@ -69,3 +70,13 @@ def pion_link(u: db.User, contest_id: int) -> Markup:
@app.template_filter() @app.template_filter()
def or_dash(s: Any) -> str: def or_dash(s: Any) -> str:
return str(s) if s else '' return str(s) if s else ''
@app.template_filter()
def json_pretty(js: Any) -> str:
return json.dumps(js, sort_keys=True, indent=4, ensure_ascii=False)
@app.template_global()
def log_url(typ: str, id: int) -> str:
return url_for('org_log', typ=typ, id=id)
from flask import render_template, g
from sqlalchemy.orm import joinedload
import werkzeug.exceptions
import mo.db as db
from mo.web import app
@app.route('/org/log/<typ>/<int:id>/')
def org_log(typ: str, id: int):
if not g.user.is_admin:
raise werkzeug.exceptions.Forbidden()
if not hasattr(db.LogType, typ):
raise werkzeug.exceptions.NotFound()
log_type = getattr(db.LogType, typ)
sess = db.get_session()
logs = (sess.query(db.Log)
.filter_by(type=log_type, id=id)
.options(joinedload(db.Log.user))
.order_by(db.Log.changed_at.desc())
.all())
return render_template('org_log.html', type=log_type, id=id, logs=logs)
{% extends "base.html" %}
{% block title %}Log: {{ type.name }} #{{ id }}{% endblock %}
{% block body %}
<table class='data'>
{% for log in logs %}
<tr>
<td style='white-space: nowrap'>{{ log.changed_at|timeformat }}
<td>{% if log.user %}{{ log.user|user_link }}{% else %}systém{% endif %}
<td style='white-space: pre'>{{ log.details|json_pretty }}
{% endfor %}
</table>
{% endblock %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment