fix: Use File URL to set file type as File Name is not reliable
This commit is contained in:
parent
7bb81d710c
commit
ea4dbedbab
2 changed files with 11 additions and 9 deletions
|
|
@ -336,7 +336,7 @@ class File(Document):
|
|||
if self.is_folder:
|
||||
return
|
||||
|
||||
file_type = mimetypes.guess_type(self.file_name)[0]
|
||||
file_type = mimetypes.guess_type(self.file_url)[0]
|
||||
if not file_type:
|
||||
return
|
||||
|
||||
|
|
|
|||
|
|
@ -7,26 +7,28 @@ def execute():
|
|||
"""Set 'File Type' for all files based on file extension."""
|
||||
files = frappe.db.get_all(
|
||||
"File",
|
||||
fields=["name", "file_name", "is_folder"],
|
||||
fields=["name", "file_url"],
|
||||
filters={
|
||||
"is_folder": 0,
|
||||
"file_type": ("is", "not set")
|
||||
},
|
||||
)
|
||||
|
||||
frappe.db.auto_commit_on_many_writes = 1
|
||||
|
||||
for file in files:
|
||||
if file.get("is_folder"):
|
||||
continue
|
||||
|
||||
file_extension = get_file_extension(file.get("file_name"))
|
||||
# File URL could be relative to site's public folder or a web URL
|
||||
file_extension = get_file_extension(file.file_url)
|
||||
if file_extension:
|
||||
frappe.db.set_value(
|
||||
"File", file.get("name"), "file_type", file_extension, update_modified=False
|
||||
"File", file.name, "file_type", file_extension, update_modified=False
|
||||
)
|
||||
|
||||
frappe.db.auto_commit_on_many_writes = 0
|
||||
|
||||
|
||||
def get_file_extension(file_name):
|
||||
file_type = mimetypes.guess_type(file_name)[0]
|
||||
def get_file_extension(file_url):
|
||||
file_type = mimetypes.guess_type(file_url)[0]
|
||||
if not file_type:
|
||||
return None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue