Exemple #1
0
async def continue_adding(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        w_native = ''
        w_learning = ''
        if data['direction'] == 1:
            dct = Dictionary(YANDEX_API,
                             from_lang=data['native'],
                             to_lang=data['learning'])
            from_lang = data['native']
            to_lang = data['learning']
            w_native = str(message.text).capitalize()
            result = dct.lookup(message.text)
        elif data['direction'] == 2:
            dct = Dictionary(YANDEX_API,
                             from_lang=data['learning'],
                             to_lang=data['native'])
            from_lang = data['learning']
            to_lang = data['native']
            w_learning = str(message.text).capitalize()
            result = dct.lookup(message.text, ui='en')
        else:
            logging.error("CHECK YOUR CODE")
            pass
        if not result.is_found:
            return await message.reply("not found")

        tr = result.get_tr('text', 'gen', 'pos')[0]

        if from_lang == 'DE':
            if result.gen == 'n':
                article = "das"
            elif result.gen == 'm':
                article = "der"
            else:
                article = "die"
            w_learning = f"{article} {result.text}"
        elif to_lang == 'DE':
            if tr['gen'] == 'n':
                article = "das"
            elif tr['gen'] == 'm':
                article = "der"
            else:
                article = "die"
            w_learning = f"{article} {tr['text']}"
        else:
            w_learning = tr['text']

        if data['direction'] == 2:
            w_native = str(tr['text']).capitalize()

        logging.info(f'checking if card {w_native} already exists')
        cards = session.query(Card).filter(Card.side1 == w_native).all()

        if len(cards) != 0:
            if to_lang == w_native:
                logging.debug(f'Exists! Reply native from Card')
                return await message.reply(cards[0].side1)
            else:
                logging.debug(f'Exists! Reply learning from Card')
                return await message.reply(cards[0].side2)

        logging.debug(f'adding new card')
        new_card = Card()
        new_card.user_id = data['user']
        new_card.lan1 = from_lang
        new_card.lan2 = to_lang
        new_card.side1 = w_native
        new_card.side2 = w_learning
        session.add(new_card)  # cashes data for db
        session.commit()  # writes all cached data to file
        logging.info(f'new card created {new_card.side1} {new_card.side2}')
        return await message.reply(f"{new_card.side1} - {new_card.side2}")