33__copyright__ = 'Copyright (c) 2021-2024, Utrecht University'
44__license__ = 'GPLv3, see LICENSE'
55
6+ import csv
67import io
78import urllib .parse
89from typing import Iterator
@@ -123,7 +124,6 @@ def read_file_chunks(data_object: iRODSDataObject) -> Iterator[bytes]:
123124
124125@deposit_bp .route ('/browse/download_checksum_report' )
125126def download_report () -> Response :
126- output = ""
127127 path = request .args .get ("path" )
128128 format = request .args .get ("format" )
129129 coll = "/" + g .irods .zone + "/home" + path
@@ -132,15 +132,21 @@ def download_report() -> Response:
132132 if format == 'csv' :
133133 mime = 'text/csv'
134134 ext = '.csv'
135+ output_io = io .StringIO ()
136+ writer = csv .writer (output_io , quoting = csv .QUOTE_MINIMAL )
137+ writer .writerow (["filename" , "size" , "checksum" ])
135138 if response ['status' ] == 'ok' :
136139 for result in response ["data" ]:
137- output += f"{ result ['name' ]} ,{ result ['size' ]} ,{ result ['checksum' ]} \n "
140+ writer .writerow ([result ['name' ], result ['size' ], result ['checksum' ]])
141+ output = output_io .getvalue ()
138142 else :
139143 mime = 'text/plain'
140144 ext = '.txt'
145+ lines = []
141146 if response ['status' ] == 'ok' :
142147 for result in response ["data" ]:
143- output += f"{ result ['name' ]} { result ['size' ]} { result ['checksum' ]} \n "
148+ lines .append (f"{ result ['name' ]} { result ['size' ]} { result ['checksum' ]} " )
149+ output = "\n " .join (lines )
144150
145151 return Response (
146152 output ,
0 commit comments