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) # и пишем в базу!
htmg.out ("Hello, debug mode!") for key in form: #htmg.out(key+" "+ form.getfirst(key, "") +"</br>") if "checkbox" in key: residlist.append(int(key.split("_")[1])) if len(residlist)==0: #если список пуст - выйти closeAsError ("Ошибка: список пуст") reslist=list() for resid in residlist: res = bmr.getResultFromDatabase(resid) # Получить результат из базы данных if res[0]==None: errlog+="Ошибка: такого результата нет в базе данных" else: reslist.append(res[0]) if len(reslist)==0: #если список результатов пуст, это из-за всяких ошибок может быть closeAsError ("Список результатов пуст") for result in reslist: #проверяем список результатов на однородность, то есть все результаты должны быть от одного протокола if not result.model==reslist[0].model or not result.typeOfTest==reslist[0].typeOfTest: closeAsError ("Ошибка: в выборке присутствуют результаты от разных протоколов") prot = bck.getProtocolFromDatabaseParams (reslist[0].model, reslist[0].typeOfTest) if prot[0]==None: closeAsError("Ошибка: в базе данных нет протокола под такой результат")
def outreportsgroup (residlist, form, name): """ residlist - список айди результатов form - дескриптор принятых параметрво формы name - имя набора парметров отчёта """ residlist.sort() res=str() err=str() errlog=str() reslist=list() for resid in residlist: res = bmr.getResultFromDatabase(resid) # Получить результат из базы данных if res[0]==None: errlog+="Ошибка: такого результата нет в базе данных" else: reslist.append(res[0]) if len(reslist)==0: #если список результатов пуст, это из-за всяких ошибок может быть return errlog for result in reslist: #проверяем список результатов на однородность, то есть все результаты должны быть от одного протокола if not result.model==reslist[0].model or not result.typeOfTest==reslist[0].typeOfTest: errlog+="Ошибка: в выборке присутствуют результаты от разных протоколов" return errlog prot = bck.getProtocolFromDatabaseParams (reslist[0].model, reslist[0].typeOfTest) if prot[0]==None: errlog+="Ошибка: в базе данных нет протокола под такой результат" return errlog protocol=prot[0] step=int(form.getfirst("field_step", "")) now = datetime.datetime.now() typeofthetest=form.getfirst("field_testtype", "") field_repformnumber = form.getfirst("field_repformnumber", "") res="<div align='center'> <p>ПРОТОКОЛ №{0} от {1}</p>".format (field_repformnumber, now.strftime("%Y-%m-%d")) #res="<div align='center'> <p>ПРОТОКОЛ № от "+now.strftime("%Y-%m-%d")+"</p> " res+="<p>"+typeofthetest+"</p>" res+="<p>"+result.model+"</p>" for i in range (0, len(reslist), step): outr=outreport(reslist[i:i+step], form, protocol, name) res+=outr[0]#+"<br style='page-break-after: always'> " res+=generateOneReportFooter (form, reslist) return res + err
if "delid" in form: # запустить сохранение delid = int(form.getfirst("delid", "")) dlitem = bmr.delItemFromResult(id, delid) if dlitem: htmg.out( htmg.throwError( "FR_resultedit.py", "Ошибка при удалении результата испытания: " + dlitem, errortype=None ) ) if "saveid" in form: # запустить сохранение saveid = int(form.getfirst("saveid", "")) svd = savedata(saveid, form) if svd[0]: htmg.out(htmg.throwError("FR_resultedit.py", "Ошибка при сохранении данных: " + svd[1], errortype=None)) # else: # htmg.out (htmg.throwError("FR_resultedit.py", "Данные сохранены успешно!"+svd[1], errortype=None)) result = bmr.getResultFromDatabase(id) if result[0] == None: htmg.throwError("FR_resultedit.py", "Ошибка получения результата из БД: " + result[1], errortype=None) else: htmg.out(outEditFormForResult(result[0], id)) htmg.out(htmg.generateHTMLFooter())