Merge remote-tracking branch 'origin/master' into rustedbuilds

Conflicts:
	test/data/test.db
This commit is contained in:
jakedt 2014-02-18 16:13:34 -05:00
commit ed38bcdafc
17 changed files with 1116 additions and 694 deletions

View file

@ -1117,7 +1117,7 @@ def get_repo(namespace, repository):
abort(403) # Permission denied
def build_status_view(build_obj):
def build_status_view(build_obj, can_write=False):
status = build_logs.get_status(build_obj.uuid)
return {
'id': build_obj.uuid,
@ -1125,7 +1125,8 @@ def build_status_view(build_obj):
'started': build_obj.started,
'display_name': build_obj.display_name,
'status': status,
'resource_key': build_obj.resource_key
'resource_key': build_obj.resource_key if can_write else None,
'is_writer': can_write
}
@ -1135,9 +1136,10 @@ def get_repo_builds(namespace, repository):
permission = ReadRepositoryPermission(namespace, repository)
is_public = model.repository_is_public(namespace, repository)
if permission.can() or is_public:
can_write = ModifyRepositoryPermission(namespace, repository).can()
builds = model.list_repository_builds(namespace, repository)
return jsonify({
'builds': [build_status_view(build) for build in builds]
'builds': [build_status_view(build, can_write) for build in builds]
})
abort(403) # Permission denied
@ -1151,7 +1153,29 @@ def get_repo_build_status(namespace, repository, build_uuid):
is_public = model.repository_is_public(namespace, repository)
if permission.can() or is_public:
build = model.get_repository_build(namespace, repository, build_uuid)
return jsonify(build_status_view(build))
if not build:
abort(404)
can_write = ModifyRepositoryPermission(namespace, repository).can()
return jsonify(build_status_view(build, can_write))
abort(403) # Permission denied
@api.route('/repository/<path:repository>/build/<build_uuid>/archiveurl',
methods=['GET'])
@parse_repository_name
def get_repo_build_archive_url(namespace, repository, build_uuid):
permission = ModifyRepositoryPermission(namespace, repository)
if permission.can():
build = model.get_repository_build(namespace, repository, build_uuid)
if not build:
abort(404)
url = user_files.get_file_url(build.resource_key)
return jsonify({
'url': url
})
abort(403) # Permission denied
@ -1217,7 +1241,7 @@ def request_repo_build(namespace, repository):
{'repo': repository, 'namespace': namespace,
'fileid': dockerfile_id}, repo=repo)
resp = jsonify(build_status_view(build_request))
resp = jsonify(build_status_view(build_request, True))
repo_string = '%s/%s' % (namespace, repository)
resp.headers['Location'] = url_for('api.get_repo_build_status',
repository=repo_string,