def timer_add(tguser: TgUser): card_id = tguser.callback_query_data_get(1) time_to_add = int(tguser.callback_query_data_get(2)) assert isinstance(tguser.client, TrelloClient) card = tguser.client.get_card(card_id) assert isinstance(card, trolly.Card) timer = tguser.timer_set.filter(card_id=card_id).first() if not timer: tguser.answer_callback_query('Timer was not started', show_alert=True) raise bot_utils.StateErrorHandler('timer_not_started') else: timer.created_at -= timedelta(minutes=time_to_add) timer.save() tguser.edit_message_reply_markup(keyboard=keyboards.Card(tguser, card_id, timer))
def back(tguser: TgUser): obj_type = tguser.callback_query_data_get(1) obj_id = tguser.callback_query_data_get(2) assert isinstance(tguser.client, TrelloClient) if obj_type == 'card': card = tguser.client.get_card(obj_id) assert isinstance(card, trolly.Card) card_info = card.get_card_information() return PrivateHandler.board_list(tguser, card_info['idList']) if obj_type == 'list': board_list = tguser.client.get_list(obj_id) assert isinstance(board_list, trolly.List) board = board_list.get_board() return PrivateHandler.board(tguser, board.id) PrivateHandler.boards(tguser)
def timer_add(tguser: TgUser): seconds = int(tguser.callback_query_data_get(1)) card_id = tguser.callback_query_data_get(2) timer = tguser.timer_set.filter(card_id=card_id).first() if not timer: tguser.answer_callback_query('Timer was not started', show_alert=True) raise bot_utils.StateErrorHandler('timer_not_started') to_add = timedelta(seconds=seconds) timer.created_at = timer.created_at - to_add timer.save() tguser.answer_callback_query('Added %s' % to_add) tguser.edit_message_reply_markup(keyboard=keyboards.Card(tguser, card_id, timer))
def board_list(tguser: TgUser, list_id=None): if list_id is None: list_id = tguser.callback_query_data_get(1) assert isinstance(tguser.client, TrelloClient) board_list = tguser.client.get_list(list_id) assert isinstance(board_list, trolly.List) cards = board_list.get_cards() timer_card_ids = tguser.timer_set.values_list('card_id', flat=True) tguser.render_to_string('bot/private/choose_card.html', keyboard=keyboards.Cards(tguser, list_id, cards, timer_card_ids), edit=True)
def board(tguser: TgUser, board_id=None): if board_id is None: board_id = tguser.callback_query_data_get(1) assert isinstance(tguser.client, TrelloClient) board = tguser.client.get_board(board_id) assert isinstance(board, trolly.Board) lists = board.get_lists() timer_list_ids = tguser.timer_set.values_list('list_id', flat=True) tguser.render_to_string('bot/private/choose_list.html', keyboard=keyboards.Lists(tguser, lists, timer_list_ids), edit=True)
def card(tguser: TgUser): card_id = tguser.callback_query_data_get(1) assert isinstance(tguser.client, TrelloClient) card = tguser.client.get_card(card_id) assert isinstance(card, trolly.Card) card_info = card.get_card_information() timer = tguser.timer_set.filter(card_id=card_id).first() message = tguser.render_to_string('bot/private/show_card.html', context=dict(card=card_info), keyboard=keyboards.Card(tguser, card_id, timer), edit=True) if timer: assert isinstance(message, Message) timer.message_id = message.message_id timer.save()
def timer_reset(tguser: TgUser): card_id = tguser.callback_query_data_get(1) assert isinstance(tguser.client, TrelloClient) card = tguser.client.get_card(card_id) assert isinstance(card, trolly.Card) timer = tguser.timer_set.filter(card_id=card_id).first() if not timer: tguser.answer_callback_query('Timer was not started', show_alert=True) raise bot_utils.StateErrorHandler('timer_not_started') timer.delete() tguser.answer_callback_query('Timer was reset!') tguser.edit_message_reply_markup(keyboard=keyboards.Card(tguser, card_id, None))
def timer_stop(tguser: TgUser): card_id = tguser.callback_query_data_get(1) assert isinstance(tguser.client, TrelloClient) card = tguser.client.get_card(card_id) assert isinstance(card, trolly.Card) timer = tguser.timer_set.filter(card_id=card_id).first() if not timer: tguser.answer_callback_query('Timer was not started', show_alert=True) raise bot_utils.StateErrorHandler('timer_not_started') assert isinstance(timer, Timer) dur = timezone.now() - timer.created_at d = '%.2f' % (dur.seconds / 3600) card.add_comments('plus! %s/%s' % (d, d)) timer.delete() logged = mytime(dur, True) tguser.answer_callback_query('Logged %s' % logged) tguser.edit_message_reply_markup(keyboard=keyboards.Card(tguser, card_id, None))
def timer_start(tguser: TgUser): card_id = tguser.callback_query_data_get(1) assert isinstance(tguser.client, TrelloClient) card = tguser.client.get_card(card_id) assert isinstance(card, trolly.Card) timer = tguser.timer_set.filter(card_id=card_id).first() if timer: tguser.answer_callback_query('Timer was already started', show_alert=True) raise bot_utils.StateErrorHandler('timer_already_started') if tguser.timer_set.exists(): tguser.answer_callback_query('You cannot start more than one timer simultaneously', show_alert=True) raise bot_utils.StateErrorHandler('multiple_timers') card_info = card.get_card_information() timer = tguser.timer_set.create( board_id=card_info['idBoard'], list_id=card_info['idList'], card_id=card_id, message_id=tguser.callback_query.message.message_id, ) tguser.edit_message_reply_markup(keyboard=keyboards.Card(tguser, card_id, timer))