From fda0df7f1058b8652f8332b3579700fbff7bfe71 Mon Sep 17 00:00:00 2001 From: Shuai Lin Date: Mon, 13 Jul 2015 13:46:29 +0800 Subject: [PATCH 1/3] [office preview] fix fetching images embedded in xls files --- seahub/views/file.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/seahub/views/file.py b/seahub/views/file.py index cec8477fb1..9f684be8f6 100644 --- a/seahub/views/file.py +++ b/seahub/views/file.py @@ -13,6 +13,8 @@ import chardet import logging import posixpath import re +import mimetypes +import urlparse from django.core.cache import cache from django.contrib.sites.models import RequestSite @@ -1322,6 +1324,14 @@ def check_office_token(func): if not token: token = request.GET.get('office_preview_token', '') + if not token: + # Work around for the images embedded in excel files + referer = request.META.get('HTTP_REFERER', '') + if referer: + token = urlparse.parse_qs( + urlparse.urlparse(referer).query).get('office_preview_token', [''])[0] + print 'token from referer:', token + request.office_preview_token = token return func(request, *args, **kwargs) @@ -1371,7 +1381,7 @@ def office_convert_query_status(request, internal=False): # 1.page # 2.page # ... -_OFFICE_PAGE_PATTERN = re.compile(r'^([0-9a-f]{40})/([\d]+\.page|file\.css|file\.outline|index.html)$') +_OFFICE_PAGE_PATTERN = re.compile(r'^([0-9a-f]{40})/([\d]+\.page|file\.css|file\.outline|index.html|index_html_(.*).png)$') @check_office_token def office_convert_get_page(request, path, internal=False): if not HAS_OFFICE_CONVERTER: @@ -1389,7 +1399,11 @@ def office_convert_get_page(request, path, internal=False): # return HttpResponseForbidden() resp = get_office_converted_page(request, path, file_id, internal=internal) - resp['Content-Type'] = 'text/html' + if path.endswith('.page'): + content_type = 'text/html' + else: + content_type = mimetypes.guess_type(path)[0] or 'text/html' + resp['Content-Type'] = content_type return resp ###### private file/dir shares From 00142ef4ea42500dd4fcf1c2d627e7b2a1328464 Mon Sep 17 00:00:00 2001 From: Shuai Lin Date: Wed, 1 Jul 2015 12:32:16 +0800 Subject: [PATCH 2/3] improve open documents online preview in pro edition --- seahub/utils/__init__.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/seahub/utils/__init__.py b/seahub/utils/__init__.py index 2f14a07460..33bad389e6 100644 --- a/seahub/utils/__init__.py +++ b/seahub/utils/__init__.py @@ -101,10 +101,10 @@ PREVIEW_FILEEXT = { TEXT: ('ac', 'am', 'bat', 'c', 'cc', 'cmake', 'cpp', 'cs', 'css', 'diff', 'el', 'h', 'html', 'htm', 'java', 'js', 'json', 'less', 'make', 'org', 'php', 'pl', 'properties', 'py', 'rb', 'scala', 'script', 'sh', 'sql', 'txt', 'text', 'tex', 'vi', 'vim', 'xhtml', 'xml', 'log', 'csv', 'groovy', 'rst', 'patch', 'go'), IMAGE: ('gif', 'jpeg', 'jpg', 'png', 'ico', 'bmp'), DOCUMENT: ('doc', 'docx', 'ppt', 'pptx'), - SPREADSHEET: ('xls', 'xlsx'), + SPREADSHEET: ('xls', 'xlsx', 'ods', 'fods'), # SVG: ('svg',), PDF: ('pdf',), - OPENDOCUMENT: ('odt', 'fodt', 'odp', 'fodp', 'ods', 'fods'), + OPENDOCUMENT: ('odt', 'fodt', 'odp', 'fodp'), MARKDOWN: ('markdown', 'md'), VIDEO: ('mp4', 'ogv', 'webm', 'flv', 'wmv'), AUDIO: ('mp3', 'oga', 'ogg'), @@ -935,6 +935,12 @@ if HAS_OFFICE_CONVERTER: OFFICE_HTML_DIR = get_office_converter_html_dir() OFFICE_PREVIEW_MAX_SIZE, OFFICE_PREVIEW_MAX_PAGES = get_office_converter_limit() + all_doc_types = PREVIEW_FILEEXT[DOCUMENT] + PREVIEW_FILEEXT[OPENDOCUMENT] + PREVIEW_FILEEXT[DOCUMENT] = all_doc_types + PREVIEW_FILEEXT.pop(OPENDOCUMENT) + + FILEEXT_TYPE_MAP = gen_fileext_type_map() + from seafevents.office_converter import OfficeConverterRpcClient office_converter_rpc = None From 99a1347ade1574575240f2304ce4238249b05480 Mon Sep 17 00:00:00 2001 From: Shuai Lin Date: Mon, 13 Jul 2015 13:57:42 +0800 Subject: [PATCH 3/3] remove debug print --- seahub/views/file.py | 1 - 1 file changed, 1 deletion(-) diff --git a/seahub/views/file.py b/seahub/views/file.py index 9f684be8f6..f1034d5e86 100644 --- a/seahub/views/file.py +++ b/seahub/views/file.py @@ -1330,7 +1330,6 @@ def check_office_token(func): if referer: token = urlparse.parse_qs( urlparse.urlparse(referer).query).get('office_preview_token', [''])[0] - print 'token from referer:', token request.office_preview_token = token