Skip to content
This repository was archived by the owner on Jan 22, 2025. It is now read-only.

Commit 342df0c

Browse files
author
robinpdev
committed
fix selection download
1 parent adaf04c commit 342df0c

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

backend/pigeonhole/apps/submissions/models.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
if not registry_name:
2222
registry_name = "sel2-1.ugent.be:2002"
2323

24+
SUBMISSIONS_DIR = f"{str(settings.STATIC_ROOT)}/submissions"
2425

2526
def submission_folder_path(group_id, submission_id):
26-
return f"{str(settings.STATIC_ROOT)}/submissions/group_{group_id}/{submission_id}"
27+
return f"{SUBMISSIONS_DIR}/group_{group_id}/{submission_id}"
2728

2829

2930
def artifacts_folder_path(group_id, submission_id):

backend/pigeonhole/apps/submissions/views.py

+10-8
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,29 @@
2525
)
2626
from backend.pigeonhole.apps.submissions.permissions import CanAccessSubmission
2727
from backend.pigeonhole.filters import CustomPageNumberPagination
28-
from .models import submission_folder_path, submission_file_path
28+
from .models import submission_folder_path, submission_file_path, SUBMISSIONS_DIR
2929

3030

3131
class ZipUtilities:
3232

33-
def toZip(self, folderpaths, zip_path):
33+
def toZip(self, folderpaths, zip_path, root=SUBMISSIONS_DIR):
3434
zip_file = zipfile.ZipFile(zip_path, 'w')
3535

3636
for folder_path in folderpaths:
37+
print(folder_path)
3738
if os.path.isfile(folder_path):
38-
zip_file.write(folder_path)
39+
zip_file.write(folder_path, arcname=folder_path)
3940
else:
40-
self.addFolderToZip(zip_file, folder_path)
41+
self.addFolderToZip(zip_file, folder_path, root)
4142
zip_file.close()
4243

43-
def addFolderToZip(self, zip_file, folder):
44+
def addFolderToZip(self, zip_file, folder, root=SUBMISSIONS_DIR):
4445
for file in os.listdir(folder):
4546
full_path = os.path.join(folder, file)
4647
if os.path.isfile(full_path):
47-
zip_file.write(full_path)
48+
zip_file.write(full_path, arcname=os.path.relpath(folder, root) + '/' + file)
4849
elif os.path.isdir(full_path):
49-
self.addFolderToZip(zip_file, full_path)
50+
self.addFolderToZip(zip_file, full_path, root)
5051

5152

5253
class SubmissionsViewset(viewsets.ModelViewSet):
@@ -222,6 +223,7 @@ def download_selection(self, request, *args, **kwargs):
222223
else:
223224
path = 'backend/downloads/submissions.zip'
224225
submission_folders = []
226+
print(ids)
225227

226228
for sid in ids:
227229
submission = Submissions.objects.get(submission_id=sid)
@@ -239,7 +241,7 @@ def download_selection(self, request, *args, **kwargs):
239241

240242
utilities = ZipUtilities()
241243
filename = path
242-
utilities.toZip(submission_folders, filename)
244+
utilities.toZip(submission_folders, filename, SUBMISSIONS_DIR)
243245

244246
path = realpath(path)
245247
response = FileResponse(

0 commit comments

Comments
 (0)