##// END OF EJS Templates
fix(caching): fixed problems with Cache query for users....
fix(caching): fixed problems with Cache query for users. The old way of querying caused the user get query to be always cached, and returning old results even in 2fa forms. The new limited query doesn't cache the user object resolving issues

File last commit:

r5046:0c2a09c8 default
r5365:ae8a165b default
Show More
sidebar.mako
168 lines | 6.8 KiB | application/x-mako | MakoHtmlLexer
## snippet for sidebar elements
## usage:
## <%namespace name="sidebar" file="/base/sidebar.mako"/>
## ${sidebar.comments_table()}
<%namespace name="base" file="/base/base.mako"/>
<%def name="comments_table(comments, counter_num, todo_comments=False, draft_comments=False, existing_ids=None, is_pr=True)">
<%
if todo_comments:
cls_ = 'todos-content-table'
def sorter(entry):
user_id = entry.author.user_id
resolved = '1' if entry.resolved else '0'
if user_id == c.rhodecode_user.user_id:
# own comments first
user_id = 0
return '{}'.format(str(entry.comment_id).zfill(10000))
elif draft_comments:
cls_ = 'drafts-content-table'
def sorter(entry):
return '{}'.format(str(entry.comment_id).zfill(10000))
else:
cls_ = 'comments-content-table'
def sorter(entry):
return '{}'.format(str(entry.comment_id).zfill(10000))
existing_ids = existing_ids or []
%>
<table class="todo-table ${cls_}" data-total-count="${len(comments)}" data-counter="${counter_num}">
% for loop_obj, comment_obj in h.looper(reversed(sorted(comments, key=sorter))):
<%
display = ''
_cls = ''
## Extra precaution to not show drafts in the sidebar for todo/comments
if comment_obj.draft and not draft_comments:
continue
%>
<%
vers = getattr(c, 'versions', [])
comment_ver_index = comment_obj.get_index_version(vers)
prev_comment_ver_index = 0
if loop_obj.previous:
prev_comment_ver_index = loop_obj.previous.get_index_version(vers)
ver_info = None
if vers:
ver_info = c.versions[comment_ver_index-1] if comment_ver_index else None
%>
<% hidden_at_ver = comment_obj.outdated_at_version_js(c.at_version_num) %>
<% is_from_old_ver = comment_obj.older_than_version_js(c.at_version_num) %>
<%
if prev_comment_ver_index > comment_ver_index:
comments_ver_divider = comment_ver_index
else:
comments_ver_divider = None
%>
% if todo_comments:
% if comment_obj.resolved:
<% _cls = 'resolved-todo' %>
<% display = 'none' %>
% endif
% else:
## SKIP TODOs we display them in other area
% if comment_obj.is_todo and not comment_obj.draft:
<% display = 'none' %>
% endif
## Skip outdated comments
% if comment_obj.outdated:
<% display = 'none' %>
<% _cls = 'hidden-comment' %>
% endif
% endif
% if not todo_comments and comments_ver_divider:
<tr class="old-comments-marker">
<td colspan="3">
% if ver_info:
<code>v${comments_ver_divider} ${h.age_component(ver_info.created_on, time_is_local=True, tooltip=False)}</code>
% else:
<code>v${comments_ver_divider}</code>
% endif
</td>
</tr>
% endif
<tr class="${_cls}" style="display: ${display};" data-sidebar-comment-id="${comment_obj.comment_id}">
% if draft_comments:
<td style="width: 15px;">
${h.checkbox('submit_draft', id=None, value=comment_obj.comment_id)}
</td>
% endif
<td class="td-todo-number">
<%
version_info = ''
if is_pr:
version_info = (' made in older version (v{})'.format(comment_ver_index) if is_from_old_ver == 'true' else ' made in this version')
%>
## new comments, since refresh
% if existing_ids and comment_obj.comment_id not in existing_ids:
<div class="tooltip" style="position: absolute; left: 8px; color: #682668" title="New comment">
!
</div>
% endif
<%
data = h.str_json({
'comment_id': comment_obj.comment_id,
'version_info': version_info,
'file_name': comment_obj.f_path,
'line_no': comment_obj.line_no,
'outdated': comment_obj.outdated,
'inline': comment_obj.is_inline,
'is_todo': comment_obj.is_todo,
'created_on': h.format_date(comment_obj.created_on),
'datetime': '{}{}'.format(comment_obj.created_on, h.get_timezone(comment_obj.created_on, time_is_local=True)),
'review_status': (comment_obj.review_status or '')
})
icon = ''
if comment_obj.outdated:
icon += ' icon-comment-toggle'
elif comment_obj.is_inline:
icon += ' icon-code'
else:
icon += ' icon-comment'
if comment_obj.draft:
if comment_obj.is_todo:
icon = 'icon-flag-filled icon-draft'
else:
icon = 'icon-comment icon-draft'
%>
<i id="commentHovercard${comment_obj.comment_id}"
class="${icon} tooltip-hovercard"
data-hovercard-url="javascript:sidebarComment(${comment_obj.comment_id})"
data-comment-json-b64='${h.b64(data)}'>
</i>
</td>
<td class="td-todo-gravatar">
${base.gravatar(comment_obj.author.email, 16, user=comment_obj.author, tooltip=True, extra_class=['no-margin'])}
</td>
<td class="todo-comment-text-wrapper">
<div class="todo-comment-text ${('todo-resolved' if comment_obj.resolved else '')}">
<a class="${('todo-resolved' if comment_obj.resolved else '')} permalink"
href="#comment-${comment_obj.comment_id}"
onclick="return Rhodecode.comments.scrollToComment($('#comment-${comment_obj.comment_id}'), 0, ${hidden_at_ver})">
${h.chop_at_smart(comment_obj.text, '\n', suffix_if_chopped='...')}
</a>
</div>
</td>
</tr>
% endfor
</table>
</%def>