Skip to content

Commit 2f036b3

Browse files
committed
fix: unarchiving of zip files
1 parent 920f5c6 commit 2f036b3

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

finder/contrib/archive/admin.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ def archive_selected(self, request, folder_id):
5959
inode_objects.append(inode_obj)
6060
if inode_obj.is_folder:
6161
for descendant in inode_obj.descendants:
62-
inode_objects.extend(descendant.listdir())
62+
inode_objects.extend(
63+
FileModel.objects.get_inode(id=entry['id'])
64+
for entry in descendant.listdir()
65+
)
6366

6467
filename = self.model.generate_filename(body['archive_name'])
6568
filename = f'{filename}.zip' if not filename.endswith('.zip') else filename

finder/models/folder.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django.utils.functional import cached_property
88
from django.utils.translation import gettext, gettext_lazy as _, ngettext
99

10+
1011
try:
1112
from django_cte import CTEManager as ModelManager
1213
except ImportError:
@@ -217,8 +218,9 @@ def retrieve(self, path):
217218
if isinstance(path, str):
218219
path = path.split('/')
219220
for part in path:
220-
if inodes := self.listdir(name=part):
221-
return next(inodes).retrieve(path[1:])
221+
if entry := self.listdir(name=part).first():
222+
proxy_obj = InodeModel.objects.get_proxy_object(entry)
223+
return proxy_obj.retrieve(path[1:])
222224
return None
223225
else:
224226
return self

0 commit comments

Comments
 (0)