From 8464b54ad93b3d4a710c65c3db4b493bca714c6f Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Tue, 30 Dec 2014 15:07:14 -0500 Subject: [PATCH] star status shown in normal repo listings --- endpoints/api/repository.py | 21 ++++++++++++--------- endpoints/api/user.py | 9 ++++++++- static/js/controllers.js | 4 ++++ static/partials/repo-list.html | 5 +++-- test/data/test.db | Bin 257024 -> 257024 bytes 5 files changed, 27 insertions(+), 12 deletions(-) diff --git a/endpoints/api/repository.py b/endpoints/api/repository.py index 9302f26a0..12d4fef44 100644 --- a/endpoints/api/repository.py +++ b/endpoints/api/repository.py @@ -112,6 +112,8 @@ class RepositoryList(ApiResource): username = None if get_authenticated_user() and args['private']: 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 = {} @@ -124,6 +126,16 @@ class RepositoryList(ApiResource): repo_query = model.get_visible_repositories(username, limit=args['limit'], page=args['page'], include_public=args['public'], sort=args['sort'], 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 if (repo.visibility.name == 'public' or @@ -133,15 +145,6 @@ class RepositoryList(ApiResource): 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/') @path_param('repository', 'The full path of the repository. e.g. namespace/name') class Repository(RepositoryParamResource): diff --git a/endpoints/api/user.py b/endpoints/api/user.py index 1d12d84b6..cddca5b93 100644 --- a/endpoints/api/user.py +++ b/endpoints/api/user.py @@ -15,7 +15,6 @@ from endpoints.api import (ApiResource, nickname, resource, validate_json_reques from endpoints.api.subscribe import subscribe from endpoints.common import common_login from endpoints.api.team import try_accept_invite -from endpoints.api.repository import repo_view from data import model from data.billing import get_plan @@ -702,6 +701,14 @@ class StarredRepositoryList(ApiResource): starred_repos = list(model.get_user_starred_repositories(get_authenticated_user(), page=page, 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]} @require_scope(scopes.READ_REPO) diff --git a/static/js/controllers.js b/static/js/controllers.js index bce9928d6..6cd17c30c 100644 --- a/static/js/controllers.js +++ b/static/js/controllers.js @@ -262,8 +262,10 @@ function RepoListCtrl($scope, $sanitize, Restangular, UserService, ApiService) { }; ApiService.createStar(data).then(function(result) { loadStarredRepos(); + loadRepos(); }, function(result) { loadStarredRepos(); + loadRepos(); }); }; @@ -273,8 +275,10 @@ function RepoListCtrl($scope, $sanitize, Restangular, UserService, ApiService) { }; ApiService.deleteStar(null, data).then(function(result) { loadStarredRepos(); + loadRepos(); }, function(result) { loadStarredRepos(); + loadRepos(); }); }; diff --git a/static/partials/repo-list.html b/static/partials/repo-list.html index 312995e30..fff1c966b 100644 --- a/static/partials/repo-list.html +++ b/static/partials/repo-list.html @@ -96,7 +96,7 @@
-
+
@@ -106,7 +106,8 @@
- + +
diff --git a/test/data/test.db b/test/data/test.db index 0dea8501f9ef5c530ff9594cc6f9265ea189bdd4..94762ac06ecba290290fc61220753a9ab4de18d0 100644 GIT binary patch delta 722 zcma))O=uHQ6oucrXKH@OYOM=@XvQGLg`Lby62}BYq@eh-5X60JP1D#m2}z`gh|NMo zXuu*kv^zl%!9^jBLu)~b=q7GNv;{Q~6+|sm6cyWmz9i61Hu4sCanAehefOR5<@WLA z_M5x7HMzT&Tlv0HAHP%d-~#ioZiX4wZFy(;&cprWV6Gi}_-r;YnjVSKnMP4Ev2-e% z$fYuuRAnfaOJ}2jKs=Efx_C|T;ZdBZ)5Q$~ql9wpmdVuYSuSEC6JaOJ8V2>PhT)>J9t5_1iG9Ke8 zKH~%4p@_Nq3j}Nux0FK?b;|afhfYdeG9{Vl_XKxw4TCs_eQ?niD$@fhP*QxuDY6P3 zbp0LsAj0t6QKTSgC7QMMQ)O6~PNm zwiJr!AVhnq)z(njML`@&g`%h(#8$BAP%47HWYp=v`F?*nr(;za{>og$6TpZzr=up8lmV( zG?R9{b~n?W?r>bUkj)j+`IPJC{B*|Qs!;cZm&$kgey8tHRq!3*6+AbU&G}g`|9+dK zw6e%7ZD^h@(X3d46i0*Bz?r}mE^$_B>^nehNGhTzszcfTKPl#fG}Z*xtiGlNO!tM& z@(Y&c(+%}BX_N(a@eO5M;~y??g5%W|ep6*-a92d*qo`!IPV&289Wj50sK#uDx%+{} z2Z3|^2rg{lGrr;!zp!r;5jGV$<2;sjBgVZlp?ON+7+>%f;}}3M9zpSM-r^;m3SRk~ j&2XHx*%>2c4&$sQ7UOIe