# HG changeset patch # User Ross Thomas # Date 2020-02-12 14:37:15 # Node ID 173612a900efae31bb338ae8fd108658a5d4ca9e # Parent 51af7c12ffb12c9fcc7791ff593a76121f046324 ui: show toggleable "Follow" status in repo groups' repo list It makes sense to show Follow status next to repo names in the repo list, and it is a meaningful and efficient bulk operation to toggle Follow status there. Clicking on the (Un)Follow 'heart' will toggle the caller's follow status for that repo. The repo model already has layering violations - expand on them to compute the follow status of the current user. (Changeset was cherry picked and modified by Mads Kiilerich.) diff --git a/kallithea/model/repo.py b/kallithea/model/repo.py --- a/kallithea/model/repo.py +++ b/kallithea/model/repo.py @@ -138,12 +138,16 @@ class RepoModel(object): admin: return data for action column. """ _render = self._render_datatable - from tg import tmpl_context as c + from tg import tmpl_context as c, request + from kallithea.model.scm import ScmModel def repo_lnk(name, rtype, rstate, private, fork_of): return _render('repo_name', name, rtype, rstate, private, fork_of, short_name=short_name) + def following(repo_id, is_following): + return _render('following', repo_id, is_following) + def last_change(last_change): return _render("last_change", last_change) @@ -188,6 +192,10 @@ class RepoModel(object): "just_name": repo.just_name, "name": repo_lnk(repo.repo_name, repo.repo_type, repo.repo_state, repo.private, repo.fork), + "following": following( + repo.repo_id, + ScmModel().is_following_repo(repo.repo_name, request.authuser.user_id), + ), "last_change_iso": repo.last_db_change.isoformat(), "last_change": last_change(repo.last_db_change), "last_changeset": last_rev(repo.repo_name, cs_cache), diff --git a/kallithea/templates/data_table/_dt_elements.html b/kallithea/templates/data_table/_dt_elements.html --- a/kallithea/templates/data_table/_dt_elements.html +++ b/kallithea/templates/data_table/_dt_elements.html @@ -31,6 +31,12 @@ +<%def name="following(repo_id, repo_following)"> + %if request.authuser.username != 'default': + + %endif + + <%def name="last_change(last_change)"> ${h.age(last_change)} diff --git a/kallithea/templates/index_base.html b/kallithea/templates/index_base.html --- a/kallithea/templates/index_base.html +++ b/kallithea/templates/index_base.html @@ -55,6 +55,7 @@ return row.just_name; } }}, + {data: "following", defaultContent: '', sortable: false}, {data: "desc", title: ${h.jshtml(_('Description'))}, searchable: false}, {data: "last_change_iso", defaultContent: '', visible: false, searchable: false}, {data: "last_change", defaultContent: '', title: ${h.jshtml(_('Last Change'))}, orderData: [3,], searchable: false},