Start on UI for Quay
This commit is contained in:
parent
9278871381
commit
27ce5c00b2
10 changed files with 258 additions and 17 deletions
|
@ -7,6 +7,8 @@ from functools import wraps
|
|||
from data import model
|
||||
from app import app
|
||||
from util.names import parse_repository_name
|
||||
from auth.permissions import (ReadRepositoryPermission,
|
||||
ModifyRepositoryPermission)
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -23,6 +25,7 @@ def create_repo_api():
|
|||
pass
|
||||
|
||||
|
||||
|
||||
@app.route('/api/repository/', methods=['GET'])
|
||||
@login_required
|
||||
def list_repos_api():
|
||||
|
@ -46,11 +49,59 @@ def list_repos_api():
|
|||
@login_required
|
||||
@parse_repository_name
|
||||
def update_repo_api(namespace, repository):
|
||||
pass
|
||||
permission = ModifyRepositoryPermission(namespace, repository)
|
||||
if permission.can():
|
||||
repo = model.get_repository(namespace, repository)
|
||||
if repo:
|
||||
values = request.get_json()
|
||||
repo.description = values['description']
|
||||
repo.save()
|
||||
return jsonify({
|
||||
'success': True
|
||||
})
|
||||
|
||||
abort(404)
|
||||
|
||||
|
||||
@app.route('/api/repository/<path:repository>', methods=['GET'])
|
||||
@login_required
|
||||
@parse_repository_name
|
||||
def get_repo_api(namespace, repository):
|
||||
pass
|
||||
def image_view(image):
|
||||
return {
|
||||
'id': image.image_id,
|
||||
'created': image.created,
|
||||
'comment': image.comment
|
||||
}
|
||||
|
||||
def tag_view(tag):
|
||||
image = model.get_tag_image(namespace, repository, tag.name)
|
||||
if not image:
|
||||
return {}
|
||||
|
||||
return {
|
||||
'name': tag.name,
|
||||
'image': image_view(image)
|
||||
}
|
||||
|
||||
def repo_view(repository, tags = []):
|
||||
tag_list = []
|
||||
for tag in tags:
|
||||
tag_list.append(tag_view(tag))
|
||||
|
||||
return {
|
||||
'namespace': repository.namespace,
|
||||
'name': repository.name,
|
||||
'description': repository.description,
|
||||
'tags': tag_list,
|
||||
'can_write': ModifyRepositoryPermission(repository.namespace, repository.name).can()
|
||||
}
|
||||
|
||||
permission = ReadRepositoryPermission(namespace, repository)
|
||||
if permission.can():
|
||||
repo = model.get_repository(namespace, repository)
|
||||
if repo:
|
||||
tags = model.list_repository_tags(namespace, repository)
|
||||
return jsonify(repo_view(repo, tags = tags))
|
||||
|
||||
abort(404)
|
||||
|
|
Reference in a new issue