Add ability to pick the dates of the logs viewed
This commit is contained in:
parent
7b38482fd9
commit
a3b834cd66
8 changed files with 909 additions and 54 deletions
|
@ -742,24 +742,6 @@ def update_repo_api(namespace, repository):
|
|||
abort(403)
|
||||
|
||||
|
||||
@app.route('/api/repository/<path:repository>/logs', methods=['GET'])
|
||||
@api_login_required
|
||||
@parse_repository_name
|
||||
def repo_logs_api(namespace, repository):
|
||||
permission = AdministerRepositoryPermission(namespace, repository)
|
||||
if permission.can():
|
||||
repo = model.get_repository(namespace, repository)
|
||||
if not repo:
|
||||
abort(404)
|
||||
|
||||
logs = model.list_logs(namespace, repository = repo)
|
||||
return jsonify({
|
||||
'logs': [log_view(log) for log in logs]
|
||||
})
|
||||
|
||||
abort(403)
|
||||
|
||||
|
||||
@app.route('/api/repository/<path:repository>/changevisibility',
|
||||
methods=['POST'])
|
||||
@api_login_required
|
||||
|
@ -1751,22 +1733,66 @@ def log_view(log):
|
|||
|
||||
return view
|
||||
|
||||
|
||||
|
||||
@app.route('/api/repository/<path:repository>/logs', methods=['GET'])
|
||||
@api_login_required
|
||||
@parse_repository_name
|
||||
def repo_logs_api(namespace, repository):
|
||||
permission = AdministerRepositoryPermission(namespace, repository)
|
||||
if permission.can():
|
||||
repo = model.get_repository(namespace, repository)
|
||||
if not repo:
|
||||
abort(404)
|
||||
|
||||
start_time = request.args.get('starttime', None)
|
||||
end_time = request.args.get('endtime', None)
|
||||
return get_logs(namespace, start_time, end_time, repository=repo)
|
||||
|
||||
abort(403)
|
||||
|
||||
|
||||
@app.route('/api/organization/<orgname>/logs', methods=['GET'])
|
||||
@api_login_required
|
||||
def org_logs_api(orgname):
|
||||
permission = AdministerOrganizationPermission(orgname)
|
||||
if permission.can():
|
||||
performer_name = request.args.get('performer', None)
|
||||
performer = None
|
||||
if performer_name:
|
||||
performer = model.get_user(performer_name)
|
||||
start_time = request.args.get('starttime', None)
|
||||
end_time = request.args.get('endtime', None)
|
||||
|
||||
week_ago = datetime.today() - timedelta(7) # One week
|
||||
logs = model.list_logs(orgname, week_ago, performer = performer)
|
||||
return jsonify({
|
||||
'start_time': week_ago,
|
||||
'logs': [log_view(log) for log in logs]
|
||||
})
|
||||
return get_logs(orgname, start_time, end_time, performer_name=performer_name)
|
||||
|
||||
abort(403)
|
||||
|
||||
|
||||
def get_logs(namespace, start_time, end_time, performer_name=None, repository=None):
|
||||
performer = None
|
||||
if performer_name:
|
||||
performer = model.get_user(performer_name)
|
||||
|
||||
if start_time:
|
||||
try:
|
||||
start_time = datetime.strptime(start_time, '%m/%d/%Y')
|
||||
except ValueError:
|
||||
start_time = None
|
||||
|
||||
if not start_time:
|
||||
start_time = datetime.today() - timedelta(7) # One week
|
||||
|
||||
if end_time:
|
||||
try:
|
||||
end_time = datetime.strptime(end_time, '%m/%d/%Y')
|
||||
except ValueError:
|
||||
end_time = None
|
||||
|
||||
if not end_time:
|
||||
end_time = datetime.today()
|
||||
|
||||
logs = model.list_logs(namespace, start_time, end_time, performer = performer, repository=repository)
|
||||
return jsonify({
|
||||
'start_time': start_time,
|
||||
'end_time': end_time,
|
||||
'logs': [log_view(log) for log in logs]
|
||||
})
|
||||
|
||||
|
|
Reference in a new issue