YetAnotherTimeTracker / yatt

Telegram Bot lives here :)
MIT License
2 stars 4 forks source link

Ошибка кнопок при чужом таске #36

Closed avbelyaev closed 6 years ago

avbelyaev commented 6 years ago

у нас сквозная нумерация тасков. пусть есть 4 таска

пусть у меня 3 таска: 1, 3, 4. таск с id=2 создал кто-то другой

но айдишники у кнопок-тасков в стейте all_tasks идут по списку с единицы: 1, 2, 3. то есть это выглядит так: [номер_таска_в_списке -> настоящий_ид_таска]

[1 -> 1]
[2 -> 3]
[3 -> 4]

напомню что кнопка создается так:

keyboard.append([InlineKeyboardButton(str(task), callback_data=str(id))])

в нее в коллбек дату сетается id, который не id таска а всего лишь индекс кнопки.

то есть у меня есть таск с айдишником 3. но в списке он второй оказался). я нажимаю на него (инлайн кнопку). и в функцию button() в query.data прилетает ...двойка)

далее вызывается код:

task = task_service.find_task_by_id_and_user_id(task_id, user.get_id())

внутри он возвращает None если таск не принадлежит юзеру. и ведь у меня нет таска с id=2. его кто-то другой создал. соответственно вернулся None. думая, что вернулся таск мы берем его description. т.е None.get_descr(), ловим исключение, бот его оборачивает и прячет.

и вот кнопка не работает

makdenis commented 6 years ago

Завтра посмотрю. Короче, надо брать Id таска как-нибудь

avbelyaev commented 6 years ago

сорри, не тот issue случайно упомянул в коммите. закрытие относилось к issue 32