Full add public repository support.
This commit is contained in:
parent
d50a5d83f8
commit
b718dbc6e3
5 changed files with 39 additions and 32 deletions
|
@ -96,8 +96,8 @@ def get_token(code):
|
|||
return AccessToken.get(AccessToken.code == code)
|
||||
|
||||
|
||||
def get_matching_repositories(repo_term, username=None):
|
||||
query = Repository.select().distinct().limit(10).join(Visibility)
|
||||
def get_visible_repositories(username=None):
|
||||
query = Repository.select().distinct().join(Visibility)
|
||||
or_clauses = [(Visibility.name == 'public')]
|
||||
|
||||
if username:
|
||||
|
@ -106,12 +106,17 @@ def get_matching_repositories(repo_term, username=None):
|
|||
query = with_perms.join(User)
|
||||
or_clauses.append(User.username == username)
|
||||
|
||||
return query.where(reduce(operator.or_, or_clauses))
|
||||
|
||||
|
||||
def get_matching_repositories(repo_term, username=None):
|
||||
visible = get_visible_repositories(username)
|
||||
search_clauses = (Repository.name ** ('%' + repo_term + '%') |
|
||||
Repository.namespace ** ('%' + repo_term + '%') |
|
||||
Repository.description ** ('%' + repo_term + '%'))
|
||||
|
||||
|
||||
final = query.where(search_clauses).where(reduce(operator.or_, or_clauses))
|
||||
final = visible.where(search_clauses).limit(10)
|
||||
return list(final)
|
||||
|
||||
|
||||
|
@ -144,20 +149,20 @@ def get_all_repo_users(namespace_name, repository_name):
|
|||
Repository.name == repository_name)
|
||||
|
||||
|
||||
def get_repository(namespace, name):
|
||||
def get_repository(namespace_name, repository_name):
|
||||
try:
|
||||
return Repository.get(Repository.name == name,
|
||||
Repository.namespace == namespace)
|
||||
return Repository.get(Repository.name == repository_name,
|
||||
Repository.namespace == namespace_name)
|
||||
except Repository.DoesNotExist:
|
||||
return None
|
||||
|
||||
|
||||
def get_user_repositories(user):
|
||||
select = RepositoryPermission.select(RepositoryPermission, Repository, Role)
|
||||
with_user = select.join(User).where(User.username == user.username)
|
||||
with_role = with_user.switch(RepositoryPermission).join(Role)
|
||||
with_repo = with_role.switch(RepositoryPermission).join(Repository)
|
||||
return with_repo
|
||||
def repository_is_public(namespace_name, repository_name):
|
||||
joined = Repository.select().join(Visibility)
|
||||
query = joined.where(Repository.namespace == namespace_name,
|
||||
Repository.name == repository_name,
|
||||
Visibility.name == 'public')
|
||||
return len(list(query)) > 0
|
||||
|
||||
|
||||
def create_repository(namespace, name, owner):
|
||||
|
|
Reference in a new issue