##// 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:

r4373:702c378c stable
r5365:ae8a165b default
Show More
search_content.mako
165 lines | 6.5 KiB | application/x-mako | MakoHtmlLexer
<%namespace name="search" file="/search/search.mako"/>
<%def name="highlight_text_file(has_matched_content, file_content, lexer, html_formatter, matching_lines, shown_matching_lines, url, use_hl_filter)">
% if has_matched_content:
${h.code_highlight(file_content, lexer, html_formatter, use_hl_filter=use_hl_filter)|n}
% else:
${_('No content matched')} <br/>
% endif
%if len(matching_lines) > shown_matching_lines:
<a href="${url}">
${len(matching_lines) - shown_matching_lines} ${_('more matches in this file')}
</a>
%endif
</%def>
<div class="search-results">
<% query_mark = c.searcher.query_to_mark(c.cur_query, 'content') %>
%for entry in c.formatted_results:
<%
file_content = entry['content_highlight'] or entry['content']
mimetype = entry.get('mimetype')
filepath = entry.get('path')
max_lines = h.safe_int(request.GET.get('max_lines', '10'))
line_context = h.safe_int(request.GET.get('line_contenxt', '3'))
match_file_url=h.route_path('repo_files',repo_name=entry['repository'], commit_id=entry.get('commit_id', 'tip'),f_path=entry['f_path'], _query={"mark": query_mark})
terms = c.cur_query
if c.searcher.is_es_6:
# use empty terms so we default to markers usage
total_lines, matching_lines = h.get_matching_line_offsets(file_content, terms=None)
else:
total_lines, matching_lines = h.get_matching_line_offsets(file_content, terms)
shown_matching_lines = 0
lines_of_interest = set()
for line_number in matching_lines:
if len(lines_of_interest) < max_lines:
lines_of_interest |= set(range(
max(line_number - line_context, 0),
min(line_number + line_context, total_lines + 1)))
shown_matching_lines += 1
lexer = h.get_lexer_safe(mimetype=mimetype, filepath=filepath)
html_formatter = h.SearchContentCodeHtmlFormatter(
linenos=True,
cssclass="code-highlight",
url=match_file_url,
query_terms=terms,
only_line_numbers=lines_of_interest
)
has_matched_content = len(lines_of_interest) >= 1
%>
## search results are additionally filtered, and this check is just a safe gate
% if c.rhodecode_user.is_admin or h.HasRepoPermissionAny('repository.write','repository.read','repository.admin')(entry['repository'], 'search results content check'):
<div class="codeblock">
<h1>
<% repo_type = entry.get('repo_type') or h.get_repo_type_by_name(entry.get('repository')) %>
${search.repo_icon(repo_type)}
${h.link_to(entry['repository'], h.route_path('repo_summary', repo_name=entry['repository']))}
</h1>
<div class="codeblock-header">
<div class="file-filename">
<i class="icon-file"></i> ${entry['f_path'].split('/')[-1]}
</div>
<div class="file-stats">
<div class="stats-info">
<span class="stats-first-item">
${entry.get('lines', 0.)} ${_ungettext('line', 'lines', entry.get('lines', 0.))}
(${len(matching_lines)} ${_ungettext('matched', 'matched', len(matching_lines))})
</span>
<span>
% if entry.get('size'):
| ${h.format_byte_size_binary(entry['size'])}
% endif
</span>
<span>
% if entry.get('mimetype'):
| ${entry.get('mimetype', "unknown mimetype")}
% endif
</span>
</div>
</div>
</div>
<div class="path clear-fix">
<div class="pull-left">
${h.files_breadcrumbs(entry['repository'], repo_type, entry.get('commit_id', 'tip'), entry['f_path'], linkify_last_item=True)}
</div>
<div class="pull-right stats">
## <a id="file_history_overview_full" href="${h.route_path('repo_commits_file',repo_name=entry.get('repository',''),commit_id=entry.get('commit_id', 'tip'),f_path=entry.get('f_path',''))}">
## ${_('Show Full History')}
## </a>
## | ${h.link_to(_('Annotation'), h.route_path('repo_files:annotated', repo_name=entry.get('repository',''),commit_id=entry.get('commit_id', 'tip'),f_path=entry.get('f_path','')))}
## | ${h.link_to(_('Raw'), h.route_path('repo_file_raw', repo_name=entry.get('repository',''),commit_id=entry.get('commit_id', 'tip'),f_path=entry.get('f_path','')))}
<div class="search-tags">
<% repo_group = entry.get('repository_group')%>
## hiden if in repo group view
% if repo_group and not c.repo_group_name:
<span class="tag tag8">
${search.repo_group_icon()}
<a href="${h.route_path('search_repo_group', repo_group_name=repo_group, _query={'q': c.cur_query})}">${_('Narrow to this repository group')}</a>
</span>
% endif
## hiden if in repo view
% if not c.repo_name:
<span class="tag tag8">
${search.repo_icon(repo_type)}
<a href="${h.route_path('search_repo', repo_name=entry.get('repo_name'), _query={'q': c.cur_query})}">${_('Narrow to this repository')}</a>
</span>
% endif
</div>
</div>
<div class="clear-fix"></div>
</div>
<div class="code-body search-code-body clear-fix">
${highlight_text_file(
has_matched_content=has_matched_content,
file_content=file_content,
lexer=lexer,
html_formatter=html_formatter,
matching_lines=matching_lines,
shown_matching_lines=shown_matching_lines,
url=match_file_url,
use_hl_filter=c.searcher.is_es_6
)}
</div>
</div>
% endif
%endfor
</div>
%if c.cur_query and c.formatted_results:
<div class="pagination-wh pagination-left" >
${c.formatted_results.render()}
</div>
%endif
%if c.cur_query:
<script type="text/javascript">
$(function(){
$(".search-code-body").mark(
"${query_mark}",
{
"className": 'match',
"accuracy": "complementary",
"ignorePunctuation": ":._(){}[]!'+=".split("")
}
);
})
</script>
%endif