コード例 #1
0
ファイル: api_endpoint.py プロジェクト: ekrasikov/cash
def post_expense():
    if (request.is_json):
        try:
            content = request.get_json()
        except:
            logger.error("Cannot parse JSON request: {}".format(
                traceback.format_exc()))
            return Response('{"message": "Cannot parse JSON request"}',
                            status=400,
                            mimetype='application/json')
    else:
        logger.error("Received request body is not JSON")
        return Response('{"message": "Received request body is not JSON"}',
                        status=400,
                        mimetype='application/json')

    if expenses.add_expense(content, db_params):
        return Response('{"message": "OK"}',
                        status=200,
                        mimetype='application/json')
    else:
        logger.error("Cannot add expense to DB")
        return Response('{"message": "Cannot add expense to DB"}',
                        status=500,
                        mimetype='application/json')
コード例 #2
0
async def add_expenses(message: types.message) -> None:
    '''add to new expenses'''
    try:
        ratio = expenses.ratio_balance()
        print(ratio)
        expenses.check_balance_repleh()
        answer_database = expenses.check_to_balance()
        if answer_database.month <= 0:
            await message.answer(
                'У вас закончился баланс , вы не можете делать покупки')

        else:
            if ratio <= 20.0:
                await message.answer('У вас мало денег следите за балансом')

        try:
            message_user = expenses.add_expense(message.text)
            await message.answer('Добвалена покупка :' + '\n' + 'Название :' +
                                 str(message_user.name) + '\n' +
                                 'Стоимость : ' + str(message_user.amount) +
                                 'руб' + '\n' + 'Дата :' +
                                 str(message_user.data) + '\n' +
                                 'Текст сообщения:' + str(message_user.text) +
                                 '\n')

        except:
            raise exceptions.NoCorrectMessage(
                await message.answer('Вы неправильно ввели данные'))

    except:
        try:
            message_user = expenses.add_expense(message.text)
            await message.answer('Добвалена покупка :' + '\n' + 'Название :' +
                                 str(message_user.name) + '\n' +
                                 'Стоимость : ' + str(message_user.amount) +
                                 'руб' + '\n' + 'Дата :' +
                                 str(message_user.data) + '\n' +
                                 'Текст сообщения:' + str(message_user.text) +
                                 '\n')

        except:
            raise exceptions.NoCorrectMessage(
                await message.answer('Вы неправильно ввели данные'))
コード例 #3
0
async def add_expense(message: types.Message):
    try:
        expense = expenses.add_expense(message.text)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_message = (
        f"Добавлены траты {expense.amount} руб на {expense.category_name}.\n\n"
        f"{expenses.get_today_statistics()}")
    await message.answer(answer_message)
コード例 #4
0
async def add_expense(message: types.Message):
    try:
        expense = expenses.add_expense(message.text)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_message = (
        f'Expense added: {expense.amount} $ for {expense.category_name}.\n\n'
        f'{expenses.get_today_statistics()}')
    await message.answer(answer_message)
コード例 #5
0
async def add_expense(message: types.Message):
    """Adding new expense"""
    try:
        expense = expenses.add_expense(message.text)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_message = (
        f"Added expenses {expense.amount} hrn on {expense.category_name}.\n\n"
        f"{expenses.get_today_statistics()}")
    await message.answer(answer_message)
コード例 #6
0
ファイル: server.py プロジェクト: danielburlaka/finance_bot
async def add_expense(message: types.Message):
    """Добавляет новый расход"""
    try:
        expense = expenses.add_expense(message.text)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_message = (
        f"Добавлены траты {expense.amount} грн на {expense.category_name}.\n\n"
        f"{expenses.get_today_statistics()}\n\n"
        "Вернуться назад: /back")
    await message.answer(answer_message)
コード例 #7
0
ファイル: bablo_bot.py プロジェクト: dimkhor/bablo_bot_git
async def add_expense(message: types.Message):
    """Добавляет новый расход"""
    usr_id = int(message.from_user.id)
    try:
        expense = expenses.add_expense(message.text, usr_id)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_message = (
        f"Добавлены траты {expense.amount} руб на {expense.category_name}.\n\n"
    )
    await message.answer(answer_message)
コード例 #8
0
async def add_expense(message: types.Message):
    """ Adds an expense to the needed budget """
    budget_name = message.from_user.username + "_personal"
    budget_id = budgets.get_budget_id(budget_name)
    try:
        expense = expenses.add_expense(message.text, message.from_user.id,
                                       budget_id)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_text = (
        f"В бюджет \"{budget_name}\" "
        f"добавлена трата {expense.amount} руб. на {expense.category_name}.\n")
    await message.answer(answer_text)
コード例 #9
0
async def add_expense(message: types.Message):
    """Добавляет новый расход"""
    #try:
    print(f'!!!message {message}')
    expense = add_expense(message.text)
    #except NotCorrectMessage as e:
    #    await message.answer(str(e))
    #    return
    print(f'!!!expense {expense}')
    await expense
    answer_message = (
        f"Добавлены траты {expense.amount} руб на {expense.category_name}.\n\n"
        f"{get_today_statistics()}")
    #await bot.send_message(message.chat.id, answer_message)
    await message.answer(answer_message)
コード例 #10
0
async def add_expense(message: types.Message):
    """Добавляет новый расход"""
    #check user id
    user_id = message.from_user.id
    #debug
    print(message.from_user.id, message.text)
    try:
        expense = expenses.add_expense(message.text, message.from_user.id)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_message = (
        f"Добавлены траты {expense.amount} руб на {expense.category_name}.\n\n"
        f"{expenses.get_today_statistics()}")
    await message.answer(answer_message)
コード例 #11
0
def create_expense(update: Update, context: CallbackContext) -> int:
    """ Finishes the exchange and creates an expence """
    raw_message = update.message.text
    try:
        expense = expenses.add_expense(update.effective_user.id, raw_message)
    except exceptions.NotCorrectMessageException as e:
        update.message.reply_text(str(e))
        return State.REPLYING_EXPENSE_INFO

    update.message.reply_text("Expenses: \n"
                              f"{raw_message} \n"
                              "have been successfully added\n"
                              "See latest expenses: /last\n")

    return ConversationHandler.END
コード例 #12
0
async def add_expense(message: types.Message):
    """Добавляет доход/расход в базу данных"""
    try:
        loggings.lets_logging('info',
                              'Вызвана команда "добавить доход/расход"')
        text = message.text.split()
        if len(text) < 6:
            raise exceptions.IncorrectCommand
        wallet_name = text[2]
        exp_type = text[3]
        amount = text[4]
        comment = ' '.join(text[5:])
        expensive = expenses.add_expense(wallet_name, exp_type.lower(), amount,
                                         comment)
        if expensive == exceptions.WalletNotFound:
            raise exceptions.WalletNotFound
        await message.answer(
            f'В "<b>{expensive.wallet}</b>" добавлен {expensive.type} {expensive.amount}',
            parse_mode=types.ParseMode.HTML)
    except Exception as e:
        loggings.lets_logging('warning', f'Ошибка:{e}"')
        await message.answer(f"{str(e)}")
コード例 #13
0
async def add_expense(message: types.Message):
    """ Adds an expense to the needed budget """
    budget_id = budgets.get_budget_id("joint")
    users_list = budgets.get_all_users(budget_id)
    try:
        expense = expenses.add_expense(message.text, message.from_user.id,
                                       budget_id)
    except exceptions.NotCorrectMessage as e:
        await message.answer(str(e))
        return
    answer_text = (
        f"В бюждет \"joint\" "
        f"добавлена трата {expense.amount} руб. на {expense.category_name}.\n")
    for user in users_list:
        if user.id == message.from_user.id:
            continue
        else:
            await bot.send_message(user.id, (text(
                bold("В бюджет \"joint\" была добавлена трата\n\n") +
                f"Добавил: {message.from_user.username}\n" +
                f"Сумма: {expense.amount}\n" +
                f"Категория: {expense.category_name}\n")),
                                   parse_mode=ParseMode.MARKDOWN)
    await message.answer(answer_text)
コード例 #14
0
async def add_expense(message: types.Message):
    raw_message = message.text.lower().strip()
    if raw_message == 'январь':
        answer_message = expenses.get_month_statistics('01')
    elif raw_message == 'февраль':
        answer_message = expenses.get_month_statistics('02')
    elif raw_message == 'март':
        answer_message = expenses.get_month_statistics('03')
    elif raw_message == 'апрель':
        answer_message = expenses.get_month_statistics('04')
    elif raw_message == 'май':
        answer_message = expenses.get_month_statistics('05')
    elif raw_message == 'июнь':
        answer_message = expenses.get_month_statistics('06')
    elif raw_message == 'июль':
        answer_message = expenses.get_month_statistics('07')
    elif raw_message == 'август':
        answer_message = expenses.get_month_statistics('08')
    elif raw_message == 'сентябрь':
        answer_message = expenses.get_month_statistics('09')
    elif raw_message == 'октябрь':
        answer_message = expenses.get_month_statistics('10')
    elif raw_message == 'ноябрь':
        answer_message = expenses.get_month_statistics('11')
    elif raw_message == 'декабрь':
        answer_message = expenses.get_month_statistics('12')
    else:
        try:
            expense = expenses.add_expense(raw_message)
        except exceptions.NotCorrectMessage as e:
            await message.answer(str(e))
            return
        answer_message = (
            f"Добавлены траты {expense.amount} руб на {expense.category_name}.\n\n"
            f"{expenses.get_today_statistics()}")
    await message.answer(answer_message)
コード例 #15
0
def processing_command(command: str, user_id: int) -> str:
    """
    Функция определения полученной команды и получения соответствующего ей ответа
    Обрабатывает команды (через слэш):
    - старт, помощь - вывод справки
    - [число] [группа] (300 такси) - внос расхода
    - удалить [идентификатор_расхода] (удалить 1) - удаление расхода
    - категории - вывод списка всех категорий и соответствующих им алиасов (псевдонимов)
    - день - вывод статистики за день
    - месяц - вывод статистики за месяц
    - затраты - вывод последних 10 затрат
    - лимит - вывод ежедневного лимита
    - лимит [число] (лимит 2000) - изменение ежедневного лимита

    :param command: команда
    :param user_id: идентификатор пользователя в VK
    :return: ответ на команду
    """

    template_add_expense = r"^/(\d+[\.\d+|,\d+]*)р? (\w+)"
    template_delete_expense = r"/удалить (\d)"
    template_get_limit = r"^/лимит$"
    template_change_limit = r"^/лимит (\d+[\.\d+|,\d+]*)р?$"

    if command in ["/старт", "/помощь"]:
        return get_welcome_message()

    elif search(template_add_expense, command):
        expense = expenses.add_expense(message=command, user_id=user_id)

        answer_message = f"{expense.amount}р добавлено в категорию {expense.category_name}\n"
        return answer_message

    elif search(template_delete_expense, command):
        expense_id = findall(template_delete_expense, command)[0]
        expenses.delete_expense(expense_id=expense_id)

        answer_message = "Расход удалён"
        return answer_message

    elif command in ["/категории"]:
        answer_message = get_categories()
        return answer_message

    elif command in ["/день"]:
        answer_message = expenses.get_today_statistics(user_id=user_id)
        return answer_message

    elif command in ["/месяц"]:
        answer_message = expenses.get_month_statistics(user_id=user_id)
        return answer_message

    elif command in ["/затраты"]:
        last_expenses = expenses.last_expenses(user_id=user_id)
        answer_message = ""
        if not last_expenses:
            answer_message = "Расходы ещё не заведены"
        else:
            last_expenses_rows = [
                f"{expense.amount} руб. на {expense.category_name} — введите "
                f"\"/удалить {expense.id}\" для удаления"
                for expense in last_expenses
            ]

            answer_message = "Последние сохранённые траты:\n\n— " \
                             "\n\n— ".join(last_expenses_rows)

        return answer_message

    elif search(template_get_limit, command):
        daily_limit = expenses.get_daily_limit(user_id=user_id)

        answer_message = f"Ваш дневной лимит: {daily_limit}"
        return answer_message

    elif search(template_change_limit, command):
        new_daily_limit = findall(template_change_limit, command)[0]
        if expenses.change_daily_limit(new_daily_limit=new_daily_limit,
                                       user_id=user_id):
            answer_message = "Суточнный лимит изменён"
        else:
            answer_message = "Ошибка! Суточный лимит не изменён"

        return answer_message

    else:
        answer_message = "Ошибка! Неверная команда"
        return answer_message