コード例 #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
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)