initial work on adding models for starring repos.
I'm sick of using `git stash`.
This commit is contained in:
parent
f3259c862b
commit
eb956e5b7d
5 changed files with 197 additions and 16 deletions
|
@ -2385,3 +2385,54 @@ def archivable_buildlogs_query():
|
|||
.where((RepositoryBuild.phase == BUILD_PHASE.COMPLETE) |
|
||||
(RepositoryBuild.phase == BUILD_PHASE.ERROR) |
|
||||
(RepositoryBuild.started < presumed_dead_date), RepositoryBuild.logs_archived == False))
|
||||
|
||||
|
||||
def star_repository(user, repository):
|
||||
""" Stars a repository. """
|
||||
star = Star.create(user=user.id, repository=repository.id)
|
||||
star.save()
|
||||
|
||||
|
||||
def unstar_repository(user, repository):
|
||||
""" Unstars a repository. """
|
||||
try:
|
||||
star = (Star
|
||||
.select()
|
||||
.join(Repository)
|
||||
.switch(Star)
|
||||
.join(User)
|
||||
.where(Repository.id == repository.id, User.id == user.id)
|
||||
.get())
|
||||
except Star.DoesNotExist:
|
||||
raise DataModelException('Star not found.')
|
||||
|
||||
star.delete_instance()
|
||||
|
||||
|
||||
def get_user_starred_repositories(user, limit=None, page=None):
|
||||
""" Retrieves all of the repositories a user has starred. """
|
||||
query = (Repository
|
||||
.select()
|
||||
.join(Star)
|
||||
.join(User)
|
||||
.where(User.id == user.id)
|
||||
.order_by(Star.created))
|
||||
|
||||
if page and limit:
|
||||
query = query.paginate(page, limit)
|
||||
elif limit:
|
||||
query = query.limit(limit)
|
||||
|
||||
return query
|
||||
|
||||
|
||||
def repository_is_starred(user, repository):
|
||||
""" Determines whether a user has starred a repository or not. """
|
||||
try:
|
||||
(Star
|
||||
.select()
|
||||
.where(Star.repository == repository.id, Star.user == user.id)
|
||||
.get())
|
||||
return True
|
||||
except Star.DoesNotExist:
|
||||
return False
|
||||
|
|
Reference in a new issue