Reduce the number of DB queries for creating a repo
This commit is contained in:
parent
1e1bec0afe
commit
3f99e864e1
2 changed files with 9 additions and 6 deletions
|
@ -574,7 +574,7 @@ class RepositoryKind(BaseModel):
|
||||||
class Repository(BaseModel):
|
class Repository(BaseModel):
|
||||||
namespace_user = QuayUserField(null=True)
|
namespace_user = QuayUserField(null=True)
|
||||||
name = FullIndexedCharField(match_function=db_match_func)
|
name = FullIndexedCharField(match_function=db_match_func)
|
||||||
visibility = ForeignKeyField(Visibility)
|
visibility = EnumField(Visibility)
|
||||||
description = FullIndexedTextField(match_function=db_match_func, null=True)
|
description = FullIndexedTextField(match_function=db_match_func, null=True)
|
||||||
badge_token = CharField(default=uuid_generator)
|
badge_token = CharField(default=uuid_generator)
|
||||||
kind = EnumField(RepositoryKind)
|
kind = EnumField(RepositoryKind)
|
||||||
|
|
|
@ -35,22 +35,25 @@ def get_public_repo_visibility():
|
||||||
|
|
||||||
def create_repository(namespace, name, creating_user, visibility='private', repo_kind='image',
|
def create_repository(namespace, name, creating_user, visibility='private', repo_kind='image',
|
||||||
description=None):
|
description=None):
|
||||||
private = Visibility.get(name=visibility)
|
|
||||||
namespace_user = User.get(username=namespace)
|
namespace_user = User.get(username=namespace)
|
||||||
repo = Repository.create(name=name, visibility=private, namespace_user=namespace_user,
|
|
||||||
kind=Repository.kind.get_id(repo_kind), description=description)
|
|
||||||
admin = Role.get(name='admin')
|
|
||||||
|
|
||||||
yesterday = datetime.now() - timedelta(days=1)
|
yesterday = datetime.now() - timedelta(days=1)
|
||||||
|
|
||||||
|
repo = Repository.create(name=name, visibility=Repository.visibility.get_id(visibility),
|
||||||
|
namespace_user=namespace_user,
|
||||||
|
kind=Repository.kind.get_id(repo_kind),
|
||||||
|
description=description)
|
||||||
|
|
||||||
RepositoryActionCount.create(repository=repo, count=0, date=yesterday)
|
RepositoryActionCount.create(repository=repo, count=0, date=yesterday)
|
||||||
RepositorySearchScore.create(repository=repo, score=0)
|
RepositorySearchScore.create(repository=repo, score=0)
|
||||||
|
|
||||||
if creating_user and not creating_user.organization:
|
if creating_user and not creating_user.organization:
|
||||||
|
admin = Role.get(name='admin')
|
||||||
RepositoryPermission.create(user=creating_user, repository=repo, role=admin)
|
RepositoryPermission.create(user=creating_user, repository=repo, role=admin)
|
||||||
|
|
||||||
if creating_user.username != namespace:
|
if creating_user.username != namespace:
|
||||||
# Permission prototypes only work for orgs
|
# Permission prototypes only work for orgs
|
||||||
permission.apply_default_permissions(repo, creating_user)
|
permission.apply_default_permissions(repo, creating_user)
|
||||||
|
|
||||||
return repo
|
return repo
|
||||||
|
|
||||||
|
|
||||||
|
|
Reference in a new issue