Skip to content

Commit 8844f3d

Browse files
committed
edge cases processed
1 parent 6d78f65 commit 8844f3d

File tree

1 file changed

+37
-9
lines changed

1 file changed

+37
-9
lines changed

examples/client/batch_update_project_phase.py

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@
8181
project_version_column = 'Version Name'
8282
project_phase_column = 'Version phase'
8383

84+
summary_report = '''
85+
86+
Summary
87+
88+
'''
89+
90+
def append_to_summary(message):
91+
global summary_report
92+
summary_report += message + '\n'
93+
8494
def process_csv_file(filename):
8595
file = open(filename)
8696
type(file)
@@ -89,13 +99,23 @@ def process_csv_file(filename):
8999
project_version_idx = None
90100
project_phase_idx = None
91101
for row in csvreader:
102+
row_number = csvreader.line_num
92103
if not (project_name_idx and project_version_idx and project_phase_idx):
93104
project_name_idx = row.index(project_name_column)
94105
project_version_idx = row.index(project_version_column)
95106
project_phase_idx = row.index(project_phase_column)
96107
elif project_name_idx and project_version_idx and project_phase_idx:
97-
logging.info(f"Processing {row[project_name_idx]} : {row[project_version_idx]} with {row[project_phase_idx]}")
98-
process_project_version(row[project_name_idx], row[project_version_idx], row[project_phase_idx])
108+
project_name = row[project_name_idx].strip() if project_name_idx < len(row) else ''
109+
version_name = row[project_version_idx].strip() if project_version_idx < len(row) else ''
110+
phase = row[project_phase_idx] if project_phase_idx < len(row) else ''
111+
if project_name and version_name and phase and phase.strip().upper() in VERSION_PHASES:
112+
logging.info(f"Processing row {row_number:4}: {row[project_name_idx]} : {row[project_version_idx]} with {row[project_phase_idx]}")
113+
process_project_version(project_name, version_name, phase.strip().upper())
114+
else:
115+
message = f"Processing row {row_number:}. Invalid data: Project '{project_name}' version '{version_name}' phase '{phase}', skipping"
116+
logging.info(message)
117+
append_to_summary(message)
118+
continue
99119
else:
100120
logging.info("Could not parse input file")
101121
sys.exit(1)
@@ -107,14 +127,25 @@ def process_excel_file(filename):
107127
project_name_idx = None
108128
project_version_idx = None
109129
project_phase_idx = None
130+
row_number = 0
110131
for row in ws.values:
132+
row_number += 1
111133
if not (project_name_idx and project_version_idx and project_phase_idx):
112134
project_name_idx = row.index(project_name_column)
113135
project_version_idx = row.index(project_version_column)
114136
project_phase_idx = row.index(project_phase_column)
115137
elif project_name_idx and project_version_idx and project_phase_idx:
116-
logging.info(f"Processing {row[project_name_idx]} : {row[project_version_idx]} with {row[project_phase_idx]}")
117-
process_project_version(row[project_name_idx], row[project_version_idx], row[project_phase_idx])
138+
project_name = row[project_name_idx] if project_name_idx < len(row) else ''
139+
version_name = row[project_version_idx] if project_version_idx < len(row) else ''
140+
phase = row[project_phase_idx] if project_phase_idx < len(row) else ''
141+
if project_name and version_name and phase and phase.strip().upper() in VERSION_PHASES:
142+
logging.info(f"Processing row {row_number:4}: {row[project_name_idx]} : {row[project_version_idx]} with {row[project_phase_idx]}")
143+
process_project_version(project_name.strip(), version_name.strip(), phase.strip().upper())
144+
else:
145+
message = f"Processing row {row_number:}. Invalid data: Project '{project_name}' version '{version_name}' phase '{phase}', skipping"
146+
logging.info(message)
147+
append_to_summary(message)
148+
continue
118149
else:
119150
logging.info("Could not parse input file")
120151
sys.exit(1)
@@ -144,11 +175,6 @@ def process_project_version(project_name, version_name, phase):
144175
return
145176
logging.debug(f"Found {project['name']}:{version['versionName']}")
146177

147-
try:
148-
assert phase in VERSION_PHASES, f"Invalid version phase {phase}for {project_name} {version_name}"
149-
except AssertionError:
150-
logging.warning(f"Invalid version phase {phase}for {project_name} {version_name}. Skipping")
151-
152178
if phase == version['phase' ]:
153179
logging.info(f"Project {project_name} version {version_name} is already at {phase}. No update")
154180
return
@@ -187,5 +213,7 @@ def main():
187213
logging.info(f"Processing CSV file {args.input_file}")
188214
process_csv_file(args.input_file)
189215

216+
print (summary_report)
217+
190218
if __name__ == "__main__":
191219
sys.exit(main())

0 commit comments

Comments
 (0)