81
81
project_version_column = 'Version Name'
82
82
project_phase_column = 'Version phase'
83
83
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
+
84
94
def process_csv_file (filename ):
85
95
file = open (filename )
86
96
type (file )
@@ -89,13 +99,23 @@ def process_csv_file(filename):
89
99
project_version_idx = None
90
100
project_phase_idx = None
91
101
for row in csvreader :
102
+ row_number = csvreader .line_num
92
103
if not (project_name_idx and project_version_idx and project_phase_idx ):
93
104
project_name_idx = row .index (project_name_column )
94
105
project_version_idx = row .index (project_version_column )
95
106
project_phase_idx = row .index (project_phase_column )
96
107
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
99
119
else :
100
120
logging .info ("Could not parse input file" )
101
121
sys .exit (1 )
@@ -107,14 +127,25 @@ def process_excel_file(filename):
107
127
project_name_idx = None
108
128
project_version_idx = None
109
129
project_phase_idx = None
130
+ row_number = 0
110
131
for row in ws .values :
132
+ row_number += 1
111
133
if not (project_name_idx and project_version_idx and project_phase_idx ):
112
134
project_name_idx = row .index (project_name_column )
113
135
project_version_idx = row .index (project_version_column )
114
136
project_phase_idx = row .index (project_phase_column )
115
137
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
118
149
else :
119
150
logging .info ("Could not parse input file" )
120
151
sys .exit (1 )
@@ -144,11 +175,6 @@ def process_project_version(project_name, version_name, phase):
144
175
return
145
176
logging .debug (f"Found { project ['name' ]} :{ version ['versionName' ]} " )
146
177
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
-
152
178
if phase == version ['phase' ]:
153
179
logging .info (f"Project { project_name } version { version_name } is already at { phase } . No update" )
154
180
return
@@ -187,5 +213,7 @@ def main():
187
213
logging .info (f"Processing CSV file { args .input_file } " )
188
214
process_csv_file (args .input_file )
189
215
216
+ print (summary_report )
217
+
190
218
if __name__ == "__main__" :
191
219
sys .exit (main ())
0 commit comments