|
|
@@ -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 |
|
|
|