Merge pull request #3372 from quay/small-exception-fixes

Small exception fixes
This commit is contained in:
Joseph Schorr 2019-02-18 14:59:46 -05:00 committed by GitHub
commit 66ddf66fb0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 2 deletions

5
app.py
View file

@ -11,6 +11,7 @@ from flask_login import LoginManager
from flask_mail import Mail from flask_mail import Mail
from flask_principal import Principal from flask_principal import Principal
from jwkest.jwk import RSAKey from jwkest.jwk import RSAKey
from werkzeug.exceptions import HTTPException
import features import features
@ -143,7 +144,11 @@ FILTERED_VALUES = [
@app.after_request @app.after_request
def _request_end(resp): def _request_end(resp):
try:
jsonbody = request.get_json(force=True, silent=True) jsonbody = request.get_json(force=True, silent=True)
except HTTPException:
jsonbody = None
values = request.values.to_dict() values = request.values.to_dict()
if jsonbody and not isinstance(jsonbody, dict): if jsonbody and not isinstance(jsonbody, dict):

View file

@ -8,11 +8,18 @@ from endpoints.exception import NotFound
def image_dict(image, with_history=False, with_tags=False): def image_dict(image, with_history=False, with_tags=False):
parsed_command = None
if image.command:
try:
parsed_command = json.loads(image.command)
except (ValueError, TypeError):
parsed_command = {'error': 'Could not parse command'}
image_data = { image_data = {
'id': image.docker_image_id, 'id': image.docker_image_id,
'created': format_date(image.created), 'created': format_date(image.created),
'comment': image.comment, 'comment': image.comment,
'command': json.loads(image.command) if image.command else None, 'command': parsed_command,
'size': image.image_size, 'size': image.image_size,
'uploading': image.uploading, 'uploading': image.uploading,
'sort_index': len(image.parents), 'sort_index': len(image.parents),

View file

@ -843,6 +843,10 @@ def redirect_to_repository(namespace_name, repo_name, tag_name):
@process_oauth @process_oauth
@anon_protect @anon_protect
def redirect_to_namespace(namespace): def redirect_to_namespace(namespace):
okay, _ = model.user.validate_username(namespace)
if not okay:
abort(404)
user_or_org = model.user.get_user_or_org(namespace) user_or_org = model.user.get_user_or_org(namespace)
if not user_or_org: if not user_or_org:
abort(404) abort(404)