From 4ba8ec637d3fd4acc41d8f2fc54910ebb608daa6 Mon Sep 17 00:00:00 2001 From: sokumon Date: Thu, 20 Feb 2025 19:20:20 +0530 Subject: [PATCH] fix: check if duplicate_file url matches incoming file url --- frappe/core/doctype/file/file.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/frappe/core/doctype/file/file.py b/frappe/core/doctype/file/file.py index 2eac72a6de..6a0b0a0b61 100755 --- a/frappe/core/doctype/file/file.py +++ b/frappe/core/doctype/file/file.py @@ -386,8 +386,6 @@ class File(Document): if self.name: filters.update({"name": ("!=", self.name)}) - else: - filters.update({"file_name": self.file_name}) if self.attached_to_doctype and self.attached_to_name: filters.update( @@ -663,7 +661,8 @@ class File(Document): if duplicate_file: file_doc: File = frappe.get_cached_doc("File", duplicate_file.name) if file_doc.exists_on_disk(): - self.file_url = duplicate_file.file_url + if self.make_file() == duplicate_file.file_url: + self.file_url = duplicate_file.file_url file_exists = True if not file_exists: @@ -690,6 +689,15 @@ class File(Document): return {"file_name": os.path.basename(fpath), "file_url": self.file_url} + def make_file_url(self): + file_url = None + safe_file_name = re.sub(r"[/\\%?#]", "_", self.file_name) + if self.is_private: + file_url = f"/private/files/{safe_file_name}" + else: + file_url = f"/files/{safe_file_name}" + return file_url + def check_max_file_size(self): from frappe.core.api.file import get_max_file_size