star status shown in normal repo listings
This commit is contained in:
parent
17751eced9
commit
8464b54ad9
5 changed files with 27 additions and 12 deletions
|
@ -112,6 +112,8 @@ class RepositoryList(ApiResource):
|
||||||
username = None
|
username = None
|
||||||
if get_authenticated_user() and args['private']:
|
if get_authenticated_user() and args['private']:
|
||||||
username = get_authenticated_user().username
|
username = get_authenticated_user().username
|
||||||
|
starred_repos = model.get_user_starred_repositories(get_authenticated_user())
|
||||||
|
star_lookup = set([repo.id for repo in starred_repos])
|
||||||
|
|
||||||
response = {}
|
response = {}
|
||||||
|
|
||||||
|
@ -124,6 +126,16 @@ class RepositoryList(ApiResource):
|
||||||
repo_query = model.get_visible_repositories(username, limit=args['limit'], page=args['page'],
|
repo_query = model.get_visible_repositories(username, limit=args['limit'], page=args['page'],
|
||||||
include_public=args['public'], sort=args['sort'],
|
include_public=args['public'], sort=args['sort'],
|
||||||
namespace=args['namespace'])
|
namespace=args['namespace'])
|
||||||
|
def repo_view(repo_obj):
|
||||||
|
repo = {
|
||||||
|
'namespace': repo_obj.namespace_user.username,
|
||||||
|
'name': repo_obj.name,
|
||||||
|
'description': repo_obj.description,
|
||||||
|
'is_public': repo_obj.visibility.name == 'public',
|
||||||
|
}
|
||||||
|
if get_authenticated_user():
|
||||||
|
repo['is_starred'] = repo_obj.id in star_lookup
|
||||||
|
return repo
|
||||||
|
|
||||||
response['repositories'] = [repo_view(repo) for repo in repo_query
|
response['repositories'] = [repo_view(repo) for repo in repo_query
|
||||||
if (repo.visibility.name == 'public' or
|
if (repo.visibility.name == 'public' or
|
||||||
|
@ -133,15 +145,6 @@ class RepositoryList(ApiResource):
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
def repo_view(repo_obj):
|
|
||||||
return {
|
|
||||||
'namespace': repo_obj.namespace_user.username,
|
|
||||||
'name': repo_obj.name,
|
|
||||||
'description': repo_obj.description,
|
|
||||||
'is_public': repo_obj.visibility.name == 'public',
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@resource('/v1/repository/<repopath:repository>')
|
@resource('/v1/repository/<repopath:repository>')
|
||||||
@path_param('repository', 'The full path of the repository. e.g. namespace/name')
|
@path_param('repository', 'The full path of the repository. e.g. namespace/name')
|
||||||
class Repository(RepositoryParamResource):
|
class Repository(RepositoryParamResource):
|
||||||
|
|
|
@ -15,7 +15,6 @@ from endpoints.api import (ApiResource, nickname, resource, validate_json_reques
|
||||||
from endpoints.api.subscribe import subscribe
|
from endpoints.api.subscribe import subscribe
|
||||||
from endpoints.common import common_login
|
from endpoints.common import common_login
|
||||||
from endpoints.api.team import try_accept_invite
|
from endpoints.api.team import try_accept_invite
|
||||||
from endpoints.api.repository import repo_view
|
|
||||||
|
|
||||||
from data import model
|
from data import model
|
||||||
from data.billing import get_plan
|
from data.billing import get_plan
|
||||||
|
@ -702,6 +701,14 @@ class StarredRepositoryList(ApiResource):
|
||||||
starred_repos = list(model.get_user_starred_repositories(get_authenticated_user(),
|
starred_repos = list(model.get_user_starred_repositories(get_authenticated_user(),
|
||||||
page=page,
|
page=page,
|
||||||
limit=limit))
|
limit=limit))
|
||||||
|
def repo_view(repo_obj):
|
||||||
|
return {
|
||||||
|
'namespace': repo_obj.namespace_user.username,
|
||||||
|
'name': repo_obj.name,
|
||||||
|
'description': repo_obj.description,
|
||||||
|
'is_public': repo_obj.visibility.name == 'public',
|
||||||
|
}
|
||||||
|
|
||||||
return {'repositories': [repo_view(repo) for repo in starred_repos]}
|
return {'repositories': [repo_view(repo) for repo in starred_repos]}
|
||||||
|
|
||||||
@require_scope(scopes.READ_REPO)
|
@require_scope(scopes.READ_REPO)
|
||||||
|
|
|
@ -262,8 +262,10 @@ function RepoListCtrl($scope, $sanitize, Restangular, UserService, ApiService) {
|
||||||
};
|
};
|
||||||
ApiService.createStar(data).then(function(result) {
|
ApiService.createStar(data).then(function(result) {
|
||||||
loadStarredRepos();
|
loadStarredRepos();
|
||||||
|
loadRepos();
|
||||||
}, function(result) {
|
}, function(result) {
|
||||||
loadStarredRepos();
|
loadStarredRepos();
|
||||||
|
loadRepos();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -273,8 +275,10 @@ function RepoListCtrl($scope, $sanitize, Restangular, UserService, ApiService) {
|
||||||
};
|
};
|
||||||
ApiService.deleteStar(null, data).then(function(result) {
|
ApiService.deleteStar(null, data).then(function(result) {
|
||||||
loadStarredRepos();
|
loadStarredRepos();
|
||||||
|
loadRepos();
|
||||||
}, function(result) {
|
}, function(result) {
|
||||||
loadStarredRepos();
|
loadStarredRepos();
|
||||||
|
loadRepos();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12" ng-repeat="repository in namespace.repositories.value">
|
<div class="col-lg-4 col-md-6 col-sm-6 col-xs-12" ng-repeat="repository in namespace.repositories.value">
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-body">
|
<div class="panel-body" ng-class="repository.is_starred ? 'starred' : ''">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-10 repo-panel-title-row">
|
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-10 repo-panel-title-row">
|
||||||
<span class="repo-icon repo-circle no-background" repo="repository"></span>
|
<span class="repo-icon repo-circle no-background" repo="repository"></span>
|
||||||
|
@ -106,7 +106,8 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
|
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
|
||||||
<i class="star-icon fa fa-star-o" ng-click="starRepo(repository)"></i>
|
<i ng-if="repository.is_starred" class="star-icon starred fa fa-star" ng-click="unstarRepo(repository)"></i>
|
||||||
|
<i ng-if="!repository.is_starred" class="star-icon fa fa-star-o" ng-click="starRepo(repository)"></i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- The description automatically gets put in a <p> which adds margin that throws off our .repo-panel padding -->
|
<!-- The description automatically gets put in a <p> which adds margin that throws off our .repo-panel padding -->
|
||||||
|
|
Binary file not shown.
Reference in a new issue