Fix logs view and API
- We needed to use an engine-agnostic way to extract the days - Joining with the LogEntryKind table has *horrible* performance in MySQL, so do it ourselves - Limit to 50 logs per page
This commit is contained in:
parent
d480a204f5
commit
d34afde954
3 changed files with 39 additions and 14 deletions
|
@ -14,11 +14,11 @@ from data import model
|
|||
from auth import scopes
|
||||
from app import avatar
|
||||
|
||||
LOGS_PER_PAGE = 500
|
||||
LOGS_PER_PAGE = 50
|
||||
|
||||
def log_view(log):
|
||||
def log_view(log, kinds):
|
||||
view = {
|
||||
'kind': log.kind.name,
|
||||
'kind': kinds[log.kind_id],
|
||||
'metadata': json.loads(log.metadata_json),
|
||||
'ip': log.ip,
|
||||
'datetime': format_date(log.datetime),
|
||||
|
@ -34,9 +34,9 @@ def log_view(log):
|
|||
|
||||
return view
|
||||
|
||||
def aggregated_log_view(log):
|
||||
def aggregated_log_view(log, kinds):
|
||||
view = {
|
||||
'kind': log.kind.name,
|
||||
'kind': kinds[log.kind_id],
|
||||
'count': log.count,
|
||||
'datetime': format_date(log.datetime)
|
||||
}
|
||||
|
@ -73,13 +73,14 @@ def _validate_logs_arguments(start_time, end_time, performer_name):
|
|||
def get_logs(start_time, end_time, performer_name=None, repository=None, namespace=None, page=None):
|
||||
(start_time, end_time, performer) = _validate_logs_arguments(start_time, end_time, performer_name)
|
||||
page = page if page else 1
|
||||
kinds = model.log.get_log_entry_kinds()
|
||||
logs = model.log.list_logs(start_time, end_time, performer=performer, repository=repository,
|
||||
namespace=namespace, page=page, count=LOGS_PER_PAGE + 1)
|
||||
|
||||
return {
|
||||
'start_time': format_date(start_time),
|
||||
'end_time': format_date(end_time),
|
||||
'logs': [log_view(log) for log in logs[0:LOGS_PER_PAGE]],
|
||||
'logs': [log_view(log, kinds) for log in logs[0:LOGS_PER_PAGE]],
|
||||
'page': page,
|
||||
'has_additional': len(logs) > LOGS_PER_PAGE,
|
||||
}
|
||||
|
@ -87,11 +88,12 @@ def get_logs(start_time, end_time, performer_name=None, repository=None, namespa
|
|||
def get_aggregate_logs(start_time, end_time, performer_name=None, repository=None, namespace=None):
|
||||
(start_time, end_time, performer) = _validate_logs_arguments(start_time, end_time, performer_name)
|
||||
|
||||
kinds = model.log.get_log_entry_kinds()
|
||||
aggregated_logs = model.log.get_aggregated_logs(start_time, end_time, performer=performer,
|
||||
repository=repository, namespace=namespace)
|
||||
|
||||
return {
|
||||
'aggregated': [aggregated_log_view(log) for log in aggregated_logs]
|
||||
'aggregated': [aggregated_log_view(log, kinds) for log in aggregated_logs]
|
||||
}
|
||||
|
||||
|
||||
|
|
Reference in a new issue