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"
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 10
0
    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)
Exemplo n.º 12
0
    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)
Exemplo n.º 13
0
    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()
Exemplo n.º 14
0
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
Exemplo n.º 15
0
    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)