Changeset View
Changeset View
Standalone View
Standalone View
swh/web/browse/views/utils/snapshot_context.py
Show All 11 Lines | |||||
from django.template.defaultfilters import filesizeformat | from django.template.defaultfilters import filesizeformat | ||||
from swh.model.identifiers import snapshot_identifier | from swh.model.identifiers import snapshot_identifier | ||||
from swh.web.browse.utils import ( | from swh.web.browse.utils import ( | ||||
get_snapshot_context, get_directory_entries, gen_directory_link, | get_snapshot_context, get_directory_entries, gen_directory_link, | ||||
gen_revision_link, request_content, gen_content_link, | gen_revision_link, request_content, gen_content_link, | ||||
prepare_content_for_display, content_display_max_size, | prepare_content_for_display, content_display_max_size, | ||||
prepare_revision_log_for_display, gen_snapshot_directory_link, | format_log_entries, gen_revision_log_link, gen_link, | ||||
gen_revision_log_link, gen_link, get_readme_to_display, | get_readme_to_display, get_swh_persistent_ids, process_snapshot_branches | ||||
get_swh_persistent_ids, process_snapshot_branches | |||||
) | ) | ||||
from swh.web.common import service | from swh.web.common import service | ||||
from swh.web.common.exc import ( | from swh.web.common.exc import ( | ||||
handle_view_exception, NotFoundExc | handle_view_exception, NotFoundExc | ||||
) | ) | ||||
from swh.web.common.utils import ( | from swh.web.common.utils import ( | ||||
reverse, gen_path_info, format_utc_iso_date, swh_object_icons | reverse, gen_path_info, format_utc_iso_date, swh_object_icons | ||||
▲ Show 20 Lines • Show All 590 Lines • ▼ Show 20 Lines | def browse_snapshot_log(request, snapshot_id=None, origin_type=None, | ||||
""" | """ | ||||
try: | try: | ||||
snapshot_context = _process_snapshot_request(request, snapshot_id, | snapshot_context = _process_snapshot_request(request, snapshot_id, | ||||
origin_type, origin_url, | origin_type, origin_url, | ||||
timestamp, browse_context='log') # noqa | timestamp, browse_context='log') # noqa | ||||
revision_id = snapshot_context['revision_id'] | revision_id = snapshot_context['revision_id'] | ||||
current_rev = revision_id | |||||
per_page = int(request.GET.get('per_page', PER_PAGE)) | |||||
revs_breadcrumb = request.GET.get('revs_breadcrumb', None) | |||||
if revs_breadcrumb: | per_page = int(request.GET.get('per_page', PER_PAGE)) | ||||
current_rev = revs_breadcrumb.split('/')[-1] | offset = int(request.GET.get('offset', 0)) | ||||
revision_log = [] | revs_ordering = request.GET.get('revs_ordering', 'committer_date') | ||||
if current_rev: | session_key = 'rev_%s_log_ordering_%s' % (revision_id, revs_ordering) | ||||
revision_log = list(service.lookup_revision_log(current_rev, | rev_log_session = request.session.get(session_key, None) | ||||
limit=per_page+1)) | rev_log = [] | ||||
revs_walker_state = None | |||||
if rev_log_session: | |||||
rev_log = rev_log_session['rev_log'] | |||||
revs_walker_state = rev_log_session['revs_walker_state'] | |||||
if len(rev_log) < offset+per_page: | |||||
revs_walker = \ | |||||
service.get_revisions_walker(revs_ordering, | |||||
revision_id, | |||||
max_revs=offset+per_page+1, | |||||
state=revs_walker_state) | |||||
rev_log += list(revs_walker) | |||||
revs_walker_state = revs_walker.export_state() | |||||
revision_log = rev_log[offset:offset+per_page] | |||||
request.session[session_key] = { | |||||
'rev_log': rev_log, | |||||
'revs_walker_state': revs_walker_state | |||||
} | |||||
except Exception as exc: | except Exception as exc: | ||||
return handle_view_exception(request, exc) | return handle_view_exception(request, exc) | ||||
swh_type = snapshot_context['swh_type'] | swh_type = snapshot_context['swh_type'] | ||||
origin_info = snapshot_context['origin_info'] | origin_info = snapshot_context['origin_info'] | ||||
visit_info = snapshot_context['visit_info'] | visit_info = snapshot_context['visit_info'] | ||||
url_args = snapshot_context['url_args'] | url_args = snapshot_context['url_args'] | ||||
query_params = snapshot_context['query_params'] | query_params = snapshot_context['query_params'] | ||||
snapshot_id = snapshot_context['snapshot_id'] | snapshot_id = snapshot_context['snapshot_id'] | ||||
query_params['per_page'] = per_page | query_params['per_page'] = per_page | ||||
revs_ordering = request.GET.get('revs_ordering', '') | |||||
revision_log_data = [] | query_params['revs_ordering'] = revs_ordering | ||||
next_log_url = '' | |||||
prev_log_url = '' | |||||
if revision_log: | |||||
revision_log_display_data = prepare_revision_log_for_display( | |||||
revision_log, per_page, revs_breadcrumb, snapshot_context) | |||||
browse_view_name = 'browse-' + swh_type + '-log' | browse_view_name = 'browse-' + swh_type + '-log' | ||||
prev_rev = revision_log_display_data['prev_rev'] | |||||
prev_revs_breadcrumb = revision_log_display_data['prev_revs_breadcrumb'] # noqa | |||||
prev_log_url = None | prev_log_url = None | ||||
query_params['revs_breadcrumb'] = prev_revs_breadcrumb | if len(rev_log) > offset + per_page: | ||||
if prev_rev: | query_params['offset'] = offset + per_page | ||||
prev_log_url = \ | prev_log_url = reverse(browse_view_name, | ||||
reverse(browse_view_name, | |||||
url_args=url_args, | url_args=url_args, | ||||
query_params=query_params) | query_params=query_params) | ||||
next_rev = revision_log_display_data['next_rev'] | |||||
next_revs_breadcrumb = revision_log_display_data['next_revs_breadcrumb'] # noqa | |||||
next_log_url = None | next_log_url = None | ||||
query_params['revs_breadcrumb'] = next_revs_breadcrumb | if offset != 0: | ||||
if next_rev: | query_params['offset'] = offset - per_page | ||||
next_log_url = \ | next_log_url = reverse(browse_view_name, | ||||
reverse(browse_view_name, | |||||
url_args=url_args, | url_args=url_args, | ||||
query_params=query_params) | query_params=query_params) | ||||
revision_log_data = revision_log_display_data['revision_log_data'] | revision_log_data = format_log_entries(revision_log, per_page, | ||||
snapshot_context) | |||||
for i, log in enumerate(revision_log_data): | |||||
params = { | |||||
'revision': revision_log[i]['id'], | |||||
} | |||||
if 'visit_id' in query_params: | |||||
params['visit_id'] = query_params['visit_id'] | |||||
log['directory'] = gen_snapshot_directory_link( | |||||
snapshot_context, revision_log[i]['id'], | |||||
link_text='<i class="fa fa-folder-open fa-fw" aria-hidden="true">' | |||||
'</i>Browse files', | |||||
link_attrs={'class': 'btn btn-default btn-sm', | |||||
'role': 'button'}) | |||||
browse_log_link = \ | browse_log_link = \ | ||||
gen_revision_log_link(revision_id, link_text='Browse', | gen_revision_log_link(revision_id, link_text='Browse', | ||||
link_attrs={'class': 'btn btn-default btn-sm', | link_attrs={'class': 'btn btn-default btn-sm', | ||||
'role': 'button'}) | 'role': 'button'}) | ||||
revision_metadata = { | revision_metadata = { | ||||
'context-independent revision history': browse_log_link, | 'context-independent revision history': browse_log_link, | ||||
Show All 33 Lines | def browse_snapshot_log(request, snapshot_id=None, origin_type=None, | ||||
heading = 'Revision history - %s - %s' %\ | heading = 'Revision history - %s - %s' %\ | ||||
(snapshot_context['branch'], context_found) | (snapshot_context['branch'], context_found) | ||||
return render(request, 'browse/revision-log.html', | return render(request, 'browse/revision-log.html', | ||||
{'heading': heading, | {'heading': heading, | ||||
'swh_object_name': 'Revisions history', | 'swh_object_name': 'Revisions history', | ||||
'swh_object_metadata': revision_metadata, | 'swh_object_metadata': revision_metadata, | ||||
'revision_log': revision_log_data, | 'revision_log': revision_log_data, | ||||
'revs_ordering': revs_ordering, | |||||
'next_log_url': next_log_url, | 'next_log_url': next_log_url, | ||||
'prev_log_url': prev_log_url, | 'prev_log_url': prev_log_url, | ||||
'breadcrumbs': None, | 'breadcrumbs': None, | ||||
'top_right_link': None, | 'top_right_link': None, | ||||
'snapshot_context': snapshot_context, | 'snapshot_context': snapshot_context, | ||||
'vault_cooking': None, | 'vault_cooking': None, | ||||
'show_actions_menu': True, | 'show_actions_menu': True, | ||||
'swh_ids': swh_ids}) | 'swh_ids': swh_ids}) | ||||
▲ Show 20 Lines • Show All 200 Lines • Show Last 20 Lines |