Fix some stuff with logins and permissions, add tags to the mode.

This commit is contained in:
yackob03 2013-09-25 16:46:28 -04:00
parent 744c73509b
commit 08446ef59e
10 changed files with 94 additions and 34 deletions

View file

@ -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