diff --git a/data/database.py b/data/database.py index 82f6c1f01..f90a1d45c 100644 --- a/data/database.py +++ b/data/database.py @@ -574,7 +574,7 @@ class RepositoryKind(BaseModel): class Repository(BaseModel): namespace_user = QuayUserField(null=True) name = FullIndexedCharField(match_function=db_match_func) - visibility = ForeignKeyField(Visibility) + visibility = EnumField(Visibility) description = FullIndexedTextField(match_function=db_match_func, null=True) badge_token = CharField(default=uuid_generator) kind = EnumField(RepositoryKind) diff --git a/data/model/repository.py b/data/model/repository.py index 0ffefdffb..ecb120bf7 100644 --- a/data/model/repository.py +++ b/data/model/repository.py @@ -35,22 +35,25 @@ def get_public_repo_visibility(): def create_repository(namespace, name, creating_user, visibility='private', repo_kind='image', description=None): - private = Visibility.get(name=visibility) 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) + + 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) RepositorySearchScore.create(repository=repo, score=0) if creating_user and not creating_user.organization: + admin = Role.get(name='admin') RepositoryPermission.create(user=creating_user, repository=repo, role=admin) if creating_user.username != namespace: # Permission prototypes only work for orgs permission.apply_default_permissions(repo, creating_user) + return repo