Пример #1
0
def _parse_me(raw_msg: str) -> Message:
    reg_result = re.match(r'(Доход) ([\d ]+) (.*)', raw_msg)
    if not reg_result or not reg_result.group(0) or not reg_result.group(
            2) or not reg_result.group(3):
        raise exceptions.NotCorrectMessage(
            'Не могу понять сообщения, пишит так: Доход-Расход Сумма Имя')
    amount = reg_result.group(2).replace(' ', '')
    name = reg_result.group(3).strip()
    return Message(amount=amount, text=name)
Пример #2
0
def _parse_message(raw_message: str) -> Message:
    """Парсит текст пришедшего сообщения о новом расходе."""
    regexp_result = re.match(r"([\d ]+) (.*)", raw_message)
    if regexp_result == None:
        raise exceptions.NotCorrectMessage(
            "Не могу понять сообщение. Напишите сообщение в формате, "
            "например:\n1500 метро")
    amount = regexp_result.group(1)
    category_text = regexp_result.group(2)
    return Message(amount=amount, category_text=category_text)
Пример #3
0
def _parse_message(raw_message: str) -> Message:
    regexp_result = re.match(r"([\d ]+) (.*)", raw_message)
    if not regexp_result or not regexp_result.group(0) \
            or not regexp_result.group(1) or not regexp_result.group(2):
        raise exceptions.NotCorrectMessage(
            "Cannot parse the message. Write it in format, for example:\n5 coffee"
        )
    amount = int(regexp_result.group(1).replace(" ", ""))
    category_text = regexp_result.group(2).strip().lower()
    return Message(amount=amount, category_text=category_text)
Пример #4
0
def add_theme_grade_check(raw_message: str) -> None:
    """ Проверяет на соответствие название класса у темы """

    regexp_result = re.search(r"^(\d{1,2} класс)$", raw_message)

    if not regexp_result or not regexp_result.group(0) \
            or not regexp_result.group(1):
        raise exceptions.NotCorrectMessage(
            "Не могу понять сообщение. Напишите класс для темы в формате\n"
            "➡6 класс\n"
            "или нажмите /cancel")
Пример #5
0
def _parse_message(raw_message: str) -> Message:
    reg_result = re.match(r'([\d ]+) (.*)', raw_message)
    if not reg_result or not reg_result.group(0) \
            or not reg_result.group(1) or not reg_result.group(2):
        raise exceptions.NotCorrectMessage(
            'Не могу понять сообщение, попробуй в другом формате')

    amount = reg_result.group(1).replace(' ', '')
    text = reg_result.group(2).strip().lower()
    # print(amount, text)
    return Message(amount=amount, text=text)
Пример #6
0
def _parse_message(message: str):
    """Парсит сообщение и достает название продукта и его калораж"""
    parsed = re.findall(r'(.+) (\d+)', message)

    if parsed == []:
        raise exceptions.NotCorrectMessage(
            "Не смог прочитать сообщение. Повторите запрос")

    food = Food(food_name=parsed[0][0], calories=int(parsed[0][1]))

    return food
Пример #7
0
def _parse_message(raw_message: str) -> Message:
    """Парсить текст прийшов повідомлення про новий витраті."""
    regexp_result = re.match(r"([\d ]+) (.*)", raw_message)
    if not regexp_result or not regexp_result.group(0) \
            or not regexp_result.group(1) or not regexp_result.group(2):
        raise exceptions.NotCorrectMessage(
            "Не можу зрозуміти повідомлення. Напишіть повідомлення в форматі, "
            "наприклад:\n1500 метро")

    amount = regexp_result.group(1).replace(" ", "")
    category_text = regexp_result.group(2).strip().lower()
    return Message(amount=amount, category_text=category_text)
Пример #8
0
def _parse_message(raw_message: str) -> Message:
    """Парсит текст пришедшего сообщения о новом расходе."""
    regexp_result = re.match(r"([\d ]+) (.*)", raw_message)
    if not regexp_result or not regexp_result.group(0) \
            or not regexp_result.group(1) or not regexp_result.group(2):
        raise exceptions.NotCorrectMessage(
            'Не могу понять сообщение 🙈 \nНапиши расход в формате: "1500 одежда"'
        )

    amount = regexp_result.group(1).replace(" ", "")
    category_text = regexp_result.group(2).strip().lower()
    return Message(amount=amount, category_text=category_text)
Пример #9
0
def _parse_message(raw_message: str) -> Message:
    """Parses the text of a message about a new expense"""
    regexp_result = re.match(r"([\d ]+) (.*)", raw_message)
    if not regexp_result or not regexp_result.group(0) \
            or not regexp_result.group(1) or not regexp_result.group(2):
        raise exceptions.NotCorrectMessage(
            "I can not understand the message. Write a message in a format, "
            "e.g.:\n1000 cafe")

    amount = int(regexp_result.group(1).replace(" ", ""))
    category_text = regexp_result.group(2).strip().lower()
    return Message(amount=amount, category_text=category_text)
Пример #10
0
def _parse_message(raw_message: str) -> Message:
    """Parses the text of the incoming message about the new expense."""
    regexp_result = re.match(r"([\d ]+) (.*)", raw_message)
    if not regexp_result or not regexp_result.group(
            0) or not regexp_result.group(1) or not regexp_result.group(2):
        raise exceptions.NotCorrectMessage(
            "I can't understand the message. Write a message in the format, for example:\n\t1500 metro."
        )

    amount = int(regexp_result.group(1).replace(" ", ""))
    category_text = regexp_result.group(2).strip().lower()

    return Message(amount=amount, category_text=category_text)
Пример #11
0
def _parse_message(raw_message: str) -> Message:
    """Парсит текст пришедшего сообщения о новом расходе."""
    # выуживаем цифру
    regexp_digit = re.search(r"\d+.\d+", raw_message)
    regexp_string = re.search(r"[аА-яЯ]+", raw_message)
    if not regexp_digit or not regexp_digit.group(0)\
        or not regexp_string or not regexp_string.group(0):
        raise exceptions.NotCorrectMessage(
            "Не магу зразумець паведамленне, напішы штосці кшталту:\n 4 кава")

    amount = regexp_digit[0]
    print(amount)
    name = regexp_string[0]
    category_text = name.strip().lower()

    return Message(amount=amount, category_text=category_text)
def _parse_message(raw_message: str) -> ParsedMessage:
    """
    Parses the recieved message and returns an instance of ParsedMessage class

    Parameters:
        raw_message: str — the recieved message, raw, not parsed
    Returns:
        parsed message: an instance of ParsedMessage class
    """
    re_result = re.search(r"^(\d+)(.*)", raw_message)
    if not re_result or not re_result.group(0) \
            or not re_result.group(1) or not re_result.group(2):
        raise exceptions.NotCorrectMessage(
            "Сообщение не соответствует шаблону: \"1500 кафе\""
        )

    amount = re_result.group(1).strip()
    category_text = re_result.group(2).strip().lower()
    return ParsedMessage(amount=int(amount), category_text=category_text)
Пример #13
0
def _parse_message_add_student(raw_message: str) -> Student:
    """ Парсит текст пришедшего сообщения для добавления нового студента """

    regexp_result = re.match(r"(\w+ \w+( \w+)?) (\d{1,2} класс)\s?(.*)",
                             raw_message)

    if not regexp_result or not regexp_result.group(0) \
            or not regexp_result.group(1) or not regexp_result.group(3):
        raise exceptions.NotCorrectMessage(
            "Не могу понять сообщение. Напишите текст в формате\n"
            "➡Вася Пупкин 6 класс\n\n"
            "или нажмите /cancel")

    fullname = regexp_result.group(1)
    grade = regexp_result.group(3)
    if regexp_result.group(4):
        description = regexp_result.group(4)
    else:
        description = ""

    return Student(id=None,
                   fullname=fullname,
                   grade=grade,
                   description=description)
Пример #14
0
def delete_expense(row_id: int) -> None:
    try:
        db.delete("expense", row_id)
    except sqlite3.ProgrammingError:
        raise exceptions.NotCorrectMessage(
            f'Expense with ({row_id}) ID does not exist')