Fix some stuff with logins and permissions, add tags to the mode.
This commit is contained in:
parent
744c73509b
commit
08446ef59e
10 changed files with 94 additions and 34 deletions
|
@ -1,8 +1,7 @@
|
|||
import bcrypt
|
||||
import logging
|
||||
|
||||
from database import (User, Repository, Image, RepositoryImage, AccessToken,
|
||||
RepositoryPermission, Visibility, Role)
|
||||
from database import *
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -111,6 +110,52 @@ def get_repository_images(namespace_name, repository_name):
|
|||
Repository.namespace == namespace_name)
|
||||
|
||||
|
||||
def list_repository_tags(namespace_name, repository_name):
|
||||
select = RepositoryTag.select(RepositoryTag, Image)
|
||||
with_repo = select.join(Repository)
|
||||
with_image = with_repo.switch(RepositoryTag).join(Image)
|
||||
return joined.where(Repository.name == repository_name and
|
||||
Repository.namespace == namespace_name)
|
||||
|
||||
|
||||
def get_tag_image(namespace_name, repository_name, tag_name):
|
||||
joined = Image.select().join(RepositoryTag).join(Repository)
|
||||
return joined.where(Repository.name == repository_name and
|
||||
Repository.namespace == namespace_name and
|
||||
RepositoryTag.name == tag_name)
|
||||
|
||||
|
||||
def create_or_update_tag(namespace_name, repository_name, tag_name,
|
||||
tag_image_id):
|
||||
repo = Repository.get(Repository.name == name and
|
||||
Repository.namespace == namespace)
|
||||
image = Image.get(Image.image_id == tag_image_id)
|
||||
|
||||
try:
|
||||
tag = RepositoryTag.get(RepositoryTag.repository == repo and
|
||||
RepositoryTag.tag_name == tag_name)
|
||||
tag.image = image
|
||||
tag.save()
|
||||
except RepositoryTag.DoesNotExist:
|
||||
tag = RepositoryTag.create(repository=repo, image=image, name=tag_name)
|
||||
|
||||
return tag
|
||||
|
||||
|
||||
def delete_tag(namespace_name, repository_name, tag_name):
|
||||
repo = Repository.get(Repository.name == name and
|
||||
Repository.namespace == namespace)
|
||||
tag = RepositoryTag.get(RepositoryTag.repository == repo and
|
||||
RepositoryTag.tag_name == tag_name)
|
||||
tag.delete_instance()
|
||||
|
||||
|
||||
def delete_all_repository_tags(namespace_name, repository_name):
|
||||
repo = Repository.get(Repository.name == name and
|
||||
Repository.namespace == namespace)
|
||||
RepositoryTag.delete().where(RepositoryTag.repository == repo)
|
||||
|
||||
|
||||
def create_access_token(repository, user):
|
||||
new_token = AccessToken.create(user=user, repository=repository)
|
||||
return new_token
|
||||
|
|
Reference in a new issue