Bläddra i källkod

Merge pull request #11123 from netchampfaris/unzip-handle-folders

fix: Handle directories in unzip
version-14
mergify[bot] 4 år sedan
committed by GitHub
förälder
incheckning
f6920c47a9
Ingen känd nyckel hittad för denna signaturen i databasen GPG-nyckel ID: 4AEE18F83AFDEB23
1 ändrade filer med 20 tillägg och 19 borttagningar
  1. +20
    -19
      frappe/core/doctype/file/file.py

+ 20
- 19
frappe/core/doctype/file/file.py Visa fil

@@ -278,25 +278,26 @@ class File(Document):
base_url = os.path.dirname(self.file_url)

files = []
with zipfile.ZipFile(zip_path) as zf:
zf.extractall(os.path.dirname(zip_path))
for info in zf.infolist():
if not info.filename.startswith('__MACOSX'):
file_url = file_url = base_url + '/' + info.filename
file_name = frappe.db.get_value('File', dict(file_url=file_url))
if file_name:
file_doc = frappe.get_doc('File', file_name)
else:
file_doc = frappe.new_doc("File")
file_doc.file_name = info.filename
file_doc.file_size = info.file_size
file_doc.folder = self.folder
file_doc.is_private = self.is_private
file_doc.file_url = file_url
file_doc.attached_to_doctype = self.attached_to_doctype
file_doc.attached_to_name = self.attached_to_name
file_doc.save()
files.append(file_doc)
with zipfile.ZipFile(zip_path) as z:
for file in z.filelist:
if file.is_dir() or file.filename.startswith('__MACOSX/'):
# skip directories and macos hidden directory
continue

filename = os.path.basename(file.filename)
if filename.startswith('.'):
# skip hidden files
continue

file_doc = frappe.new_doc('File')
file_doc.content = z.read(file.filename)
file_doc.file_name = filename
file_doc.folder = self.folder
file_doc.is_private = self.is_private
file_doc.attached_to_doctype = self.attached_to_doctype
file_doc.attached_to_name = self.attached_to_name
file_doc.save()
files.append(file_doc)

frappe.delete_doc('File', self.name)
return files


Laddar…
Avbryt
Spara