From c2992bfd520401b3672a1759b1cf594308ecae51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AD=99=E6=B0=B8=E5=BC=BA?=
<11704063+s-yongqiang@user.noreply.gitee.com>
Date: Mon, 31 Mar 2025 11:12:04 +0800
Subject: [PATCH] remove xmind
---
.../src/components/file-content-view/image.js | 6 +--
frontend/src/file-view.js | 3 --
seahub/api2/endpoints/dir.py | 6 +--
seahub/api2/endpoints/share_links.py | 4 +-
seahub/api2/endpoints/starred_items.py | 4 +-
seahub/repo_api_tokens/utils.py | 4 +-
seahub/templates/shared_file_view_react.html | 4 +-
seahub/thumbnail/utils.py | 38 +------------------
seahub/utils/__init__.py | 1 -
seahub/utils/file_types.py | 1 -
seahub/views/ajax.py | 7 +---
seahub/views/file.py | 30 +--------------
seahub/views/repo.py | 2 -
13 files changed, 17 insertions(+), 93 deletions(-)
diff --git a/frontend/src/components/file-content-view/image.js b/frontend/src/components/file-content-view/image.js
index d5acc3f525..076c52195b 100644
--- a/frontend/src/components/file-content-view/image.js
+++ b/frontend/src/components/file-content-view/image.js
@@ -11,7 +11,6 @@ const {
thumbnailSizeForOriginal,
previousImage, nextImage, rawPath,
lastModificationTime,
- xmindImageSrc // for xmind file
} = window.app.pageOptions;
let previousImageUrl;
@@ -62,9 +61,6 @@ class FileContent extends React.Component {
thumbnailURL = `${siteRoot}thumbnail/${repoID}/${thumbnailSizeForOriginal}${Utils.encodePath(filePath)}?mtime=${lastModificationTime}`;
}
- // for xmind file
- const xmindSrc = xmindImageSrc ? `${siteRoot}${xmindImageSrc}` : '';
-
const { scale, angle } = this.props;
let style = {};
if (scale && angle != undefined) {
@@ -84,7 +80,7 @@ class FileContent extends React.Component {
{nextImage && (
)}
-
+
);
}
diff --git a/frontend/src/file-view.js b/frontend/src/file-view.js
index fd75eab0fd..b9c3e8c8bf 100644
--- a/frontend/src/file-view.js
+++ b/frontend/src/file-view.js
@@ -59,9 +59,6 @@ class InnerFileView extends React.Component {
case 'Image':
content = } scale={imageScale} angle={imageAngle} />;
break;
- case 'XMind':
- content = } />;
- break;
case 'SVG':
content = ;
break;
diff --git a/seahub/api2/endpoints/dir.py b/seahub/api2/endpoints/dir.py
index bd554745cd..17227bb3af 100644
--- a/seahub/api2/endpoints/dir.py
+++ b/seahub/api2/endpoints/dir.py
@@ -20,10 +20,10 @@ from seahub.api2.views import get_dir_file_recursively
from seahub.thumbnail.utils import get_thumbnail_src
from seahub.views import check_folder_permission
from seahub.utils import check_filename_with_rename, is_valid_dirent_name, \
- normalize_dir_path, is_pro_version, FILEEXT_TYPE_MAP, get_file_type_and_ext
+ normalize_dir_path, is_pro_version, FILEEXT_TYPE_MAP
from seahub.utils.timeutils import timestamp_to_isoformat_timestr
from seahub.utils.file_tags import get_files_tags_in_dir
-from seahub.utils.file_types import IMAGE, VIDEO, XMIND, SEADOC, PDF
+from seahub.utils.file_types import IMAGE, VIDEO, PDF
from seahub.base.models import UserStarredFiles
from seahub.base.templatetags.seahub_tags import email2nickname, \
email2contact_email
@@ -162,7 +162,7 @@ def get_dir_file_info_list(username, request_type, repo_obj, parent_dir,
fileExt = os.path.splitext(file_name)[1][1:].lower()
file_type = FILEEXT_TYPE_MAP.get(fileExt)
- if file_type in (IMAGE, XMIND, PDF) or \
+ if file_type in (IMAGE, PDF) or \
(file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL):
# if thumbnail has already been created, return its src.
diff --git a/seahub/api2/endpoints/share_links.py b/seahub/api2/endpoints/share_links.py
index 23336b8a94..e099306548 100644
--- a/seahub/api2/endpoints/share_links.py
+++ b/seahub/api2/endpoints/share_links.py
@@ -40,7 +40,7 @@ from seahub.utils import gen_shared_link, is_org_context, normalize_file_path, \
check_filename_with_rename, gen_file_upload_url, \
get_password_strength_level, is_valid_password, is_valid_email, string2list, gen_file_get_url_by_sharelink
from seahub.utils.file_op import if_locked_by_online_office
-from seahub.utils.file_types import IMAGE, VIDEO, XMIND, PDF
+from seahub.utils.file_types import IMAGE, VIDEO, PDF
from seahub.utils.file_tags import get_tagged_files, get_files_tags_in_dir
from seahub.utils.timeutils import datetime_to_isoformat_timestr, \
timestamp_to_isoformat_timestr
@@ -983,7 +983,7 @@ class ShareLinkDirents(APIView):
dirent_info['file_name'] = dirent.obj_name
file_type, file_ext = get_file_type_and_ext(dirent.obj_name)
- if file_type in (IMAGE, XMIND) or \
+ if file_type == IMAGE or \
(file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL) or \
(file_type == PDF and ENABLE_PDF_THUMBNAIL):
diff --git a/seahub/api2/endpoints/starred_items.py b/seahub/api2/endpoints/starred_items.py
index 0e08e1cfc1..bcc7f6b411 100644
--- a/seahub/api2/endpoints/starred_items.py
+++ b/seahub/api2/endpoints/starred_items.py
@@ -25,7 +25,7 @@ from seahub.base.templatetags.seahub_tags import email2nickname, \
email2contact_email
from seahub.settings import ENABLE_VIDEO_THUMBNAIL, \
THUMBNAIL_ROOT, THUMBNAIL_DEFAULT_SIZE
-from seahub.utils.file_types import IMAGE, VIDEO, XMIND
+from seahub.utils.file_types import IMAGE, VIDEO
logger = logging.getLogger(__name__)
@@ -62,7 +62,7 @@ class StarredItems(APIView):
item_info['deleted'] = False if dirent else True
if dirent and not starred_item.is_dir:
file_type, file_ext = get_file_type_and_ext(item_info['obj_name'])
- if file_type in (IMAGE, XMIND) or \
+ if file_type == IMAGE or \
(file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL):
thumbnail_size = THUMBNAIL_DEFAULT_SIZE
thumbnail_file_path = os.path.join(THUMBNAIL_ROOT,
diff --git a/seahub/repo_api_tokens/utils.py b/seahub/repo_api_tokens/utils.py
index 85b88e2077..bc4904842c 100644
--- a/seahub/repo_api_tokens/utils.py
+++ b/seahub/repo_api_tokens/utils.py
@@ -10,7 +10,7 @@ from seahub.base.models import UserStarredFiles
from seahub.base.templatetags.seahub_tags import email2nickname, email2contact_email
from seahub.settings import ENABLE_VIDEO_THUMBNAIL, THUMBNAIL_ROOT
from seahub.thumbnail.utils import get_thumbnail_src
-from seahub.utils import is_pro_version, FILEEXT_TYPE_MAP, IMAGE, XMIND, VIDEO
+from seahub.utils import is_pro_version, FILEEXT_TYPE_MAP, IMAGE, VIDEO
from seahub.utils.file_tags import get_files_tags_in_dir
from seahub.utils.repo import is_group_repo_staff, is_repo_owner
from seahub.utils.timeutils import timestamp_to_isoformat_timestr
@@ -212,7 +212,7 @@ def get_dir_file_info_list(username, request_type, repo_obj, parent_dir,
fileExt = os.path.splitext(file_name)[1][1:].lower()
file_type = FILEEXT_TYPE_MAP.get(fileExt)
- if file_type in (IMAGE, XMIND) or \
+ if file_type == IMAGE or \
(file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL):
# if thumbnail has already been created, return its src.
diff --git a/seahub/templates/shared_file_view_react.html b/seahub/templates/shared_file_view_react.html
index 661b3c280d..e094d80313 100644
--- a/seahub/templates/shared_file_view_react.html
+++ b/seahub/templates/shared_file_view_react.html
@@ -19,7 +19,7 @@
{% render_bundle 'sharedFileViewMarkdown' 'css' %}
{% elif filetype == 'Text' %}
{% render_bundle 'sharedFileViewText' 'css' %}
-{% elif filetype == 'Image' or filetype == 'XMind' %}
+{% elif filetype == 'Image' %}
{% render_bundle 'sharedFileViewImage' 'css' %}
{% elif filetype == 'SVG' %}
{% render_bundle 'sharedFileViewSVG' 'css' %}
@@ -117,7 +117,7 @@ body {
{% render_bundle 'sharedFileViewMarkdown' 'js' %}
{% elif filetype == 'Text' %}
{% render_bundle 'sharedFileViewText' 'js' %}
-{% elif filetype == 'Image' or filetype == 'XMind' %}
+{% elif filetype == 'Image' %}
{% render_bundle 'sharedFileViewImage' 'js' %}
{% elif filetype == 'SVG' %}
{% render_bundle 'sharedFileViewSVG' 'js' %}
diff --git a/seahub/thumbnail/utils.py b/seahub/thumbnail/utils.py
index a1c52c627d..28d0ec080d 100644
--- a/seahub/thumbnail/utils.py
+++ b/seahub/thumbnail/utils.py
@@ -19,7 +19,7 @@ from seaserv import get_file_id_by_path, get_repo, get_file_size, \
seafile_api
from seahub.utils import gen_inner_file_get_url, get_file_type_and_ext
-from seahub.utils.file_types import VIDEO, XMIND, PDF
+from seahub.utils.file_types import VIDEO, PDF
from seahub.settings import THUMBNAIL_IMAGE_SIZE_LIMIT, \
THUMBNAIL_EXTENSION, THUMBNAIL_ROOT, THUMBNAIL_IMAGE_ORIGINAL_SIZE_LIMIT,\
ENABLE_VIDEO_THUMBNAIL, THUMBNAIL_VIDEO_FRAME_TIME
@@ -32,8 +32,6 @@ except ImportError:
# Get an instance of a logger
logger = logging.getLogger(__name__)
-XMIND_IMAGE_SIZE = 1024
-
def get_thumbnail_src(repo_id, size, path):
return posixpath.join("thumbnail", repo_id, str(size), path.lstrip('/'))
@@ -128,8 +126,6 @@ def generate_thumbnail(request, repo_id, size, path):
# pdf thumbnails
return create_pdf_thumbnails(repo, file_id, path, size,
thumbnail_file, file_size)
- if filetype == XMIND:
- return extract_xmind_image(repo_id, path, size)
# image thumbnails
if file_size > THUMBNAIL_IMAGE_SIZE_LIMIT * 1024**2:
@@ -297,38 +293,6 @@ def _create_thumbnail_common(fp, thumbnail_file, size):
image.save(thumbnail_file, save_type, icc_profile=icc_profile)
return (True, 200)
-def extract_xmind_image(repo_id, path, size=XMIND_IMAGE_SIZE):
-
- # get inner path
- file_name = os.path.basename(path)
- file_id = seafile_api.get_file_id_by_path(repo_id, path)
- fileserver_token = seafile_api.get_fileserver_access_token(repo_id,
- file_id, 'view', '')
- inner_path = gen_inner_file_get_url(fileserver_token, file_name)
-
- # extract xmind image
- xmind_file = urllib.request.urlopen(inner_path)
- xmind_file_str = BytesIO(xmind_file.read())
- try:
- xmind_zip_file = zipfile.ZipFile(xmind_file_str, 'r')
- except Exception as e:
- return (False, 500)
- extracted_xmind_image = xmind_zip_file.read('Thumbnails/thumbnail.png')
- extracted_xmind_image_str = BytesIO(extracted_xmind_image)
-
- # save origin xmind image to thumbnail folder
- thumbnail_dir = os.path.join(THUMBNAIL_ROOT, str(size))
- if not os.path.exists(thumbnail_dir):
- os.makedirs(thumbnail_dir)
- local_xmind_image = os.path.join(thumbnail_dir, file_id)
-
- try:
- ret = _create_thumbnail_common(extracted_xmind_image_str, local_xmind_image, size)
- return ret
- except Exception as e:
- logger.error(e)
- return (False, 500)
-
def get_thumbnail_image_path(obj_id, image_size):
thumbnail_dir = os.path.join(THUMBNAIL_ROOT, str(image_size))
thumbnail_image_path = os.path.join(thumbnail_dir, obj_id)
diff --git a/seahub/utils/__init__.py b/seahub/utils/__init__.py
index eed6da4361..5673c65bf4 100644
--- a/seahub/utils/__init__.py
+++ b/seahub/utils/__init__.py
@@ -128,7 +128,6 @@ PREVIEW_FILEEXT = {
VIDEO: ('mp4', 'ogv', 'webm', 'mov'),
AUDIO: ('mp3', 'oga', 'ogg', 'wav', 'flac', 'opus'),
#'3D': ('stl', 'obj'),
- XMIND: ('xmind',),
SEADOC: ('sdoc',),
TLDRAW: ('draw',),
EXCALIDRAW: ('exdraw',),
diff --git a/seahub/utils/file_types.py b/seahub/utils/file_types.py
index 405dc16640..e85900d6de 100644
--- a/seahub/utils/file_types.py
+++ b/seahub/utils/file_types.py
@@ -8,7 +8,6 @@ MARKDOWN = 'Markdown'
VIDEO = 'Video'
AUDIO = 'Audio'
SPREADSHEET = 'SpreadSheet'
-XMIND = 'XMind'
SEADOC = 'SDoc'
TLDRAW = 'Tldraw'
EXCALIDRAW = 'Excalidraw'
diff --git a/seahub/views/ajax.py b/seahub/views/ajax.py
index 791278c736..33dd181996 100644
--- a/seahub/views/ajax.py
+++ b/seahub/views/ajax.py
@@ -45,7 +45,7 @@ from seahub.utils import check_filename_with_rename, EMPTY_SHA1, \
gen_file_upload_url, is_org_context, is_pro_version, normalize_dir_path, \
FILEEXT_TYPE_MAP
from seahub.utils.star import get_dir_starred_files
-from seahub.utils.file_types import IMAGE, VIDEO, XMIND
+from seahub.utils.file_types import IMAGE, VIDEO
from seahub.utils.file_op import check_file_lock, ONLINE_OFFICE_LOCK_OWNER
from seahub.utils.repo import get_locked_files_by_dir, get_repo_owner, \
repo_has_been_shared_out, parse_repo_perm
@@ -259,10 +259,7 @@ def list_lib_dir(request, repo_id):
if file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL:
f_['is_video'] = True
- if file_type == XMIND:
- f_['is_xmind'] = True
-
- if file_type in (IMAGE, XMIND) or \
+ if file_type == IMAGE or \
(file_type == VIDEO and ENABLE_VIDEO_THUMBNAIL):
# if thumbnail has already been created, return its src.
# Then web browser will use this src to get thumbnail instead of
diff --git a/seahub/views/file.py b/seahub/views/file.py
index 2667ff5b2c..d74cf348d0 100644
--- a/seahub/views/file.py
+++ b/seahub/views/file.py
@@ -61,7 +61,7 @@ from seahub.utils import render_error, is_org_context, \
from seahub.utils.ip import get_remote_ip
from seahub.utils.file_types import (IMAGE, PDF, SVG,
DOCUMENT, SPREADSHEET, AUDIO,
- MARKDOWN, TEXT, VIDEO, XMIND, SEADOC, TLDRAW, EXCALIDRAW)
+ MARKDOWN, TEXT, VIDEO, SEADOC, TLDRAW, EXCALIDRAW)
from seahub.utils.timeutils import timestamp_to_isoformat_timestr
from seahub.utils.star import is_file_starred
from seahub.utils.http import json_response, \
@@ -73,8 +73,6 @@ from seahub.views import check_folder_permission, \
get_unencry_rw_repos_by_user
from seahub.utils.repo import is_repo_owner, parse_repo_perm, is_repo_admin
from seahub.group.utils import is_group_member
-from seahub.thumbnail.utils import extract_xmind_image, get_thumbnail_src, \
- XMIND_IMAGE_SIZE, get_share_link_thumbnail_src, get_thumbnail_image_path
from seahub.seadoc.utils import get_seadoc_file_uuid, gen_seadoc_access_token, is_seadoc_revision
from seahub.seadoc.models import SeadocRevision
@@ -698,7 +696,7 @@ def view_lib_file(request, repo_id, path):
if filetype in FILE_TYPE_FOR_NEW_FILE_LINK:
raw_path = gen_file_get_url_new(repo_id, path)
- if filetype in (IMAGE, VIDEO, AUDIO, PDF, SVG, XMIND, 'Unknown'):
+ if filetype in (IMAGE, VIDEO, AUDIO, PDF, SVG, 'Unknown'):
template = 'common_file_view_react.html'
if filetype == SEADOC:
@@ -869,16 +867,6 @@ def view_lib_file(request, repo_id, path):
send_file_access_msg(request, repo, path, 'web')
return render(request, template, return_dict)
- elif filetype == XMIND:
- xmind_image_path = get_thumbnail_image_path(file_id, XMIND_IMAGE_SIZE)
- if not os.path.exists(xmind_image_path) and not extract_xmind_image(repo_id, path)[0]:
- error_msg = _('Unable to view file')
- return_dict['err'] = error_msg
- else:
- return_dict['xmind_image_src'] = quote(get_thumbnail_src(repo_id, XMIND_IMAGE_SIZE, path))
-
- return render(request, template, return_dict)
-
elif filetype == IMAGE:
if file_size > FILE_PREVIEW_MAX_SIZE:
@@ -1423,13 +1411,6 @@ def view_shared_file(request, fileshare):
handle_document(raw_path, obj_id, fileext, ret_dict)
elif filetype == SPREADSHEET:
handle_spreadsheet(raw_path, obj_id, fileext, ret_dict)
- elif filetype == XMIND:
- xmind_image_path = get_thumbnail_image_path(obj_id, XMIND_IMAGE_SIZE)
- if not os.path.exists(xmind_image_path) and not extract_xmind_image(repo_id, path)[0]:
- error_msg = _('Unable to view file')
- ret_dict['err'] = error_msg
- else:
- raw_path = quote(SITE_ROOT + get_share_link_thumbnail_src(token, XMIND_IMAGE_SIZE, path))
else:
ret_dict['err'] = err_msg
@@ -1688,13 +1669,6 @@ def view_file_via_shared_dir(request, fileshare):
img_prev = posixpath.join(parent_dir, img_list[cur_img_index - 1])
if cur_img_index != len(img_list) - 1:
img_next = posixpath.join(parent_dir, img_list[cur_img_index + 1])
- elif filetype == XMIND:
- xmind_image_path = get_thumbnail_image_path(obj_id, XMIND_IMAGE_SIZE)
- if not os.path.exists(xmind_image_path) and not extract_xmind_image(repo_id, real_path)[0]:
- error_msg = _('Unable to view file')
- ret_dict['err'] = error_msg
- else:
- raw_path = quote(SITE_ROOT + get_share_link_thumbnail_src(token, XMIND_IMAGE_SIZE, req_path))
else:
ret_dict['err'] = err_msg
diff --git a/seahub/views/repo.py b/seahub/views/repo.py
index 2fbcb6165e..67c1df5f13 100644
--- a/seahub/views/repo.py
+++ b/seahub/views/repo.py
@@ -33,8 +33,6 @@ from seahub.settings import ENABLE_UPLOAD_FOLDER, \
MAX_NUMBER_OF_FILES_FOR_FILEUPLOAD, SHARE_LINK_EXPIRE_DAYS_MIN, \
SHARE_LINK_EXPIRE_DAYS_MAX, \
ENABLE_SHARE_LINK_REPORT_ABUSE, ENABLE_PDF_THUMBNAIL
-from seahub.utils.file_types import IMAGE, VIDEO, XMIND
-from seahub.thumbnail.utils import get_share_link_thumbnail_src
from seahub.group.utils import is_group_admin
from seahub.api2.endpoints.group_owned_libraries import get_group_id_by_repo_owner
from seahub.constants import PERMISSION_INVISIBLE