Esempio n. 1
0
def upload_protocol():
    fileitem = form["file"]
    if fileitem.file:
        # It's an uploaded file; count lines
        #strfile = ""

        #for line in fileitem.file:
         #   strfile+=line.decode("cp1251")  #собрали файл в строку
        ap = prs.parseToAProtocolCP1251(fileitem.file) #распарсили протокол
        if ap[0]==None:  #ошибка при парсинге протокола
            ap=xprs.parceXml(fileitem.file, type='prc') #только теперь передаём не имя файла, а его объект, что делает функцию parseXML полиморфной
            if ap[0]==None:
                htmg.out("<script>  alert(\"Произошла ошибка при загрузке протокола  на этапе парсинга err="+ap[1] + "\"); </script>")
                htmg.out("Произошла ошибка при загрузке протокола  на этапе парсинга err={0}".format(ap[1]))
                show_form()
                return
        #если не удалось распарсить протокол как текст (что, скорее всего, произойдёт при парсинге xml, что, правда, не факт, и это печалит, надо бы филтр по mime)
        #то пытаемся распарсить как xml. Если всё равно не получается, то выбрасываем error

        err=bck.writeProtocolToDatabase(ap[0], idprotocol=None)
        if not err:
            htmg.out("<script> alert(\"Загрузка протокола произошла успешно\");   document.location.replace(\"../MiramisPHP/protocols.php\");   </script>  ")
            return
        htmg.out("<script>  alert(\"Произошла ошибка при загрузке протокола err="+str(err) + "\"); </script>")
        htmg.out("Произошла ошибка при загрузке протокола err="+str(err))


        show_form()
Esempio n. 2
0
def show_form():
    outs= """
    <form action='FRprotocolAdd.py?upl=1' method='post' enctype='multipart/form-data'>
    <label for="file">Имя файла:</label>
    <input type='file'" name='file' id='file'><br>
    <input type='submit' name='submit' value='Загрузить'>
</form>
    """
    htmg.out(outs)
Esempio n. 3
0
def outGeneral(id):
    pass


def writeTestFromInputParameters(form):
    pass



#у этой страницы могут быть три параметра - 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:
Esempio n. 4
0
    <input type='file'" name='file' id='file'><br>
    <input type='submit' name='submit' value='Загрузить'>
</form>
    """
    htmg.out(outs)

#debugging
#ap = prs.parseToAProtocolCP1251(open("sandbox/protocolCP1251.txt", "rb")) #распарсили протокол



#Если видим какие-нибудь данные, то запускаем добавление протокола
#если нет - то запускаем отображение формы


htmg.out (htmg.generateHTMLMetaHeader("Добавление протокола"))
form = cgi.FieldStorage()

if "upl" in form:
    upload_protocol()
else:
    show_form()




htmg.out(htmg.generateHTMLFooter())



    if isdebug:
        htmg.out (errmsg)
    htmg.out(list().__str__())
    exit(0)




#начинаем создавать хытымыль-страницу
#хытымыль страница состоит из шапки и главной части по одной классификации
#и из программы испытаний и протокола испытаний по другой классификации
#главная часть состоит из процедур, каждая из которых генерируется отдельно
#каждая процедура состоит из левой и правой части. Левая часть заполняется из программы испытаний, правая часть заполняется из протокола испытаний


htmg.out (htmg.generateSimpleMetaHeader())

#получение списка результатов для построения отчётов
form = cgi.FieldStorage()
residlist=list()
#making results list:

errlog = ""

if "debug" in form:
    isdebug=1
    htmg.out ("Hello, debug mode!")
    


for key in form:
def closeAsError (errmsg):
    global isdebug
    if isdebug:
        htmg.out (errmsg)
    htmg.out(list().__str__())
    exit(0)
    if not prot.dictOfReportFormParameters: #на кой этот сиране костыль, но Питоний не понимает, что поле является словарём, пока ему не скажешь об этом
        prot.dictOfReportFormParameters=dict()

    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:
            #если ошибка
Esempio n. 8
0



    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




htmg.out (htmg.generateHTMLMetaHeader("Вывод отчётной формы", 0))
#получение списка результатов для построения отчётов
form = cgi.FieldStorage()

name=""
if "name" in form:
    name=form.getfirst("name", "")


residlist=list()
#making results list:
for key in form:
    #htmg.out(key+"  "+ form.getfirst(key, "")   +"</br>")
    if "checkbox" in key:
        residlist.append(int(key.split("_")[1]))

#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())
Esempio n. 10
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
Esempio n. 11
0
                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, ""  # признак успешности операции


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
                )
            )