def CommitRepository(inDir, Repo): """ Auto-commit a collection of upgraded QSOS evaluation sheets Side effect : Auto-commit on git repository @param inDir Path to directory of evaluations to be auto-commited @param Repo Path to QSOS repository """ #Statistics vars Errors = [] Submitted = 0 #Setup git repository core.setup(Repo) #Main loop : prepare data for auto-commit and proceed for filename in os.listdir(inDir): if filename.split(".")[-1] == "qsos": #Extract information from qsos file try: evaluation = readAndCleanXML(inDir + "/" + filename) email = evaluation.firstChild.firstChild.firstChild.firstChild.getElementsByTagName( "email")[0].firstChild.data name = evaluation.firstChild.firstChild.firstChild.firstChild.getElementsByTagName( "name")[0].firstChild.data message = "Auto-uplodaded file : " + filename eval = FileObject(file(inDir + "/" + filename), filename) except Exception, inst: Errors.append("Error occured when processing " + filename + ":" + str(inst)) #Invoke core submit method try: core.submit({ "Author": name, "E-mail": email, "Description": message, "Type": "Evaluation", "File": eval }) Submitted += 1 except Exception, inst: Errors.append("Error occured when submitting " + filename + ":" + str(inst))
def CommitRepository(inDir, Repo): """ Auto-commit a collection of upgraded QSOS evaluation sheets Side effect : Auto-commit on git repository @param inDir Path to directory of evaluations to be auto-commited @param Repo Path to QSOS repository """ #Statistics vars Errors = [] Submitted = 0 #Setup git repository core.setup(Repo) #Main loop : prepare data for auto-commit and proceed for filename in os.listdir(inDir) : if filename.split(".")[ - 1] == "qsos" : #Extract information from qsos file try: evaluation = readAndCleanXML(inDir + "/" + filename) email = evaluation.firstChild.firstChild.firstChild.firstChild.getElementsByTagName("email")[0].firstChild.data name = evaluation.firstChild.firstChild.firstChild.firstChild.getElementsByTagName("name")[0].firstChild.data message = "Auto-uplodaded file : " + filename eval = FileObject(file(inDir + "/" + filename), filename) except Exception, inst : Errors.append("Error occured when processing " + filename + ":" + str(inst)) #Invoke core submit method try: core.submit({"Author":name, "E-mail":email, "Description":message, "Type":"Evaluation", "File":eval}) Submitted += 1 except Exception, inst : Errors.append("Error occured when submitting " + filename + ":" + str(inst))
def UpgradeEvaluationSheet(sheet, family, tmpDir): """ Upgrades a QSOS evaluation sheet from old format to 2.0 format Side effect : The upgraded evaluation sheet is created into the outDir folder @param sheet The sheet to be upgraded @param outDir Path to output directory @param Repo Path to QSOS repository """ #Read and clean evaluation evaluation = readAndCleanXML(sheet) #Create structure of output document output = minidom.Document() root = output.createElement("document") output.appendChild(root) #Create header header = output.createElement("header") root.appendChild(header) #Copy sections for section in evaluation.firstChild.childNodes[1:] : root.appendChild(section) #Import authors and dates header.appendChild(evaluation.firstChild.getElementsByTagName("authors")[0]) header.appendChild(evaluation.firstChild.getElementsByTagName("dates")[0]) #Re-build header properties from repository's template try : appname = evaluation.firstChild.getElementsByTagName("qsosappname")[0].firstChild.data except Exception : appname = evaluation.firstChild.getElementsByTagName("appname")[0].firstChild.data.lower() tag = output.createElement("qsosappname") tag.appendChild(output.createTextNode(appname)) header.appendChild(tag) properties = ["language", "appname", "licenseid", "licensedesc","url", "desc", "demourl", "qsosappname", "qsosspecificformat"] for node in properties : try : header.appendChild(evaluation.firstChild.getElementsByTagName(node)[0]) except IndexError : pass #Set qsosformat to 2.0 format = output.createElement("qsosformat") format.appendChild(output.createTextNode("2.0")) header.appendChild(format) #Set correct release from evaluation sheet release = evaluation.firstChild.getElementsByTagName("release")[0].firstChild.data version = output.createElement("release") version.appendChild(output.createTextNode(release)) header.appendChild(version) #Add appfamilies appfamilies = output.createElement("qsosappfamilies") appfamily = output.createElement("qsosappfamily") appfamily.appendChild(output.createTextNode(family)) appfamilies.appendChild(appfamily) header.appendChild(appfamilies) #Write-out new evaluation sheet file = open(tmpDir + "/" + appname + "-" + release + ".qsos", 'w') file.write(output.toxml('utf-8')) file.close()
def UpgradeEvaluationSheet(sheet, family, tmpDir): """ Upgrades a QSOS evaluation sheet from old format to 2.0 format Side effect : The upgraded evaluation sheet is created into the outDir folder @param sheet The sheet to be upgraded @param outDir Path to output directory @param Repo Path to QSOS repository """ #Read and clean evaluation evaluation = readAndCleanXML(sheet) #Create structure of output document output = minidom.Document() root = output.createElement("document") output.appendChild(root) #Create header header = output.createElement("header") root.appendChild(header) #Copy sections for section in evaluation.firstChild.childNodes[1:]: root.appendChild(section) #Import authors and dates header.appendChild( evaluation.firstChild.getElementsByTagName("authors")[0]) header.appendChild(evaluation.firstChild.getElementsByTagName("dates")[0]) #Re-build header properties from repository's template try: appname = evaluation.firstChild.getElementsByTagName( "qsosappname")[0].firstChild.data except Exception: appname = evaluation.firstChild.getElementsByTagName( "appname")[0].firstChild.data.lower() tag = output.createElement("qsosappname") tag.appendChild(output.createTextNode(appname)) header.appendChild(tag) properties = [ "language", "appname", "licenseid", "licensedesc", "url", "desc", "demourl", "qsosappname", "qsosspecificformat" ] for node in properties: try: header.appendChild( evaluation.firstChild.getElementsByTagName(node)[0]) except IndexError: pass #Set qsosformat to 2.0 format = output.createElement("qsosformat") format.appendChild(output.createTextNode("2.0")) header.appendChild(format) #Set correct release from evaluation sheet release = evaluation.firstChild.getElementsByTagName( "release")[0].firstChild.data version = output.createElement("release") version.appendChild(output.createTextNode(release)) header.appendChild(version) #Add appfamilies appfamilies = output.createElement("qsosappfamilies") appfamily = output.createElement("qsosappfamily") appfamily.appendChild(output.createTextNode(family)) appfamilies.appendChild(appfamily) header.appendChild(appfamilies) #Write-out new evaluation sheet file = open(tmpDir + "/" + appname + "-" + release + ".qsos", 'w') file.write(output.toxml('utf-8')) file.close()