28
28
from seahub .views .file import can_preview_file , can_edit_file
29
29
from seahub .constants import PERMISSION_READ_WRITE
30
30
from seahub .utils .repo import parse_repo_perm , is_repo_admin , is_repo_owner
31
- from seahub .utils .file_types import MARKDOWN , TEXT , SEADOC , MARKDOWN_SUPPORT_CONVERT_TYPES , SDOC_SUPPORT_CONVERT_TYPES
31
+ from seahub .utils .file_types import MARKDOWN , TEXT , SEADOC , \
32
+ MARKDOWN_SUPPORT_CONVERT_TYPES , SDOC_SUPPORT_CONVERT_TYPES , \
33
+ DOCX_SUPPORT_CONVERT_TYPES
32
34
from seahub .tags .models import FileUUIDMap
33
35
from seahub .seadoc .models import SeadocHistoryName , SeadocDraft , SeadocCommentReply
34
36
from seahub .base .models import FileComment
@@ -553,12 +555,13 @@ def post(self, request, repo_id, format=None):
553
555
dst_type = request .data .get ('dst_type' )
554
556
555
557
extension = Path (path ).suffix
556
- if extension not in ['.md' , '.sdoc' ]:
558
+ if extension not in ['.md' , '.sdoc' , '.docx' ]:
557
559
error_msg = 'path invalid.'
558
560
return api_error (status .HTTP_400_BAD_REQUEST , error_msg )
559
561
560
562
if (extension == '.md' and dst_type not in MARKDOWN_SUPPORT_CONVERT_TYPES ) or \
561
- (extension == '.sdoc' and dst_type not in SDOC_SUPPORT_CONVERT_TYPES ):
563
+ (extension == '.sdoc' and dst_type not in SDOC_SUPPORT_CONVERT_TYPES ) or \
564
+ (extension == '.docx' and dst_type not in DOCX_SUPPORT_CONVERT_TYPES ):
562
565
error_msg = 'dst_type invalid.'
563
566
return api_error (status .HTTP_400_BAD_REQUEST , error_msg )
564
567
@@ -596,6 +599,9 @@ def post(self, request, repo_id, format=None):
596
599
if extension == '.md' :
597
600
src_type = 'markdown'
598
601
new_filename = filename [:- 2 ] + 'sdoc'
602
+ if extension == '.docx' :
603
+ src_type = 'docx'
604
+ new_filename = filename [:- 4 ] + 'sdoc'
599
605
elif extension == '.sdoc' :
600
606
src_type = 'sdoc'
601
607
if dst_type == 'markdown' :
@@ -606,14 +612,24 @@ def post(self, request, repo_id, format=None):
606
612
new_filename = check_filename_or_rename (repo_id , parent_dir , new_filename )
607
613
new_file_path = posixpath .join (parent_dir , new_filename )
608
614
609
- download_token = seafile_api .get_fileserver_access_token (repo_id , file_id , 'download' , username )
615
+ download_token = seafile_api .get_fileserver_access_token (repo_id ,
616
+ file_id ,
617
+ 'download' ,
618
+ username )
610
619
611
620
obj_id = json .dumps ({'parent_dir' : parent_dir })
612
- upload_token = seafile_api .get_fileserver_access_token (repo_id , obj_id , 'upload-link' , username ,
621
+ upload_token = seafile_api .get_fileserver_access_token (repo_id ,
622
+ obj_id ,
623
+ 'upload-link' ,
624
+ username ,
613
625
use_onetime = True )
614
- doc_uuid = get_seadoc_file_uuid (repo , path )
626
+ if extension == '.sdoc' :
627
+ doc_uuid = get_seadoc_file_uuid (repo , path )
628
+ else :
629
+ doc_uuid = get_seadoc_file_uuid (repo , new_file_path )
615
630
616
631
if dst_type != 'docx' :
632
+ # md, docx file convert to sdoc
617
633
try :
618
634
resp = convert_file (path , username , doc_uuid ,
619
635
download_token , upload_token ,
@@ -629,7 +645,7 @@ def post(self, request, repo_id, format=None):
629
645
return api_error (status .HTTP_500_INTERNAL_SERVER_ERROR ,
630
646
'Internal Server Error' )
631
647
else :
632
-
648
+ # sdoc file convert to docx
633
649
try :
634
650
resp = sdoc_convert_to_docx (path , username , doc_uuid ,
635
651
download_token , upload_token ,
0 commit comments