|
7 | 7 | # pylint: disable=E0202, consider-merging-isinstance, arguments-differ, keyword-arg-before-vararg |
8 | 8 | import collections |
9 | 9 | import csv |
| 10 | +import io |
10 | 11 | import json |
11 | 12 | import os |
12 | | -import tempfile |
| 13 | +import sys |
13 | 14 |
|
14 | 15 | import click |
15 | 16 | from rich import box |
@@ -448,25 +449,45 @@ def _format_list_objects(result): |
448 | 449 |
|
449 | 450 | def csv_output_format(data, delimiter=','): |
450 | 451 | """Formating a table to csv format and show it.""" |
451 | | - data = clean_null_table_rows(data) |
452 | | - with tempfile.TemporaryDirectory() as temp_file: |
453 | | - f_name = os.path.join(temp_file, 'temp_csv_file') |
454 | | - with open(f_name, 'w', encoding='UTF8') as file: |
455 | | - writer = csv.writer(file, delimiter=delimiter) |
456 | | - writer.writerow(data.columns) |
457 | | - writer.writerows(data.rows) |
458 | | - with open(f_name, 'r', encoding='UTF8') as file: |
459 | | - csv_file = csv.reader(file, delimiter='\t') |
460 | | - for row in csv_file: |
461 | | - if len(row) != 0: |
462 | | - print(row[0]) |
| 452 | + data = clean_table(data, delimiter) |
| 453 | + write_csv_format(sys.stdout, data, delimiter) |
463 | 454 | return '' |
464 | 455 |
|
465 | 456 |
|
466 | | -def clean_null_table_rows(data): |
467 | | - """Delete Null fields by '-', in a table""" |
468 | | - for index_i, row in enumerate(data.rows): |
469 | | - for index_j, value in enumerate(row): |
| 457 | +def clean_table(data, delimiter): |
| 458 | + """Delete Null fields by '-' and fix nested table in table""" |
| 459 | + new_data_row = [] |
| 460 | + for row in data.rows: |
| 461 | + new_value = [] |
| 462 | + for value in row: |
470 | 463 | if str(value) == 'NULL': |
471 | | - data.rows[index_i][index_j] = '-' |
| 464 | + value = '-' |
| 465 | + |
| 466 | + if str(type(value)) == "<class 'SoftLayer.CLI.formatting.Table'>": |
| 467 | + string_io = io.StringIO() |
| 468 | + write_csv_format(string_io, value, delimiter) |
| 469 | + |
| 470 | + nested_table_converted = string_io.getvalue() |
| 471 | + nested_table_converted = nested_table_converted.replace('\r', '').split('\n') |
| 472 | + nested_table_converted.pop() |
| 473 | + |
| 474 | + title_nested_table = new_value.pop() |
| 475 | + for item in nested_table_converted: |
| 476 | + new_value.append(title_nested_table) |
| 477 | + new_value.append(item) |
| 478 | + new_data_row.append(new_value) |
| 479 | + new_value = [] |
| 480 | + else: |
| 481 | + new_value.append(value) |
| 482 | + |
| 483 | + if len(new_value) != 0: |
| 484 | + new_data_row.append(new_value) |
| 485 | + data.rows = new_data_row |
472 | 486 | return data |
| 487 | + |
| 488 | + |
| 489 | +def write_csv_format(support_output, data, delimiter): |
| 490 | + """Write csv format to supported output""" |
| 491 | + writer = csv.writer(support_output, delimiter=delimiter) |
| 492 | + writer.writerow(data.columns) |
| 493 | + writer.writerows(data.rows) |
0 commit comments