예제 #1
0
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, ""  # признак успешности операции
예제 #2
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)  # и пишем в базу!
예제 #3
0
    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("Ошибка: в базе данных нет протокола под такой результат")
예제 #4
0
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
예제 #5
0
    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())