diff --git a/frappe/core/doctype/file/file.py b/frappe/core/doctype/file/file.py index af3d835452..2ded1fe3a5 100755 --- a/frappe/core/doctype/file/file.py +++ b/frappe/core/doctype/file/file.py @@ -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 diff --git a/frappe/patches/v15_0/set_file_type.py b/frappe/patches/v15_0/set_file_type.py index 9805b1d39c..cf2d507a5c 100644 --- a/frappe/patches/v15_0/set_file_type.py +++ b/frappe/patches/v15_0/set_file_type.py @@ -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