Bladeren bron

Adding objFunc to importXLSX.py

Andrej 1 week geleden
bovenliggende
commit
aa9dd145a6
1 gewijzigde bestanden met toevoegingen van 20 en 4 verwijderingen
  1. 20 4
      importXLSX.py

+ 20 - 4
importXLSX.py

@@ -323,8 +323,9 @@ def rowValid(df,r,pars):
 def updateAndValidateEntry(e,pars):
    return True
 
-def generateEntries(df,r,getId,pars):
+def generateEntries(df,r,objFunc,pars):
    idField=pars.get('idField','ParticipantId')
+   getId=objFunc['getId']
    id=getId(df,r,pars)    
    entry={}
    entry[idField]=id
@@ -352,12 +353,25 @@ def setParsingObject(pars):
    print(f'aliases: {alias}')
    return obj
 
+def setFuncObject(getId,modify,convertLookup,rowValid,updateAndValidateEntry):
+   obj={}
+   obj['getId']=getId
+   obj['modify']=modify
+   obj['convertLookup']=convertLookup
+   obj['rowValid']=rowValid
+   obj['updateAndValidateEntry']=updateAndValidateEntry
+   return obj
 
-def setEntry(entry,df,r,objParse,pMap,pars):
+def setEntry(entry,df,r,objParse,objFunc,pMap,pars):
 
    additionalVars=pars.get('additionalVars',{})
    seqNumOffset=pars.get('seqNumOffset',0)
    idField=pars.get('idField','ParticipantId')
+
+   modify=objFunc['modify']
+   convertLookup=objFunc['convertLookup']
+   updateAndValidateEntry=objFunc['updateAndValidateEntry']
+
    eId=entry[idField]
 
    for v in df.columns:
@@ -443,6 +457,7 @@ def importData(pars,filename,getId=getId,modify=modify,\
    updateAlias=pars.get('updateAlias',lambda x,y: x)
    copyColumns=pars.get('copyColumns',{})
 
+   objFunc=setFuncObject(getId,modify,convertLookup,rowValid,updateAndValidateEntry) 
    objParse=setParsingObject(pars)
 
    df=pandas.read_excel(filename,sheet_name=sheet_name,skiprows=skiprows,\
@@ -462,9 +477,10 @@ def importData(pars,filename,getId=getId,modify=modify,\
    for r in idx:
       if not rowValid(df,r,pars):
          continue
-      rowEntries=generateEntries(df,r,getId,pars)
+      rowEntries=generateEntries(df,r,objFunc,pars)
+     
       for e in rowEntries:
-         e=setEntry(e,df,r,objParse,pMap,pars)
+         e=setEntry(e,df,r,objParse,objFunc,pMap,pars)
          if e==None:
             continue