Add ability to pick the dates of the logs viewed

This commit is contained in:
Joseph Schorr 2013-12-09 17:28:23 -05:00
parent 7b38482fd9
commit a3b834cd66
8 changed files with 909 additions and 54 deletions

View file

@ -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]
})