コード例 #1
0
async def menu(query: callback_query, state: FSMContext):
    if state:
        await state.finish()
    keyboard = InlineKeyboardMarkup()
    keyboard.add(
        InlineKeyboardButton(buttons.create_vacancy,
                             callback_data='create_vacancy'),
        # InlineKeyboardButton(buttons.find_vacancies, callback_data='find_vacancies')
    )
    vacancies = Vacancy.select().where(Vacancy.creator == User.get(
        User.chat_id == query.message.chat.id))
    if vacancies:
        keyboard.add(
            InlineKeyboardButton(buttons.placed_vacancies,
                                 callback_data='placed_vacancies'))

    candidate = Candidate.select().where(Candidate.user == User.get(
        User.chat_id == query.message.chat.id))
    for i in candidate:
        if i.status == 'Отправлено тестовое задание':
            keyboard.add(
                InlineKeyboardButton(
                    f'Тестовое - {i.vacancy.name}',
                    callback_data=f'send_test_task_solution_{i.vacancy.id}'))
    await query.message.answer(messages.menu, reply_markup=keyboard)
コード例 #2
0
async def start_handler(message: types.Message, state: FSMContext):
    if state:
        await state.finish()
    text = message.text.split(' ')
    if len(text) > 1:
        payload = decode_payload(text[1])
        vacancy_id = int(payload)
        if not message.from_user.username:
            await CheckUsername.payload.set()
            await state.update_data(payload=vacancy_id)
            await state.update_data(user_id=message.from_user.id)
            await set_username(message.chat.id)
            return
        user = User.get_or_none(User.chat_id == message.chat.id)
        if not user:
            user = User(username=message.from_user.username,
                        first_name=message.from_user.first_name,
                        second_name=message.from_user.last_name,
                        chat_id=message.chat.id)
            user.save()
        # await FindVacancy.name.set()
        await show_vacancy_pure(message.chat.id, vacancy_id)
    else:
        user = User.get_or_none(User.chat_id == message.chat.id)
        if not user:
            user = User(username=message.from_user.username,
                        first_name=message.from_user.first_name,
                        second_name=message.from_user.last_name,
                        chat_id=message.chat.id)
            user.save()
            await message.answer(messages.start_message)

        keyboard = InlineKeyboardMarkup()
        keyboard.add(
            InlineKeyboardButton(buttons.create_vacancy,
                                 callback_data='create_vacancy'),
            # InlineKeyboardButton(buttons.find_vacancies, callback_data='find_vacancies')
        )
        vacancies = Vacancy.select().where(Vacancy.creator == User.get(
            User.chat_id == message.chat.id))
        if vacancies:
            keyboard.add(
                InlineKeyboardButton(buttons.placed_vacancies,
                                     callback_data='placed_vacancies'))

        candidate = Candidate.select().where(Candidate.user == User.get(
            User.chat_id == message.chat.id))
        for i in candidate:
            if i.status == 'Отправлено тестовое задание':
                keyboard.add(
                    InlineKeyboardButton(
                        buttons.test_task.format(i.vacancy.name),
                        callback_data=f'send_test_task_solution_{i.vacancy.id}'
                    ))

        await message.answer(messages.menu, reply_markup=keyboard)
コード例 #3
0
async def placed_vacancies(query: callback_query):
    keyboard = InlineKeyboardMarkup()
    vacancies = Vacancy.select().where(Vacancy.creator == User.get(
        User.chat_id == query.message.chat.id))
    for i in vacancies:
        keyboard.add(
            InlineKeyboardButton(f'{i.name} - {i.income} руб.',
                                 callback_data=f'vacancy_my_{i.id}'))
    await query.message.answer(messages.placed_vacancies,
                               reply_markup=keyboard)
コード例 #4
0
async def name_find_vacancies(message: types.Message, state: FSMContext):
    await state.update_data(name=message.text)
    async with state.proxy() as find_vacancies_:
        name = find_vacancies_['name']
        rations = {}
        vacanncies = Vacancy.select()
        for i in vacanncies:
            rations[i.id] = fuzz.token_sort_ratio(name, i.name)
    await FindVacancy.next()
    rations = OrderedDict(
        sorted(rations.items(), key=itemgetter(1), reverse=True))
    keyboard = InlineKeyboardMarkup()
    for i in rations:
        vacancy = Vacancy.get(Vacancy.id == i)
        keyboard.add(
            InlineKeyboardButton(f'{vacancy.name} - {vacancy.income} руб.',
                                 callback_data=f'vacancy_{i}'))
    await message.answer(messages.what_we_found, reply_markup=keyboard)