support case insensitive and normalized file and folder names.
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
import dataclasses
|
||||
import os
|
||||
from argparse import Namespace, _SubParsersAction
|
||||
from unicodedata import normalize
|
||||
|
||||
from pydantic import parse_obj_as
|
||||
|
||||
@ -49,12 +50,10 @@ class MvCommand(BaseCommand):
|
||||
if d_sub_folder is not None:
|
||||
raise IllegalArgumentException(f"Cannot overwrite non-folder `{d_basename}` with folder `{d_path}`.")
|
||||
file_api = FileApi(connection)
|
||||
if s_parent_folder.id != d_parent_folder.id:
|
||||
file_api.move(s_file, d_parent_folder.id)
|
||||
if d_basename != s_basename:
|
||||
d_file_dict = dataclasses.asdict(s_file) | {"name": d_basename}
|
||||
if s_parent_folder.id != d_parent_folder.id or d_basename != s_basename:
|
||||
d_file_dict = dataclasses.asdict(s_file) | {"name": normalize("NFC", d_basename)}
|
||||
d_file = parse_obj_as(File, d_file_dict)
|
||||
file_api.update(d_file, None)
|
||||
file_api.move(d_file, d_parent_folder.id)
|
||||
else:
|
||||
s_folder = s_parent_folder.find_sub_folder(s_basename)
|
||||
if s_folder is None:
|
||||
@ -71,6 +70,6 @@ class MvCommand(BaseCommand):
|
||||
if s_parent_folder.id != d_parent_folder.id:
|
||||
folder_api.move(s_folder, d_parent_folder.id)
|
||||
if s_basename != d_basename:
|
||||
d_folder_dict = dataclasses.asdict(s_folder) | {"name": d_basename}
|
||||
d_folder_dict = dataclasses.asdict(s_folder) | {"name": normalize("NFC", d_basename)}
|
||||
d_folder = parse_obj_as(FolderSimple, d_folder_dict)
|
||||
folder_api.update(d_folder)
|
||||
|
Reference in New Issue
Block a user