def click():
    folderpath = './display'
    convertion.convert(folderpath)  #convert the DICOM file selected into PNG
    dataURI = uri.generateURI(
        './display/output.png'
    )  #generate the URI address of the dicom image selected

    return render_template('click_v1.html', dataURI=dataURI)
Exemplo n.º 2
0
 def test_passar_3_de_numerico_para_unrfield_retorna_3_barras(self):
     self.assertEquals(convert("3", "numerico", "unrfield"), "///")
Exemplo n.º 3
0
 def test_passar_1bi_e_2b_de_unrfield_para_numerico_retorna_7(self):
     self.assertEquals(convert("//\\", "unrfield", "numerico"), "7")
Exemplo n.º 4
0
 def test_passar_1_de_numerico_para_unrfield_retorna_1_barra(self):
     self.assertEquals(convert("1", "numerico", "unrfield"), "/")
Exemplo n.º 5
0
 def test_passar_1bi_de_unrfield_para_numerico_retorna_5(self):
     self.assertEquals(convert("\\", "unrfield", "numerico"), "5")
Exemplo n.º 6
0
 def test_passar_3b_de_unrfield_para_numerico_retorna_3(self):
     self.assertEquals(convert("///", "unrfield", "numerico"), "3")
Exemplo n.º 7
0
 def test_passar_12_de_numerico_para_unrfield_retorna_2_barra_invertida_2_normal(self):
     self.assertEquals(convert("12", "numerico", "unrfield"), '//\\\\')
Exemplo n.º 8
0
 def test_passar_5_de_numerico_para_unrfield_retorna_1_barra_invertida(self):
     self.assertEquals(convert("5", "numerico", "unrfield"), '\\')
Exemplo n.º 9
0
def calulator():
    '''
    Функция включает режим калькулятора.
    Функция обрабатывает сообщения пользователя.
    Сначала принимается система (от 2 до 16),
    потом арифметическое выражение, выполняется его парсеринг,
    перевод каждого числа в 10 систему, выполнение данного выражения,
    перевод его в изначальную систему и вывод результата.
    Проработана система ошибок:
    Ошибка 1: при вводе основания системы.
        Ошибка 1.1: В сообщении встречается не число,
            а набор недопустимых символов.
        Ошибка 1.2: Введенное основание больше 16 или меньше 2.
    Ошибка 2: при вводе выражения.
        Ошибка 2.1: Данное выражение содержит недопустимые символы.
        Ошибка 2.2: Данное выражение содержит цифры не для осования, введенного ранее.
        Ошибка 2.3: Данное выражение содержит арифметическую ошибку
            (деление на 0, неправильную постановку знаков арифметических действий).
    Для возвращения на шаг назад нужно ввести слово <<назад>>.
    :return: None
    '''
    send_massage("Введите основание системы счисления:", event)
    for eventx in longpoll.listen():  # вечно ждем новых сообщений
        if eventx.type == VkBotEventType.MESSAGE_NEW:  # если сообщение пришло
            if eventx.obj.text != '':  # и оно не пустое
                if eventx.from_user:  # да еще и от пользователя
                    user_sentx = eventx.obj.text  # возьмем его текст

                    exit_code = 0
                    if user_sentx.lower() == "назад":
                        exit_code = 3
                        send_massage("Выключен режим калькулятора", eventx)

                    if exit_code == 0:
                        for i in user_sentx:
                            if bool(i in numerals) == False:
                                send_massage("Ошибка 1.1: В сообщении не число", eventx)
                                exit_code = 1
                                break

                    if exit_code == 0:
                        if int(user_sentx) > 16 or int(user_sentx) < 2:
                            send_massage("Ошибка 1.2: Основание больше 16 или меньше 2", eventx)
                            exit_code = 1

                    if exit_code == 0:
                        base = int(user_sentx)
                        send_massage("Введите пример:", eventx)

                        for eventy in longpoll.listen():  # вечно ждем новых сообщений
                            if eventy.type == VkBotEventType.MESSAGE_NEW:  # если сообщение пришло
                                if eventy.obj.text != '':  # и оно не пустое
                                    if eventy.from_user:  # да еще и от пользователя
                                        user_senty = eventy.obj.text  # возьмем его текст

                                        exit_code = 0
                                        if user_senty.lower() == "назад":
                                            exit_code = 2

                                        if exit_code == 0:
                                            for i in user_senty:
                                                if bool(i in list_of_numerals_and_signs) == False:
                                                    exit_code = 1
                                                    send_massage(
                                                        "Ошибка 2.1: данное выражение содержит недопустимые символы.",
                                                        eventy)
                                                    break

                                        base_list = list_of_nice_numerals[:base]

                                        if exit_code == 0:
                                            for i in user_senty:
                                                if bool(i in base_list) == False:
                                                    if bool(i in list_of_nice_signs) == False:
                                                        print(bool(i in base_list))
                                                        print(bool(i in list_of_nice_signs))
                                                        print(i)
                                                        exit_code = 1
                                                        send_massage(
                                                            "Ошибка 2.2: данное выражение содержит цифры не для осования " + str(
                                                                base),
                                                            eventy)
                                                        break



                                        if exit_code == 0:
                                            list_of_signs = []
                                            list_of_numerals = []
                                            result = ''
                                            user_senty.split()
                                            print(user_senty)
                                            for i in range(len(user_senty)):
                                                if user_senty[i] in list_of_nice_numerals:
                                                    list_of_numerals.append([user_senty[i], i])
                                                if user_senty[i] in list_of_nice_signs:
                                                    list_of_signs.append([user_senty[i], i])

                                            print(list_of_numerals)
                                            list_of_true_numerals = []
                                            nomber = -1
                                            numeral = ""
                                            for i in list_of_numerals:
                                                if i[1] == nomber + 1:
                                                    numeral += i[0]
                                                    nomber += 1
                                                elif i[1] != nomber + 1:
                                                    list_of_true_numerals.append([numeral, nomber])
                                                    nomber = i[1]
                                                    numeral = i[0]
                                            list_of_true_numerals.append([numeral, nomber])
                                            print(list_of_true_numerals)

                                            for i in range(len(list_of_true_numerals)):
                                                list_of_true_numerals[i][0] = convert(list_of_true_numerals[i][0], base,
                                                                                      10)
                                            print(list_of_true_numerals)

                                            for i in range(len(user_senty)):
                                                for j in list_of_true_numerals:
                                                    if j[1] == i:
                                                        result += j[0]
                                                        del j
                                                        break
                                                for k in list_of_signs:
                                                    if k[1] == i:
                                                        result += k[0]
                                                        del k
                                                        break
                                            print(result)
                                            try:
                                                eval(result)
                                            except:
                                                exit_code = 1
                                                send_massage(
                                                    "Ошибка 2.3: данное выражение содержит арифметическую ошибку.",
                                                    eventy)
                                            if exit_code == 0:
                                                result = eval(result)
                                                result = convert(str(result), 10, base)
                                                result.split()
                                                if result[0] == ".":
                                                    result = "0" + result
                                                send_massage(result, eventy)

                                        if exit_code == 2:
                                            send_massage("Введите новую систему счисления:", eventy)
                                            break
                    if exit_code == 3:
                        break