def savedata(saveid, form): resultt = bmr.getResultFromDatabase(saveid) if resultt[0] == None: return 1, "Ошибка получения результата из БД saveid=" + str(saveid) import copy result = copy.deepcopy(resultt[0]) for key in result.proceduresResults: ifpassedstr = str(key) + "_hasPassedProcedure" if ifpassedstr in form: try: result.proceduresResults[key].hasPassedProcedure = int(form.getfirst(ifpassedstr, "")) == 1 # if int(form.getfirst(ifpassedstr, ""))==1: # result.proceduresResults[key].hasPassedProcedure=True # else: # result.proceduresResults[key].hasPassedProcedure=False # except BaseException: return 2, "ошибка при записи значения" else: return 3, "ошибка при записи значения, возможно значение не задано" for channel in result.proceduresResults[key].values1: for parameter in result.proceduresResults[key].values1[channel]: inpstr = str(key) + "_" + channel + "_" + parameter if inpstr in form: try: result.proceduresResults[key].values1[channel][parameter] = float(form.getfirst(inpstr, "")) except BaseException: return 2, "ошибка при записи значения" else: return 3, "ошибка при записи значения, возможно значение не задано" for parameter in result.proceduresResults[key].values_common: inpstr = str(key) + "_" + "common&&&" + "_" + parameter if inpstr in form: try: result.proceduresResults[key].values_common[parameter] = float(form.getfirst(inpstr, "")) except BaseException: return 4, "ошибка при записи значения (общего)" else: return 5, "ошибка при записи значения (общего), возможно значение не задано" wrtdb = bmr.writeResultToDatabase(result, idresult=saveid) if wrtdb: return 4, "Ошибка записи р. в БД " + str(wrtdb) # inpstr="<input type='text' name='{0}' value='{1}' >".format(str(prefix)+"_"+channel+"_"+parameter, str(rop.values1[channel][parameter])) return 0, "" # признак успешности операции
def insertTestsAccToProtocol(idres): """ Вставляет в результат пустые результаты испытаний, согласно протоколу @idres - айди результата """ resultt = bmr.getResultFromDatabase(idres) if resultt[0] == None: return 1, "Ошибка получения результата из БД idres=" + str(idres) result = resultt[0] protocolt = bck.getProtocolFromDatabaseParams(result.model, result.typeOfTest) if protocolt[0] == None: return 2, "Ошибка получения протокола из БД idres=" + protocolt[1] protocol = protocolt[0] for procedurekey in protocol.procedures: # для каждой процедуры из списка оных в протоколе if ( not procedurekey in result.proceduresResults.keys() ): # если процедура прописана в протоколе, но не имеется в результате protocolitem = protocol.procedures[procedurekey] # получаем описание процедуры в протоколе newrp = resultsOfProcedure() # создаём объект результата процедуры newrp.number = procedurekey # копируем номер newrp.hasPassedProcedure = False # устанавливаем флаг, успешна ли процедура newrp.values1 = dict() # объявляем значения словарём newrp.values_common = dict() # словарь название параметра-значение для общих величин # заполнение значений у общих величин for possibleres in protocolitem.listOfPossibleResultsCommon: newrp.values_common[possibleres] = 0 # заполнение значений у поканальных величин for channel in protocolitem.normal_values: # для каждого канала newrp.values1[channel] = dict() # объявляем словарём for possibleres in protocolitem.listOfPossibleResults: # и для каждого возможного результата newrp.values1[channel][possibleres] = 0 # впихиваем нулевое значение result.proceduresResults[procedurekey] = newrp # теперь вгоняем новый результат в процидурку return bmr.writeResultToDatabase(result, idres) # и пишем в базу!
def process(): global watchfolder, putfolder #получить список файлов files = os.listdir(watchfolder) textfilter = lambda x: x.endswith('.TXT') or x.endswith('.txt') xmlfilter=lambda x: x.endswith('.XML') or x.endswith('.xml') #textfiles = list(filter(lambda x: x.endswith('.TXT') or x.endswith('.txt'), files)) report="[INFO] Process {0} {1}\n".format(watchfolder, putfolder) for name in files: #print (prs.parseToResult (watchfolder+name)) #отсылка к бакенду - добавление результата в базу данных report+=name + "\n" st = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S') rs=None,'Invalid file extension' if textfilter(name): rs=prs.basicParserTextFormFilename (watchfolder+name) elif xmlfilter (name): rs = xprs.parceXml(watchfolder+name) if rs[0]==None: report+="[ERROR] "+st+" Не удалось распарсить результат имя файла="+name+"\n"+"Потому что "+rs[1] continue #сперва попробуем перенести файл #Из теперь неизвестных соображений, сначала пытаемся перенести в другую папку, а потом записать в базу данных mvs=1 try: shutil.move(watchfolder+name, putfolder) except BaseException: log ("[ERROR]"+st+"Проблема при перемещении файла, возможно дублирование отчёта") print ("[ERROR]"+st+"Проблема при перемещении файла, возможно дублирование отчёта") mvs=0 if mvs: wr=bmr.writeResultToDatabase(rs[0]); if wr: report+="[ERROR] "+st+" При записи в БД произошла ошибка код="+str(wr)+"\n" else: report+="\t"+st+"Запись в БД произошла успешно "+name+"\n" #код поиска подходящего протокола, если не найдёт - то запишет и в протокол if bck.getProtocolFromDatabaseParams (rs[0].model, rs[0].typeOfTest)[0]==None: #если нет протокола такого в базе данных if textfilter (name): ap = prs.basicParserTextFormFilename (putfolder+name, type='protocol') elif xmlfilter (name): with open(putfolder+name, 'rt') as file: ap = xprs.parceXml(file,'prc') #распарсили протокол if ap[0] is not None: err=bck.writeProtocolToDatabase(ap[0], idprotocol=None) if err: log ("[ERROR]"+st+"Проблема при добавлении протокола в базу данных на этапе включения в БД {0}".format(err)) else: log ("[ERROR]"+st+"Проблема при добавлении протокола в базу данных на этапе парсинга {0}".format(ap[1])) log (report) print (report)