Esempio n. 1
0
    def get_activity_buttons(self, state, update: Update):
        def get_keyboard_by_names(names):
            keyboard = list()
            i = 0

            for name in names:
                button = {
                    "name": name,
                    "action": "select_activity",
                    "callback": True
                }

                if i % 2 == 0:
                    keyboard.append([button])
                else:
                    keyboard[i // 2].append(button)
                i += 1

            return keyboard

        if state['q'] == "":
            activity_names = DB.get_user_accessible_activities(
                state['u_id'], update.effective_chat.id)

            names = []

            counted = DB.count_user_activities(state['u_id'])

            for obj in counted:
                if obj['name'] in [x['name'] for x in activity_names]:
                    names.append(obj['name'])

            for activity in activity_names:
                if activity['name'] not in names and activity['id'] != 0:
                    names.append(activity['name'])
        else:
            names = [
                obj['name'] for obj in DB.get_user_activity_by_query(
                    update.effective_user.id, update.effective_chat.id,
                    state['q'])
            ]

            if 'Ничего' in names:
                names.remove('Ничего')

        i = self.IN_PAGE * (int(state['page']) - 1)

        return get_keyboard_by_names(names[i:i + 4])
Esempio n. 2
0
    def get_user_keyboard(self, user_id):
        activity_names = DB.get_all_activity_names()

        names = []

        counted = DB.count_user_activities(user_id)

        for obj in counted:
            names.append(obj['name'])

        for activity in activity_names:
            if activity['name'] not in names and activity['id'] != 0:
                names.append(activity['name'])

        keyboard = self.get_keyboard_list_by_names(names)

        return ReplyKeyboardMarkup(keyboard, selective=True)
Esempio n. 3
0
    def get_activity_buttons(self, state, update: Update):

        def get_keyboard_by_names(names):
            keyboard = list()
            i = 0

            for name in names:
                button = {
                    "name": name,
                    "action": "select_activity"
                }

                if i % 2 == 0:
                    keyboard.append([button])
                else:
                    keyboard[i // 2].append(button)
                i += 1

            return keyboard

        activity_names = DB.get_user_accessible_activities(state['u_id'], update.effective_chat.id)

        names = []

        counted = DB.count_user_activities(state['u_id'])

        for obj in counted:
            if obj['name'] in [x['name'] for x in activity_names]:
                names.append(obj['name'])

        for activity in activity_names:
            if activity['name'] not in names and activity['id'] != 0:
                names.append(activity['name'])

        i = self.IN_PAGE * (int(state['p']) - 1)

        return get_keyboard_by_names(names[i:i + 4])