refs: refactored references code to remove any pylons elements.

- now uses pure pyramid style without usage of any pylons globals
This commit is contained in:
Marcin Kuzminski 2017-07-08 15:28:40 +02:00
parent 7178db58ba
commit ef1f17e46a
7 changed files with 31 additions and 20 deletions

View file

@ -26,7 +26,6 @@ from pyramid.httpexceptions import HTTPFound
from rhodecode.lib import helpers as h
from rhodecode.lib.utils2 import StrictAttributeDict, safe_int, datetime_to_time
from rhodecode.lib.vcs.exceptions import RepositoryRequirementError
from rhodecode.lib.ext_json import json
from rhodecode.model import repo
from rhodecode.model import repo_group
from rhodecode.model.db import User
@ -218,28 +217,35 @@ class BaseReferencesView(RepoAppView):
return c
def load_refs_context(self, ref_items, partials_template):
_data = []
_render = self.request.get_partial_renderer(partials_template)
pre_load = ["author", "date", "message"]
is_svn = h.is_svn(self.rhodecode_vcs_repo)
is_hg = h.is_hg(self.rhodecode_vcs_repo)
format_ref_id = get_format_ref_id(self.rhodecode_vcs_repo)
closed_refs = {}
if is_hg:
closed_refs = self.rhodecode_vcs_repo.branches_closed
data = []
for ref_name, commit_id in ref_items:
commit = self.rhodecode_vcs_repo.get_commit(
commit_id=commit_id, pre_load=pre_load)
closed = ref_name in closed_refs
# TODO: johbo: Unify generation of reference links
use_commit_id = '/' in ref_name or is_svn
files_url = h.url(
'files_home',
repo_name=c.repo_name,
repo_name=self.db_repo_name,
f_path=ref_name if is_svn else '',
revision=commit_id if use_commit_id else ref_name,
at=ref_name)
_data.append({
"name": _render('name', ref_name, files_url),
data.append({
"name": _render('name', ref_name, files_url, closed),
"name_raw": ref_name,
"date": _render('date', commit.date),
"date_raw": datetime_to_time(commit.date),
@ -250,8 +256,8 @@ class BaseReferencesView(RepoAppView):
"compare": _render(
'compare', format_ref_id(ref_name, commit.raw_id)),
})
c.has_references = bool(_data)
c.data = json.dumps(_data)
return data
class RepoRoutePredicate(object):

View file

@ -23,8 +23,10 @@ from pyramid.httpexceptions import HTTPNotFound
from pyramid.view import view_config
from rhodecode.apps._base import BaseReferencesView
from rhodecode.lib.auth import (LoginRequired, HasRepoPermissionAnyDecorator)
from rhodecode.lib.ext_json import json
from rhodecode.lib import helpers as h
from rhodecode.lib.auth import (LoginRequired, HasRepoPermissionAnyDecorator)
log = logging.getLogger(__name__)
@ -44,7 +46,9 @@ class RepoBookmarksView(BaseReferencesView):
raise HTTPNotFound()
ref_items = self.rhodecode_vcs_repo.bookmarks.items()
self.load_refs_context(
data = self.load_refs_context(
ref_items=ref_items, partials_template='bookmarks/bookmarks_data.mako')
c.has_references = bool(data)
c.data = json.dumps(data)
return self._get_template_context(c)

View file

@ -22,6 +22,7 @@ import logging
from pyramid.view import view_config
from rhodecode.apps._base import BaseReferencesView
from rhodecode.lib.ext_json import json
from rhodecode.lib.auth import (LoginRequired, HasRepoPermissionAnyDecorator)
@ -38,14 +39,11 @@ class RepoBranchesView(BaseReferencesView):
renderer='rhodecode:templates/branches/branches.mako')
def branches(self):
c = self.load_default_context()
c.closed_branches = self.rhodecode_vcs_repo.branches_closed
# NOTE(marcink):
# we need this trick because of PartialRenderer still uses the
# global 'c', we might not need this after full pylons migration
self._register_global_c(c)
ref_items = self.rhodecode_vcs_repo.branches_all.items()
self.load_refs_context(
data = self.load_refs_context(
ref_items=ref_items, partials_template='branches/branches_data.mako')
c.has_references = bool(data)
c.data = json.dumps(data)
return self._get_template_context(c)

View file

@ -22,6 +22,7 @@ import logging
from pyramid.view import view_config
from rhodecode.apps._base import BaseReferencesView
from rhodecode.lib.ext_json import json
from rhodecode.lib.auth import (LoginRequired, HasRepoPermissionAnyDecorator)
log = logging.getLogger(__name__)
@ -39,7 +40,9 @@ class RepoTagsView(BaseReferencesView):
c = self.load_default_context()
ref_items = self.rhodecode_vcs_repo.tags.items()
self.load_refs_context(
data = self.load_refs_context(
ref_items=ref_items, partials_template='tags/tags_data.mako')
c.has_references = bool(data)
c.data = json.dumps(data)
return self._get_template_context(c)

View file

@ -9,7 +9,7 @@
</%def>
<%def name="name(name, files_url)">
<%def name="name(name, files_url, closed)">
<span class="tag booktag" title="${h.tooltip(_('Bookmark %s') % (name,))}">
<a href="${files_url}">
<i class="icon-bookmark"></i>

View file

@ -8,10 +8,10 @@
<input class="compare-radio-button" type="radio" name="compare_target" value="${commit_id}"/>
</%def>
<%def name="name(name, files_url)">
<%def name="name(name, files_url, closed)">
<span class="tag branchtag" title="${h.tooltip(_('Branch %s') % (name,))}">
<a href="${files_url}"><i class="icon-code-fork"></i>${name}
%if name in c.closed_branches:
%if closed:
[closed]
%endif
</a>

View file

@ -8,7 +8,7 @@
<input class="compare-radio-button" type="radio" name="compare_target" value="${commit_id}"/>
</%def>
<%def name="name(name, files_url)">
<%def name="name(name, files_url, closed)">
<span class="tagtag tag" title="${h.tooltip(_('Tag %s') % (name,))}">
<a href="${files_url}"><i class="icon-tag"></i>${name}</a>
</span>