Changeset View
Changeset View
Standalone View
Standalone View
swh/web/browse/views/content.py
# Copyright (C) 2017-2019 The Software Heritage developers | # Copyright (C) 2017-2019 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import difflib | import difflib | ||||
import json | import json | ||||
from distutils.util import strtobool | from distutils.util import strtobool | ||||
from django.http import HttpResponse | from django.http import HttpResponse | ||||
from django.shortcuts import render | from django.shortcuts import render | ||||
from django.template.defaultfilters import filesizeformat | from django.template.defaultfilters import filesizeformat | ||||
from swh.model.hashutil import hash_to_hex | from swh.model.hashutil import hash_to_hex | ||||
from swh.web.common import query, service | from swh.web.common import query, service, highlightjs | ||||
from swh.web.common.utils import ( | from swh.web.common.utils import ( | ||||
reverse, gen_path_info, swh_object_icons | reverse, gen_path_info, swh_object_icons | ||||
) | ) | ||||
from swh.web.common.exc import NotFoundExc, handle_view_exception | from swh.web.common.exc import NotFoundExc, handle_view_exception | ||||
from swh.web.browse.utils import ( | from swh.web.browse.utils import ( | ||||
request_content, prepare_content_for_display, | request_content, prepare_content_for_display, | ||||
content_display_max_size, get_snapshot_context, | content_display_max_size, get_snapshot_context, | ||||
get_swh_persistent_ids, gen_link, gen_directory_link | get_swh_persistent_ids, gen_link, gen_directory_link | ||||
▲ Show 20 Lines • Show All 150 Lines • ▼ Show 20 Lines | def content_display(request, query_string): | ||||
""" | """ | ||||
try: | try: | ||||
algo, checksum = query.parse_hash(query_string) | algo, checksum = query.parse_hash(query_string) | ||||
checksum = hash_to_hex(checksum) | checksum = hash_to_hex(checksum) | ||||
content_data = request_content(query_string, | content_data = request_content(query_string, | ||||
raise_if_unavailable=False) | raise_if_unavailable=False) | ||||
origin_type = request.GET.get('origin_type', None) | origin_type = request.GET.get('origin_type', None) | ||||
origin_url = request.GET.get('origin_url', None) | origin_url = request.GET.get('origin_url', None) | ||||
selected_language = request.GET.get('language', None) | |||||
if not origin_url: | if not origin_url: | ||||
origin_url = request.GET.get('origin', None) | origin_url = request.GET.get('origin', None) | ||||
snapshot_context = None | snapshot_context = None | ||||
if origin_url: | if origin_url: | ||||
try: | try: | ||||
snapshot_context = get_snapshot_context(None, origin_type, | snapshot_context = get_snapshot_context(None, origin_type, | ||||
origin_url) | origin_url) | ||||
except Exception: | except Exception: | ||||
Show All 21 Lines | def content_display(request, query_string): | ||||
mimetype = None | mimetype = None | ||||
if content_data['raw_data'] is not None: | if content_data['raw_data'] is not None: | ||||
content_display_data = prepare_content_for_display( | content_display_data = prepare_content_for_display( | ||||
content_data['raw_data'], content_data['mimetype'], path) | content_data['raw_data'], content_data['mimetype'], path) | ||||
content = content_display_data['content_data'] | content = content_display_data['content_data'] | ||||
language = content_display_data['language'] | language = content_display_data['language'] | ||||
mimetype = content_display_data['mimetype'] | mimetype = content_display_data['mimetype'] | ||||
# Override language with selected language | |||||
if selected_language is not None: | |||||
language = selected_language | |||||
language_select = None | |||||
if 'text/' in mimetype: | |||||
language_select = highlightjs._hljs_languages | |||||
root_dir = None | root_dir = None | ||||
filename = None | filename = None | ||||
path_info = None | path_info = None | ||||
directory_id = None | directory_id = None | ||||
directory_url = None | directory_url = None | ||||
query_params = {'origin': origin_url} | query_params = {'origin': origin_url} | ||||
▲ Show 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | return render(request, 'browse/content.html', | ||||
'swh_object_id': swh_ids[0]['swh_id'], | 'swh_object_id': swh_ids[0]['swh_id'], | ||||
'swh_object_name': 'Content', | 'swh_object_name': 'Content', | ||||
'swh_object_metadata': content_metadata, | 'swh_object_metadata': content_metadata, | ||||
'content': content, | 'content': content, | ||||
'content_size': content_data['length'], | 'content_size': content_data['length'], | ||||
'max_content_size': content_display_max_size, | 'max_content_size': content_display_max_size, | ||||
'mimetype': mimetype, | 'mimetype': mimetype, | ||||
'language': language, | 'language': language, | ||||
'language_select': language_select, | |||||
'breadcrumbs': breadcrumbs, | 'breadcrumbs': breadcrumbs, | ||||
'top_right_link': { | 'top_right_link': { | ||||
'url': content_raw_url, | 'url': content_raw_url, | ||||
'icon': swh_object_icons['content'], | 'icon': swh_object_icons['content'], | ||||
'text': 'Raw File' | 'text': 'Raw File' | ||||
}, | }, | ||||
'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, | ||||
'error_code': content_data['error_code'], | 'error_code': content_data['error_code'], | ||||
'error_message': content_data['error_message'], | 'error_message': content_data['error_message'], | ||||
'error_description': content_data['error_description']}, | 'error_description': content_data['error_description']}, | ||||
status=content_data['error_code']) | status=content_data['error_code']) |