diff --git a/rhodecode/model/scm.py b/rhodecode/model/scm.py --- a/rhodecode/model/scm.py +++ b/rhodecode/model/scm.py @@ -29,6 +29,7 @@ import logging import cStringIO from sqlalchemy import func +from pylons.i18n.translation import _ from rhodecode.lib.vcs import get_backend from rhodecode.lib.vcs.exceptions import RepositoryError @@ -472,3 +473,33 @@ class ScmModel(BaseModel): def get_unread_journal(self): return self.sa.query(UserLog).count() + + def get_repo_landing_revs(self, repo=None): + """ + Generates select option with tags branches and bookmarks (for hg only) + grouped by type + + :param repo: + :type repo: + """ + hist_l = [] + repo = self.__get_repo(repo) + hist_l.append(['tip', _('latest tip')]) + if not repo: + return hist_l + + repo = repo.scm_instance + branches_group = ([(k, k) for k, v in + repo.branches.iteritems()], _("Branches")) + hist_l.append(branches_group) + + if repo.alias == 'hg': + bookmarks_group = ([(k, k) for k, v in + repo.bookmarks.iteritems()], _("Bookmarks")) + hist_l.append(bookmarks_group) + + tags_group = ([(k, k) for k, v in + repo.tags.iteritems()], _("Tags")) + hist_l.append(tags_group) + + return hist_l