From 5ccd21c718ed71e7c0b2c9b8dbf23ee48f99152f Mon Sep 17 00:00:00 2001 From: lian Date: Thu, 15 Dec 2016 13:50:04 +0800 Subject: [PATCH] update new office file --- media/office-template/empty.docx | Bin 0 -> 9258 bytes media/office-template/empty.pptx | Bin 0 -> 27588 bytes media/office-template/empty.xlsx | Bin 0 -> 7631 bytes seahub/api2/endpoints/file.py | 35 ++++++++++++++++++++++++++++--- seahub/settings.py | 3 +++ 5 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 media/office-template/empty.docx create mode 100644 media/office-template/empty.pptx create mode 100644 media/office-template/empty.xlsx diff --git a/media/office-template/empty.docx b/media/office-template/empty.docx new file mode 100644 index 0000000000000000000000000000000000000000..459ac476441f5736740e5d35a1a0632c97a2f553 GIT binary patch literal 9258 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 literal 0 HcmV?d00001 diff --git a/media/office-template/empty.pptx b/media/office-template/empty.pptx new file mode 100644 index 0000000000000000000000000000000000000000..08858f0a5764b4f04eb651857404182223a0058d GIT binary patch literal 27588 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 XO7et2wTOqu34AF4CEvZfd%yh`*Z>fi literal 0 HcmV?d00001 diff --git a/media/office-template/empty.xlsx b/media/office-template/empty.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..99aa0b2cade552ed472a0c027999c14f40b3d0ff GIT binary patch literal 7631 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 literal 0 HcmV?d00001 diff --git a/seahub/api2/endpoints/file.py b/seahub/api2/endpoints/file.py index 28af56ee9d..ccf8f76fc4 100644 --- a/seahub/api2/endpoints/file.py +++ b/seahub/api2/endpoints/file.py @@ -2,6 +2,7 @@ import os import logging import posixpath +import requests from rest_framework.authentication import SessionAuthentication from rest_framework.permissions import IsAuthenticated @@ -15,11 +16,13 @@ from seahub.api2.throttling import UserRateThrottle from seahub.api2.authentication import TokenAuthentication from seahub.api2.utils import api_error -from seahub.utils import check_filename_with_rename, is_pro_version +from seahub.utils import check_filename_with_rename, is_pro_version, \ + gen_file_upload_url from seahub.utils.timeutils import timestamp_to_isoformat_timestr from seahub.views import check_folder_permission, check_file_lock -from seahub.settings import MAX_UPLOAD_FILE_NAME_LEN, FILE_LOCK_EXPIRATION_DAYS +from seahub.settings import MAX_UPLOAD_FILE_NAME_LEN, \ + FILE_LOCK_EXPIRATION_DAYS, OFFICE_TEMPLATE_ROOT from seaserv import seafile_api from pysearpc import SearpcError @@ -147,7 +150,7 @@ class FileView(APIView): error_msg = 'Permission denied.' return api_error(status.HTTP_403_FORBIDDEN, error_msg) - # create file + # create new empty file new_file_name = os.path.basename(path) new_file_name = check_filename_with_rename(repo_id, parent_dir, new_file_name) @@ -158,6 +161,32 @@ class FileView(APIView): error_msg = 'Internal Server Error' return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) + # update office file by template + if new_file_name.endswith('.xlsx'): + empty_file_path = os.path.join(OFFICE_TEMPLATE_ROOT, 'empty.xlsx') + elif new_file_name.endswith('.pptx'): + empty_file_path = os.path.join(OFFICE_TEMPLATE_ROOT, 'empty.pptx') + elif new_file_name.endswith('.docx'): + empty_file_path = os.path.join(OFFICE_TEMPLATE_ROOT, 'empty.docx') + else: + empty_file_path = '' + + if empty_file_path: + # get file server update url + update_token = seafile_api.get_fileserver_access_token( + repo_id, 'dummy', 'update', username) + update_url = gen_file_upload_url(update_token, 'update-api') + + # update file + try: + requests.post( + update_url, + data={'filename': new_file_name, 'target_file': path}, + files={'file': open(empty_file_path, 'rb')} + ) + except Exception as e: + logger.error(e) + new_file_path = posixpath.join(parent_dir, new_file_name) file_info = self.get_file_info(username, repo_id, new_file_path) return Response(file_info) diff --git a/seahub/settings.py b/seahub/settings.py index 2469bc0fe5..3bf994d5f3 100644 --- a/seahub/settings.py +++ b/seahub/settings.py @@ -508,6 +508,9 @@ THUMBNAIL_SIZE_FOR_GRID = 192 THUMBNAIL_IMAGE_SIZE_LIMIT = 20 THUMBNAIL_IMAGE_ORIGINAL_SIZE_LIMIT = 256 +# template for create new office file +OFFICE_TEMPLATE_ROOT = os.path.join(MEDIA_ROOT, 'office-template') + ##################### # Global AddressBook # #####################