def outFilledForm (procid, name):
    """
    Запускает ядерную функцию, предварительно вынув протокол из базы
    """
    out = str()
    proc=bck.getProtocolFromDatabase(procid) # Возвращает объект испытания

    if  proc[0]==None:
        out+=htmg.throwError("FR_ReportParametersEdit", proc[1])
        return out
    else:
        return "<form method = 'POST' action = 'FR_ReportParametersEdit.py?id={0}&save=1 ' >".format (str(procid))+\
               outFilledFormCore(proc[0], name, procid) + \
               "<input type='submit' value='Сохранить'> "+"</form>"
def outNormalForm (id):
    """
    Выводит пустую форму.
    @id - айди протокола, в который испытание надо будет добавить
    """
    #получить протокол из базы
    #оттуда взять список каналов
    #на основе этого списка пстроить форму
    protocol = bck.getProtocolFromDatabase(id)[0];
    if protocol==None:
        return htmg.throwError("FRtestedit", "Нет такого протокола, испытание которого намереваемся править")

    listchannels = protocol.channelname
    out=" <script> \n  add_forms_to_table("+listchannels.__str__()+" ); </script>"
    return out
def outFilledFormResult(resultsOfProcedure):
    """
    Выводит заполненную форму

    @resultsOfProcedure - результат процедуры, объект
    """

    out=outNormalForm(id)
    proc=bck.getTestFromProtocol (id, procid) # Возвращает объект испытания


    if  proc==None:
        out+=htmg.throwError("FRtestedit", "Нет такого испытания в протоколе, которое мы намереваемся править")
        return out

    out+="\n<script>\n";

    #  number=int() # номер порядковый
    # name=""  # имя процедуры
    # mode_common=dict() # словарь общих режимов имя-значение
    # mode_channel=dict(dict()) # словарь словарей режимов по каналам (имя канала - имя параметра - значение)
    # normal_values=dict(dict()) # словарь словарей значений нормативов название канала-название параметра-строка больше-меньше (значение параметра)
    # listOfPossibleResults=list()  # список полей результатов, каковые должны быть отражены в протоколе
    out+="var name=\""+proc.name+"\";\n"
    out+="var pars="+proc.listOfPossibleResults.__str__()+";\n"

    out+="var mode_common="+proc.mode_common.__str__()+";\n"
    out+="var mode_channel="+proc.mode_channel.__str__()+";\n"
    out+="var normal_values="+proc.normal_values.__str__()+";\n"
    out+="""
    fillListform(pars, 'pars');
    fillDictForm (mode_common, 'mode_common');
    fillDict2DictForm (mode_channel, 'mode_channel');
    fillDict2DictForm (normal_values, 'normal_values');
    setname(name, 'name');
    """

    out+="</script>\n";

    return out
def generateHTMLOLD (resultslist:list, protocol:AProtocol, form):
    """
    @resultslist список результатов
    @protocol протокол

    Генерирует тело таблицы
    """
    if (resultslist == None):
        htmg.throwError("makereports", "Ошибка, None как список резльутатов")
        return ""

    if (protocol == None):
        htmg.throwError("makereports", "Ошибка, None как протокол")
        return ""

    if (resultslist.__len__==0):
        htmg.throwError("makereports", "Нет результатов в списке!")
        return ""


    res=generageHTMLProtocolHeader(resultslist.__len__(), resultslist[0], form)
    #res+=generageHTMLProtocolHeader(resultslist[0])  #resultslist - это список результатов. Результатов всегда список, тогда как протокол - один
    #таблица пошла

    #Здесь можно напистаьпроверку на соответствие результатов протоколу

    for i in protocol.procedures.keys():
        p=protocol.procedures[i]
        res+="<tr>"+p.toHTML(out3=0)
        for k in resultslist:
            if i in k.proceduresResults.keys():
                res+="<td>{0}</td>".format(k.proceduresResults[i].toHTML())
            else:
                res+="<td> </td>"
        res+="</tr>"
        #res+= """<tr> {0} <td> </td> <td> </td> <td> </td> </tr> """.format(p.toHTML())


    res += htmg.generateHTMLFooterRep()
    return res
#у этой страницы могут быть три параметра - id, то есть айди протокола, есть всегда и может быть idtest - айди испытания
#ещё параметр saveid - тогда значит надо сохранить (т. е. добавить или перезаписать) введённое испытание

form = cgi.FieldStorage()

if "saveid" in form:
    htmg.out ("Content-Type: text/html;charset=utf-8\n\n")
    htmg.out(writeTestFromInputParameters(form))
    exit(0)

#вызвать сохраение данных и выйти из скрипта!

if "id" not in form:
    htmg.out(htmg.generateHTMLMetaHeader())
    htmg.out(htmg.throwError("FR_oneresultedit.py", "Не получен ID результата"))
    htmg.out(htmg.generateHTMLFooter())
    exit(0) #а  можно ли вообще так выходить из cgi?

id=int(form.getfirst("id", ""))
htmg.out(outGeneral(id))

if "testedit" in form:
    testedit=int(form.getfirst("testedit", ""))
    htmg.out(outFilledForm (id, testedit))
else:
    htmg.out(outNormalForm (id))

htmg.out(htmg.generateHTMLFooter())

    prot.dictOfReportFormParameters[name]=rfp
    #либо создаёт, либо перезаписывает параметры процедуры под таким названием


    return bck.writeProtocolToDatabase(prot, id)





form = cgi.FieldStorage()
htmg.out(htmg.generateHTMLMetaHeader())


if "id" not in form:
    htmg.out(htmg.throwError("FR_ReportParametersEdit.py", "Не получен ID протокола"))

else:

    id=int(form.getfirst("id", ""))



    if "save" in form: #запрос на сохранение
        errcode=saveCameData(form) #сохранение
        if errcode:
            #если ошибка
            htmg.out(htmg.throwError("FR_ReportParametersEdit.py", "Ошибка при сохранении {0}".format('Не задано имя набора параметров' if errcode==2 else '') ))
            htmg.out("<br/><a href=\'FRprotocolViewEdit.py?id={0}\'>Вернуться к протоколу</a>".format(id))
            htmg.out(htmg.generateHTMLFooter())
            exit(0)
Beispiel #7
0
#у этой страницы могут быть три параметра - id, то есть айди протокола, есть всегда и может быть idtest - айди испытания
#ещё параметр saveid - тогда значит надо сохранить (т. е. добавить или перезаписать) введённое испытание

form = cgi.FieldStorage()

if "saveid" in form:  #если предлагается сохранить испытание в протокол. saveid - идентификатор протокола.
    htmg.out ("Content-Type: text/html;charset=utf-8\n\n")
    htmg.out(writeTestFromInputParameters(form))
    exit(0)

#вызвать сохраение данных и выйти из скрипта!

if "id" not in form:
    htmg.out(htmg.generateHTMLMetaHeader())
    htmg.out(htmg.throwError("FRtestedit.py", "Не получен ID протокола"))
    htmg.out(htmg.generateHTMLFooter())
    exit(0) #а  можно ли вообще так выходить из cgi?

id=int(form.getfirst("id", ""))

if "testedit" in form:
    testedit=int(form.getfirst("testedit", ""))

    htmg.out(outFilledForm (id, testedit))
else:
    htmg.out(outGeneral(id))
    htmg.out(outNormalForm (id))

htmg.out(htmg.generateHTMLFooter())
def generateHTML (resultslist:list, protocol:AProtocol, form, name=None):
    """
    @resultslist список результатов
    @protocol протокол

    @name - имя набора параметров отчёта

    Генерирует тело таблицы
    """
    if (resultslist == None):
        htmg.throwError("makereports", "Ошибка, None как список резльутатов")
        return ""

    if (protocol == None):
        htmg.throwError("makereports", "Ошибка, None как протокол")
        return ""

    if (resultslist.__len__==0):
        htmg.throwError("makereports", "Нет результатов в списке!")
        return ""

#отсортируем выводимые по серийничку
    resultslist.sort(key=sortResultsBySerial)

    res=generageHTMLProtocolHeader(resultslist.__len__(), resultslist[0], form, resultslist)
    #res+=generageHTMLProtocolHeader(resultslist[0])  #resultslist - это список результатов. Результатов всегда список, тогда как протокол - один
    #таблица пошла

    #Здесь можно напистаьпроверку на соответствие результатов протоколу

    #ReportFormParameters



    # try:
    #     rfp=protocol.dictOfReportFormParameters[name]
    # except BaseException:
    #     rfp=None

    #rfp - ReportFormParameters




    for i in protocol.procedures.keys():
        p=protocol.procedures[i]

        prfp=None
        try:
            prfp=protocol.dictOfReportFormParameters[name].dictOfProceduresParameters[i]
        except BaseException:
            prfp=None

        #получили ProcedureReportFormParameters, если он есть



        res+="<tr style='page-break-inside: avoid' >"+p.toHTML(out3=0, prfp=prfp)

        for k in resultslist:
            if i in k.proceduresResults.keys():
                res+="<td>{0}</td>".format(k.proceduresResults[i].toHTML(prfp))
            else:
                res+="<td> </td>"
        res+="</tr>"
        #res+= """<tr> {0} <td> </td> <td> </td> <td> </td> </tr> """.format(p.toHTML())


    res += """ </tbody>
    </table>"""
    return res
def view_protocol_by_id(id):
    gotval = bck.getProtocolFromDatabase (id)
    if gotval[0]==None:
        return htmg.throwError("FRProtocolViewEdit", "В базе данных нет такого протокола id="+str(id))
    return make_html_view_edit_protocol(id, gotval[0], gotval[1], gotval[2]) + outReportsParametersCombo (gotval[0], id)
#out("Content-Type: text/html;charset=utf-8\n\n")
#out("<html><head>\n\n")
#out("</head><body>\n\n")

#узнаём, есть ли айди в параметрах

form = cgi.FieldStorage()


#TODO: вызов добавления результата по протоколу



htmg.out (htmg.generateHTMLMetaHeader("Обзор протокола"))
if "id" not in form:
    htmg.out (htmg.throwError("FRprotocolViewEdit.py", "Ошибка: не предоставлен id протокола", errortype=None))
else:
    id=int(form.getfirst("id", ""))

    if ("delid") in form:
        delid=int(form.getfirst("delid", ""))
        bck.delTestFromProtocol(id, delid)
        htmg.out("Испытание удалено успешно!"+str(id)+"  "+str(delid))
        htmg.out("<script> document.location.replace('FRprotocolViewEdit.py?id="+str(id)+"');</script>")
    htmg.out (view_protocol_by_id(id))


htmg.out(htmg.generateHTMLFooter())


htmg.out(htmg.generateHTMLFooter())
Beispiel #11
0
def outEditFormForResult(result: AResult, id):

    """
    Выводит форму отображения и редакции результата.
    в этой версии выводит вместе с данными из протокола,  такими, как название и такое прочее
    """

    protocolt = bck.getProtocolFromDatabaseParams(result.model, result.typeOfTest)

    if protocolt[0] == None:
        htmg.out(
            htmg.throwError(
                "FR_resultedit.py", "Ошибка при поиске протокола, соответствующего данному результату " + protocolt[1]
            )
        )
        return outEditFormForResultOld(result, id)

    protocol = protocolt[0]

    res = str()
    res += "<h1>Правка результата</h1>"
    # вывод справочной части
    st = "<b>{0}<b>: {1}<br/>\n"
    res += st.format("Модель", result.model)
    res += st.format("Вид теста", result.typeOfTest)
    res += st.format("Оператор", result.operator)
    res += st.format("Дата и время теста", result.testDateTime)
    res += st.format("Номер изделия", str(result.numOfProduct))
    res += st.format("Номер партии", str(result.numOfBatch))
    res += st.format("Прошёл ли тест", str(result.hasPassedTest))
    # вывод таблицы результатов
    res += "<br/><br/>"
    res += "<form action='FR_resultedit.py?id={0}&saveid={1}' method='post'> <table border=1>\n".format(
        str(id), str(id)
    )
    res += """
    <tr>
    <th>Название испытания</th>
    <th>Режим испытания</th>
    <th>Нормы на испытание</th>
    <th>Пройдено ли испытание</th>
    <th>Результаты испытания</th>

    <th>Удаление</th>
    </tr>"""

    klist = list(result.proceduresResults.keys())
    klist.sort()

    for key in klist:

        # for key, val in result.proceduresResults.items():
        val = result.proceduresResults[key]
        res += "<tr>\n"
        interactive_form = outResultsOfProcedureForm(val, key)
        delbtn = (
            " <input type='button' onclick=\"destroy('Вы уверенно хотите удалить данный результат?', 'FR_resultedit.py?id="
            + str(id)
            + "&delid="
            + str(key)
            + "' ) \"   value='Удаление'  >"
        )
        res += """{0} <td> {1} </td> <td> {2} </td> <td> {3} </td>
        """.format(
            protocol.procedures[key].toHTML(0),
            outfilledformforpassed(key, val.hasPassedProcedure),
            interactive_form,
            delbtn,
        )

        # {True: "Пройдено", False: "Не пройдено"}[val.hasPassedProcedure]

        res += "</tr>\n"
    res += "</table> <br/> <input type='submit' value='Сохранить'>    </form>"
    res += "<a href='FR_resultedit.py?id={0}&magic={1}'> Добавить надостающие испытания в результат из протокола </a>".format(
        id, id
    )
    return res
Beispiel #12
0
            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, ""  # признак успешности операции


htmg.out(htmg.generateHTMLMetaHeader("Правка результата") + "<br/><br/>")
form = cgi.FieldStorage()
if "id" not in form:
    htmg.out(htmg.throwError("FR_resultedit.py", "Ошибка: не предоставлен id результата", errortype=None))

else:
    id = int(form.getfirst("id", ""))

    if "magic" in form:
        magicres = insertTestsAccToProtocol(id)
        if magicres:
            htmg.out(
                htmg.throwError(
                    "FR_resultedit.py", "Ошибка при добавлении недостающих испытаний " + magicres, errortype=None
                )
            )

    if "delid" in form:  # запустить сохранение
        delid = int(form.getfirst("delid", ""))