Пример #1
0
def handle_project_edit(call, project_id):
	bot.answer_callback_query(call.id, f'Selected project #{project_id}')
	session = Session()
	user = get_user(call, session=session)
	selected_project = session.query(Questionnaire).filter(Questionnaire.id == project_id).first()
	if user.is_admin or user.is_root or user in selected_project.project_admins:
		list_display = lambda iterable: '[\n\t' + ",\n\t".join([repr(i) for i in iterable]) + '\n]'
		fields = {
			'name': selected_project.name,
			'description': selected_project.description,
			'version': selected_project.version,
			'is active': selected_project.is_active,
			'created by': repr(selected_project.created_by),
			'admins': list_display(selected_project.project_users),
			'interviewers': list_display(selected_project.project_admins),
		}

		markup = InlineKeyboardMarkup(row_width=2)
		btn_is_active = InlineKeyboardButton('Toggle: is active', callback_data=build_callback('toggle_is_active', project_id))
		markup.add(btn_is_active)
		btn_assign_users = InlineKeyboardButton(
			'Assign interviewers',
			callback_data=build_callback('assign_users', project_id)
		)
		markup.add(btn_assign_users)

		msg = []
		msg.append(f'Editing {repr(selected_project)}:')
		for k, v in fields.items():
			msg.append(f'{k}: {v}')
		bot.send_message(call.message.chat.id, '\n'.join(msg), reply_markup=markup)
Пример #2
0
def handle_toggle_is_active(call, project_id):
	session = Session()
	selected_project = session.query(Questionnaire).filter(Questionnaire.id == project_id).first()
	selected_project.is_active = not selected_project.is_active
	session.add(selected_project)
	session.commit()
	msg = f'Selected project {selected_project} is {"active" if selected_project.is_active else "inactive"} now'
	bot.answer_callback_query(call.id, msg)
	bot.send_message(call.message.chat.id, msg)
Пример #3
0
def handle_toggle_is_interviewer(call, tg_id):
	session = Session()
	selected_user = session.query(User).filter(User.tg_id == tg_id).first()
	selected_user.is_interviewer = not selected_user.is_interviewer
	session.add(selected_user)
	session.commit()
	msg = f'Selected user {selected_user} is {"" if selected_user.is_interviewer else " NOT"} an interviewer now'
	bot.answer_callback_query(call.id, msg)
	bot.send_message(call.message.chat.id, msg)
Пример #4
0
def handle_assign_admin_to_project(call, tg_id, project_id):
	session = Session()
	selected_user = session.query(User).filter(User.tg_id == tg_id).first()
	selected_project = session.query(Questionnaire).filter(Questionnaire.id == project_id).first()
	if selected_user in selected_project.project_admins:
		selected_project.project_admins.remove(selected_user)
		bot.answer_callback_query(call.id, f'{selected_user} is NOT an admin in {selected_project}')
		bot.send_message(call.message.chat.id, f'{selected_user} is NOT an admin in {selected_project}')
	else:
		selected_project.project_admins.append(selected_user)
		bot.answer_callback_query(call.id, f'{selected_user} IS an admin in {selected_project}')
		bot.send_message(call.message.chat.id, f'{selected_user} IS an admin in {selected_project}')
	session.add(selected_project)
	session.commit()
Пример #5
0
def handle_user_edit(call, tg_id):
	bot.answer_callback_query(call.id, f'Selected user #{tg_id}')
	session = Session()
	user = get_user(call, session=session)
	selected_user = session.query(User).filter(User.tg_id == tg_id).first()
	if user.is_admin or user.is_root:
		list_display = lambda iterable: '[\n\t' + ",\n\t".join([repr(i) for i in iterable]) + '\n]'
		fields = {
			'telegram_id': selected_user.tg_id,
			'first_name': selected_user.first_name,
			'last_name': selected_user.last_name,
			'is admin': selected_user.is_admin,
			'is interviewer': selected_user.is_interviewer,
			'projects': list_display(selected_user.available_questionnaires),
			'admin_of': list_display(selected_user.admin_of_projects)
		}

		markup = InlineKeyboardMarkup(row_width=2)
		btn_is_admin = InlineKeyboardButton(
			'Toggle: is admin',
			callback_data=build_callback('toggle_is_admin', selected_user.tg_id)
		)
		btn_is_interviewer = InlineKeyboardButton(
			'Toggle: is interviewer',
			callback_data=build_callback('toggle_is_interviewer', selected_user.tg_id)
		)
		markup.add(btn_is_admin, btn_is_interviewer)
		btn_assign_to_projects = InlineKeyboardButton(
			'Assign to projects',
			callback_data=build_callback('assign_to_projects', selected_user.tg_id)
		)
		markup.add(btn_assign_to_projects)
		# btn_assign_admin = InlineKeyboardButton('Assign as admin', callback_data=build_callback('assign_admin', selected_user.tg_id))
		# markup.add(btn_assign_admin)

		msg = []
		msg.append(f'Editing {repr(selected_user)}:')
		for k, v in fields.items():
			msg.append(f'{k}: {v}')
		bot.send_message(call.message.chat.id, '\n'.join(msg), reply_markup=markup)