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)
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)
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)
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)