Files
notifications-admin/app/main/views/history.py
T

42 lines
1.3 KiB
Python
Raw Normal View History

2019-10-18 16:43:52 +01:00
from collections import defaultdict
2019-10-23 15:05:26 +01:00
from operator import attrgetter
2019-10-18 16:43:52 +01:00
2019-10-21 13:16:48 +01:00
from flask import render_template, request
2019-10-18 09:18:51 +01:00
2019-10-18 16:43:52 +01:00
from app import current_service, format_date_numeric
from app.enums import ServicePermission
2019-10-18 09:18:51 +01:00
from app.main import main
from app.models.event import APIKeyEvent, APIKeyEvents, ServiceEvents
2021-06-09 13:19:05 +01:00
from app.utils.user import user_has_permissions
2019-10-18 09:18:51 +01:00
2019-11-04 11:07:55 +00:00
@main.route("/services/<uuid:service_id>/history")
@user_has_permissions(ServicePermission.MANAGE_SERVICE)
2019-10-18 09:18:51 +01:00
def history(service_id):
events = _get_events(current_service.id, request.args.get("selected"))
2019-10-18 16:43:52 +01:00
return render_template(
"views/temp-history.html",
days=_chunk_events_by_day(events),
show_navigation=request.args.get("selected")
or any(isinstance(event, APIKeyEvent) for event in events),
user_getter=current_service.active_users.get_name_from_id,
2019-10-18 16:43:52 +01:00
)
2019-10-21 13:16:48 +01:00
def _get_events(service_id, selected):
if selected == "api":
2019-10-21 13:16:48 +01:00
return APIKeyEvents(service_id)
if selected == "service":
2019-10-21 13:16:48 +01:00
return ServiceEvents(service_id)
2019-10-21 12:14:41 +01:00
return APIKeyEvents(service_id) + ServiceEvents(service_id)
2019-10-18 16:43:52 +01:00
def _chunk_events_by_day(events):
days = defaultdict(list)
for event in sorted(events, key=attrgetter("time"), reverse=True):
2019-10-18 16:43:52 +01:00
days[format_date_numeric(event.time)].append(event)
return sorted(days.items(), reverse=True)