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

This commit is contained in:
jakedt 2014-03-04 16:59:54 -05:00
commit 2af3d24557
16 changed files with 228 additions and 34 deletions

View file

@ -1117,7 +1117,8 @@ def get_repo(namespace, repository):
'can_admin': can_admin,
'is_public': is_public,
'is_building': len(list(active_builds)) > 0,
'is_organization': bool(organization)
'is_organization': bool(organization),
'status_token': repo.badge_token if not is_public else ''
})
abort(404) # Not found

View file

@ -1,5 +1,6 @@
import logging
import stripe
import os
from flask import (abort, redirect, request, url_for, make_response, Response,
Blueprint)
@ -13,7 +14,7 @@ from util.invoice import renderInvoiceToPdf
from util.seo import render_snapshot
from util.cache import no_cache
from endpoints.common import common_login, render_page_template
from util.names import parse_repository_name
logger = logging.getLogger(__name__)
@ -196,3 +197,39 @@ def confirm_recovery():
return redirect(url_for('web.user'))
else:
abort(403)
@web.route('/repository/<path:repository>/status', methods=['GET'])
@parse_repository_name
@no_cache
def build_status_badge(namespace, repository):
token = request.args.get('token', None)
is_public = model.repository_is_public(namespace, repository)
if not is_public:
repo = model.get_repository(namespace, repository)
if not repo or token != repo.badge_token:
abort(404)
# Lookup the tags for the repository.
tags = model.list_repository_tags(namespace, repository)
# Lookup the current/recent build.
status = 'none'
build = model.get_recent_repository_build(namespace, repository)
if build:
if build.phase == 'error':
status = 'failed'
elif build.phase == 'complete':
pass
else:
status = 'building'
else:
if list(tags):
status = 'ready'
with open(os.path.join(app.root_path, 'buildstatus', status + '.svg')) as f:
svg = f.read()
response = make_response(svg)
response.content_type = 'image/svg+xml'
return response