Skip to content

Commit 6bf8785

Browse files
authored
YDA-3474: improve checksum report CSV export
1 parent 7892b65 commit 6bf8785

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

deposit/deposit.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
__copyright__ = 'Copyright (c) 2021-2024, Utrecht University'
44
__license__ = 'GPLv3, see LICENSE'
55

6+
import csv
67
import io
78
import urllib.parse
89
from 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')
125126
def 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,

research/research.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
__copyright__ = 'Copyright (c) 2021-2024, Utrecht University'
55
__license__ = 'GPLv3, see LICENSE'
66

7+
import csv
78
import io
89
import os
910
import queue
@@ -303,7 +304,6 @@ def form() -> Response:
303304

304305
@research_bp.route('/browse/download_checksum_report')
305306
def download_report() -> Response:
306-
output = ""
307307
path = request.args.get("path")
308308
format = request.args.get("format")
309309
coll = "/" + g.irods.zone + "/home" + path
@@ -312,15 +312,21 @@ def download_report() -> Response:
312312
if format == 'csv':
313313
mime = 'text/csv'
314314
ext = '.csv'
315+
output_io = io.StringIO()
316+
writer = csv.writer(output_io, quoting=csv.QUOTE_MINIMAL)
317+
writer.writerow(["filename", "size", "checksum"])
315318
if response['status'] == 'ok':
316319
for result in response["data"]:
317-
output += f"{result['name']},{result['size']},{result['checksum']} \n"
320+
writer.writerow([result['name'], result['size'], result['checksum']])
321+
output = output_io.getvalue()
318322
else:
319323
mime = 'text/plain'
320324
ext = '.txt'
325+
lines = []
321326
if response['status'] == 'ok':
322327
for result in response["data"]:
323-
output += f"{result['name']} {result['size']} {result['checksum']} \n"
328+
lines.append(f"{result['name']} {result['size']} {result['checksum']}")
329+
output = "\n".join(lines)
324330

325331
return Response(
326332
output,

vault/vault.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
__copyright__ = 'Copyright (c) 2021-2024, Utrecht University'
44
__license__ = 'GPLv3, see LICENSE'
55

6+
import csv
67
import io
78
import urllib.parse
89
from typing import Iterator
@@ -127,7 +128,6 @@ def metadata(reference: str) -> Response:
127128

128129
@vault_bp.route('/browse/download_checksum_report')
129130
def download_report() -> Response:
130-
output = ""
131131
path = request.args.get("path")
132132
format = request.args.get("format")
133133
coll = "/" + g.irods.zone + "/home" + path
@@ -136,15 +136,21 @@ def download_report() -> Response:
136136
if format == 'csv':
137137
mime = 'text/csv'
138138
ext = '.csv'
139+
output_io = io.StringIO()
140+
writer = csv.writer(output_io, quoting=csv.QUOTE_MINIMAL)
141+
writer.writerow(["filename", "size", "checksum"])
139142
if response['status'] == 'ok':
140143
for result in response["data"]:
141-
output += f"{result['name']},{result['size']},{result['checksum']} \n"
144+
writer.writerow([result['name'], result['size'], result['checksum']])
145+
output = output_io.getvalue()
142146
else:
143147
mime = 'text/plain'
144148
ext = '.txt'
149+
lines = []
145150
if response['status'] == 'ok':
146151
for result in response["data"]:
147-
output += f"{result['name']} {result['size']} {result['checksum']} \n"
152+
lines.append(f"{result['name']} {result['size']} {result['checksum']}")
153+
output = "\n".join(lines)
148154

149155
return Response(
150156
output,

0 commit comments

Comments
 (0)