25
25
)
26
26
from backend .pigeonhole .apps .submissions .permissions import CanAccessSubmission
27
27
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
29
29
30
30
31
31
class ZipUtilities :
32
32
33
- def toZip (self , folderpaths , zip_path ):
33
+ def toZip (self , folderpaths , zip_path , root = SUBMISSIONS_DIR ):
34
34
zip_file = zipfile .ZipFile (zip_path , 'w' )
35
35
36
36
for folder_path in folderpaths :
37
+ print (folder_path )
37
38
if os .path .isfile (folder_path ):
38
- zip_file .write (folder_path )
39
+ zip_file .write (folder_path , arcname = folder_path )
39
40
else :
40
- self .addFolderToZip (zip_file , folder_path )
41
+ self .addFolderToZip (zip_file , folder_path , root )
41
42
zip_file .close ()
42
43
43
- def addFolderToZip (self , zip_file , folder ):
44
+ def addFolderToZip (self , zip_file , folder , root = SUBMISSIONS_DIR ):
44
45
for file in os .listdir (folder ):
45
46
full_path = os .path .join (folder , file )
46
47
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 )
48
49
elif os .path .isdir (full_path ):
49
- self .addFolderToZip (zip_file , full_path )
50
+ self .addFolderToZip (zip_file , full_path , root )
50
51
51
52
52
53
class SubmissionsViewset (viewsets .ModelViewSet ):
@@ -222,6 +223,7 @@ def download_selection(self, request, *args, **kwargs):
222
223
else :
223
224
path = 'backend/downloads/submissions.zip'
224
225
submission_folders = []
226
+ print (ids )
225
227
226
228
for sid in ids :
227
229
submission = Submissions .objects .get (submission_id = sid )
@@ -239,7 +241,7 @@ def download_selection(self, request, *args, **kwargs):
239
241
240
242
utilities = ZipUtilities ()
241
243
filename = path
242
- utilities .toZip (submission_folders , filename )
244
+ utilities .toZip (submission_folders , filename , SUBMISSIONS_DIR )
243
245
244
246
path = realpath (path )
245
247
response = FileResponse (
0 commit comments