diff --git a/app.py b/app.py index 5ec0563..22ccaa3 100755 --- a/app.py +++ b/app.py @@ -269,8 +269,7 @@ def validate_calibration(): return redirect('/') -@app.route('/download-object/') -def download_object(id: int): +def download_object(id: int, tar: archive.ArchiveSender): conn = db.get() object = db.Object.get_from_id(id, conn).full(conn) @@ -285,8 +284,6 @@ def download_object(id: int): ] # Create archive file to send - tar = archive.TarSender() - for calibration_index, (calib, acquisitions) in enumerate(acquisitions_grouped): calibration_dir = join(config.CALIBRATION_DIR, str(calib.id)) @@ -310,6 +307,16 @@ def download_object(id: int): return tar.response() +@app.route('/download-object/tar/') +def download_object_tar(id: int): + return download_object(id, archive.TarSender()) + + +@app.route('/download-object/zip/') +def download_object_zip(id: int): + return download_object(id, archive.ZipSender()) + + @app.route('/static/') def send_static(path): return send_from_directory('static', path) diff --git a/archive.py b/archive.py index a1346b6..3a28610 100644 --- a/archive.py +++ b/archive.py @@ -154,7 +154,7 @@ def zip_local_file_header(filename: str, filepath: str, crc: int) -> bytes: # Field 11: filename (buffer[30:30+len(filename)]) buffer[30:30+len(filename)] = filename.encode('ascii') - return buffer + return bytes(buffer) def zip_central_directory_file_header(filename: str, filepath: str, crc: int, offset: int) -> bytes: @@ -208,7 +208,7 @@ def zip_central_directory_file_header(filename: str, filepath: str, crc: int, of # Field 16: filename (buffer[46:46+len(filename)]) buffer[46:46+len(filename)] = filename.encode('ascii') - return buffer + return bytes(buffer) def zip_end_of_central_directory(items_number: int, central_directory_size: int, central_directory_offset: int): @@ -230,12 +230,12 @@ def zip_end_of_central_directory(items_number: int, central_directory_size: int, buffer[12:16] = central_directory_size.to_bytes(4, byteorder='little') # Field 7: Offset of start of central directory (buffer[16:20]) - buffer[16:20] = central_directory_size.to_bytes(4, byteorder='little') + buffer[16:20] = central_directory_offset.to_bytes(4, byteorder='little') # Field 8: Comment length (buffer[20:22]) # Field 9: Comment (buffer[22:]) - return buffer + return bytes(buffer) class ZipSender(ArchiveSender): diff --git a/templates/object.html b/templates/object.html index 9366b98..4c33601 100644 --- a/templates/object.html +++ b/templates/object.html @@ -4,7 +4,10 @@