def de_json(data): data = super(InlineQueryResultCachedVoice, InlineQueryResultCachedVoice).de_json(data) data["reply_markup"] = InlineKeyboardMarkup.de_json(data.get("reply_markup")) data["input_message_content"] = InputMessageContent.de_json(data.get("input_message_content")) return InlineQueryResultCachedVoice(**data)
def de_json(data, bot): data = super(InlineQueryResultAudio, InlineQueryResultAudio).de_json(data, bot) data["reply_markup"] = InlineKeyboardMarkup.de_json(data.get("reply_markup"), bot) data["input_message_content"] = InputMessageContent.de_json(data.get("input_message_content"), bot) return InlineQueryResultAudio(**data)
def test_de_json(self): json_dict = { 'inline_keyboard': [ [ { 'text': 'start', 'url': 'http://google.com' }, { 'text': 'next', 'callback_data': 'abcd' }, ], [{ 'text': 'Cancel', 'callback_data': 'Cancel' }], ] } inline_keyboard_markup = InlineKeyboardMarkup.de_json(json_dict, None) assert isinstance(inline_keyboard_markup, InlineKeyboardMarkup) keyboard = inline_keyboard_markup.inline_keyboard assert len(keyboard) == 2 assert len(keyboard[0]) == 2 assert len(keyboard[1]) == 1 assert isinstance(keyboard[0][0], InlineKeyboardButton) assert isinstance(keyboard[0][1], InlineKeyboardButton) assert isinstance(keyboard[1][0], InlineKeyboardButton) assert keyboard[0][0].text == 'start' assert keyboard[0][0].url == 'http://google.com'
def test_de_json(self): json_dict = { "inline_keyboard": [ [ { "text": "start", "url": "http://google.com" }, { "text": "next", "callback_data": "abcd" }, ], [{ "text": "Cancel", "callback_data": "Cancel" }], ] } inline_keyboard_markup = InlineKeyboardMarkup.de_json(json_dict, None) assert isinstance(inline_keyboard_markup, InlineKeyboardMarkup) keyboard = inline_keyboard_markup.inline_keyboard assert len(keyboard) == 2 assert len(keyboard[0]) == 2 assert len(keyboard[1]) == 1 assert isinstance(keyboard[0][0], InlineKeyboardButton) assert isinstance(keyboard[0][1], InlineKeyboardButton) assert isinstance(keyboard[1][0], InlineKeyboardButton) assert keyboard[0][0].text == "start" assert keyboard[0][0].url == "http://google.com"
def de_json(data, bot): data = super(InlineQueryResultGame, InlineQueryResultGame).de_json(data, bot) data['reply_markup'] = InlineKeyboardMarkup.de_json( data.get('reply_markup'), bot) return InlineQueryResultGame(**data)
def de_json(data, bot): data = super(InlineQueryResultContact, InlineQueryResultContact).de_json(data, bot) data['reply_markup'] = InlineKeyboardMarkup.de_json(data.get('reply_markup'), bot) data['input_message_content'] = InputMessageContent.de_json( data.get('input_message_content'), bot) return InlineQueryResultContact(**data)
def de_json(data): data = super(InlineQueryResultDocument, InlineQueryResultDocument).de_json(data) data['reply_markup'] = InlineKeyboardMarkup.de_json(data.get('reply_markup')) data['input_message_content'] = InputMessageContent.de_json(data.get( 'input_message_content')) return InlineQueryResultDocument(**data)
def de_json(data): data = super(InlineQueryResultCachedSticker, InlineQueryResultCachedSticker).de_json(data) data['reply_markup'] = InlineKeyboardMarkup.de_json(data.get('reply_markup')) data['input_message_content'] = InputMessageContent.de_json(data.get( 'input_message_content')) return InlineQueryResultCachedSticker(**data)
def de_json(cls, data, bot): data = super(InlineQueryResultGame, cls).de_json(data, bot) if not data: return None data['reply_markup'] = InlineKeyboardMarkup.de_json(data.get('reply_markup'), bot) return cls(**data)
def de_json(cls, data, bot): data = super(InlineQueryResultGame, cls).de_json(data, bot) if not data: return None data['reply_markup'] = InlineKeyboardMarkup.de_json( data.get('reply_markup'), bot) return cls(**data)
def de_json(cls, data, bot): data = super(InlineQueryResultPhoto, cls).de_json(data, bot) if not data: return None data['reply_markup'] = InlineKeyboardMarkup.de_json(data.get('reply_markup'), bot) data['input_message_content'] = InputMessageContent.de_json( data.get('input_message_content'), bot) return cls(**data)
def de_json(cls, data, bot): data = super(InlineQueryResultCachedAudio, cls).de_json(data, bot) if not data: return None data['reply_markup'] = InlineKeyboardMarkup.de_json(data.get('reply_markup'), bot) data['input_message_content'] = InputMessageContent.de_json( data.get('input_message_content'), bot) return cls(**data)
def test_de_json(self, bot, inline_keyboard_markup): json_dict = { 'inline_keyboard': [[ self.inline_keyboard[0][0].to_dict(), self.inline_keyboard[0][1].to_dict() ]], } inline_keyboard_markup_json = InlineKeyboardMarkup.de_json( json_dict, bot) assert inline_keyboard_markup_json.to_dict( ) == inline_keyboard_markup.to_dict()
def handle_schedule_btns(callback_btn_type: BtnTypes, group_id: int, week: int, day: Optional[int] = None) -> DefaultResponse: """ :param callback_btn_type: Action that will be handled by buttons :param group_id: group id in the university site :param week: study week number since the start of study year :param day: study day number from the start of the week :return: DefaultResponse """ button_click_response = DefaultResponse() session = Session() schedule_cache_repository = ScheduleCacheRepository(session) schedule_cache = schedule_cache_repository.get(group_id=group_id, week=week) schedule = None if not schedule_cache or callback_btn_type != BtnTypes.CHANGE_WEEK: page = unecon_request(group_id, week) parser = UneconParser(page.text) lessons = parser.parse_page() schedule = Schedule(lessons) if callback_btn_type == BtnTypes.CHANGE_WEEK: if schedule_cache: button_click_response.text = schedule_cache.text button_click_response.markup = InlineKeyboardMarkup.de_json( json.loads(schedule_cache.markup), bot=None) else: button_click_response = handle_change_week_btn( schedule, group_id, week) schedule_cache_repository.add(group_id=group_id, week=week, text=button_click_response.text, markup=transform_markup_to_str( button_click_response.markup)) elif callback_btn_type == BtnTypes.MORE: button_click_response = handle_more_btn(schedule, group_id, week) elif callback_btn_type == BtnTypes.GET_FULL_DAY: button_click_response = handle_get_full_day_btn( schedule, group_id, week, day) session.close() return button_click_response
def get_schedule(self, group_id: int, week: Optional[int] = None) -> DefaultResponse: """ :param group_id: group id in the university site :param week: study week number from the start of study year :return: DefaultResponse object """ session = self.session group_repository = GroupRepository(session) group = group_repository.get_group_by_id(group_id) schedule_cache_repository = ScheduleCacheRepository(session) schedule_cache = schedule_cache_repository.get(group_id=group_id, week=week) response = DefaultResponse() if schedule_cache: response.text = schedule_cache.text response.markup = InlineKeyboardMarkup.de_json(json.loads( schedule_cache.markup), bot=None) else: if group: schedule_creator = ScheduleCreator(group_id, week) response = schedule_creator.form_response(group.name) schedule_cache_repository.add(group_id=group_id, week=week, text=response.text, markup=transform_markup_to_str( response.markup)) session.close() else: response = DefaultResponse() session.close() return response
def de_json(data, bot): data = super(InlineQueryResultGame, InlineQueryResultGame).de_json(data, bot) data['reply_markup'] = InlineKeyboardMarkup.de_json(data.get('reply_markup'), bot) return InlineQueryResultGame(**data)