Add feature flag to enable viewing builds and build logs for public repos

This commit is contained in:
Joseph Schorr 2017-08-07 15:24:36 -04:00
parent 0359ac8753
commit dff4207a89
6 changed files with 18 additions and 6 deletions

View file

@ -8,6 +8,8 @@ import os
from flask import request
from urlparse import urlparse
import features
from app import userfiles as user_files, build_logs, log_archive, dockerfile_build_queue
from auth.permissions import (ReadRepositoryPermission, ModifyRepositoryPermission,
AdministerRepositoryPermission, AdministerOrganizationPermission,
@ -147,7 +149,7 @@ def build_status_view(build_obj):
'error': error,
}
if can_write:
if can_write or features.READER_BUILD_LOGS:
if build_obj.resource_key is not None:
resp['archive_url'] = user_files.get_file_url(build_obj.resource_key, requires_cors=True)
elif job_config.get('archive_url', None):
@ -424,11 +426,15 @@ def get_logs_or_log_url(build):
@path_param('build_uuid', 'The UUID of the build')
class RepositoryBuildLogs(RepositoryParamResource):
""" Resource for loading repository build logs. """
@require_repo_write
@require_repo_read
@nickname('getRepoBuildLogs')
@disallow_for_app_repositories
def get(self, namespace, repository, build_uuid):
""" Return the build logs for the build specified by the build uuid. """
can_write = ModifyRepositoryPermission(namespace, repository).can()
if not features.READER_BUILD_LOGS and not can_write:
raise Unauthorized()
build = model.build.get_repository_build(build_uuid)
if (not build or build.repository.name != repository or
build.repository.namespace_user.username != namespace):