From 0ad8ffe1c4c581570b30ac08cae8b55a2e86d960 Mon Sep 17 00:00:00 2001 From: Eric Phillips Date: Tue, 26 Oct 2021 21:08:17 -0600 Subject: [PATCH] added sanitization on insert, empty strings in integer columns are replaced with 0 --- flaskfdx/fdxsql.py | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/flaskfdx/fdxsql.py b/flaskfdx/fdxsql.py index 7ca5126..d439516 100644 --- a/flaskfdx/fdxsql.py +++ b/flaskfdx/fdxsql.py @@ -32,15 +32,29 @@ def insertData(conn, table, values): c.execute('INSERT INTO {} VALUES ({})'.format(table, holders), values) conn.commit() -def sanatizeTotals(values): +def sanitizeTotals(unsanitized): """ - checks cells and replaces empty string with 0 + checks indexes 2+ and replaces empty string with 0 """ + values = unsanitized[0:2] + for value in unsanitized[2:]: + if value: + values.append(value) + else: + values.append(0) + return tuple(values) -def sanatizeWorkarea(values): +def sanitizeWorkarea(unsanitized): """ checks indexes 6+ and replaces empty string with 0 """ + values = unsanitized[0:6] + for value in unsanitized[6:]: + if value: + values.append(value) + else: + values.append(0) + return tuple(values) def extractDsw(srcSheet, conn, reportDate): """ @@ -54,22 +68,24 @@ def extractDsw(srcSheet, conn, reportDate): #exit test comes first if 'Total' in srcSheet.cell(i,0).value: # We need to get the contract totals so we'll do that here - values = ('contract', reportDate, srcSheet.cell(i,6).value, + unsanitized = ['contract', reportDate, srcSheet.cell(i,6).value, srcSheet.cell(i,7).value, srcSheet.cell(i,8).value, srcSheet.cell(i,10).value, srcSheet.cell(i,11).value, srcSheet.cell(i,12).value, srcSheet.cell(i,13).value, srcSheet.cell(i,14).value, srcSheet.cell(i,20).value, srcSheet.cell(i,18).value, srcSheet.cell(i,32).value, - srcSheet.cell(i,33).value, srcSheet.cell(i,34).value) + srcSheet.cell(i,33).value, srcSheet.cell(i,34).value] + values = sanitizeTotals(unsanitized) insertData(conn, 'totals', values) i += 1 - values = ('terminal', reportDate, srcSheet.cell(i,6).value, + unsanitized = ['terminal', reportDate, srcSheet.cell(i,6).value, srcSheet.cell(i,7).value, srcSheet.cell(i,8).value, srcSheet.cell(i,10).value, srcSheet.cell(i,11).value, srcSheet.cell(i,12).value, srcSheet.cell(i,13).value, srcSheet.cell(i,14).value, srcSheet.cell(i,20).value, srcSheet.cell(i,18).value, srcSheet.cell(i,32).value, - srcSheet.cell(i,33).value, srcSheet.cell(i,34).value) + srcSheet.cell(i,33).value, srcSheet.cell(i,34).value] + values = sanitizeTotals(unsanitized) insertData(conn, 'totals', values) #we're done so exit break @@ -82,13 +98,15 @@ def extractDsw(srcSheet, conn, reportDate): else: tod = srcSheet.cell(i,26).value nod = srcSheet.cell(i,28).value - values = (srcSheet.cell(i,0).value, reportDate, srcSheet.cell(i,1).value, + unsanitized = [srcSheet.cell(i,0).value, reportDate, srcSheet.cell(i,1).value, srcSheet.cell(i,3).value, tod, nod, srcSheet.cell(i,9).value, srcSheet.cell(i,10).value, srcSheet.cell(i,11).value, srcSheet.cell(i,12).value, srcSheet.cell(i,2).value, srcSheet.cell(i,24).value, srcSheet.cell(i,13).value, - srcSheet.cell(i,19).value, srcSheet.cell(i,17).value) + srcSheet.cell(i,19).value, srcSheet.cell(i,17).value] + values = sanitizeWorkarea(unsanitized) + print(values) insertData(conn, 'dsw', values) if 'Svc' in srcSheet.cell(i,0).value: extract = True