def send_settings_message(context): """Edit the message of the current context to the settings menu.""" context.query.message.edit_text( text=get_settings_text(context.poll), parse_mode="markdown", reply_markup=get_settings_keyboard(context.poll), disable_web_page_preview=True, )
def remove_due_date(session, context, poll): """Remove the due date from a poll.""" poll.due_date = None poll.next_notification = None poll.user.expected_input = ExpectedInput.due_date.name context.query.message.edit_text( text=get_settings_text(context.poll), parse_mode='markdown', reply_markup=get_due_date_datepicker_keyboard(poll))
def set_option_order(session, context, poll): """Set the order in which options are listed.""" option_sorting = OptionSorting(context.action) poll.option_sorting = option_sorting.name update_poll_messages(session, context.bot, poll) context.query.message.edit_text( text=get_settings_text(poll), parse_mode='markdown', reply_markup=get_option_sorting_keyboard(poll))
def show_settings(session, context, poll): """Show the settings tab.""" text = get_settings_text(poll) keyboard = get_settings_keyboard(poll) context.query.message.edit_text( text, parse_mode="markdown", reply_markup=keyboard, disable_web_page_preview=True, ) poll.in_settings = True
def pick_due_date(session, context, poll): """Add a date from the datepicker to the poll.""" if poll.current_date <= date.today(): return i18n.t('callback.due_date_in_past', locale=poll.user.locale) due_date = datetime.combine(poll.current_date, time(hour=12, minute=00)) if (due_date == poll.due_date): return poll.set_due_date(due_date) context.query.message.edit_text( text=get_settings_text(context.poll), parse_mode='markdown', reply_markup=get_due_date_datepicker_keyboard(poll))
def handle_new_option(bot, update, session, user, text, poll, chat): """Add a new option after poll creation.""" added_options = add_options(poll, text) if len(added_options) > 0: text = i18n.t('creation.option.multiple_added', locale=user.locale) + '\n' for option in added_options: text += f'\n*{option}*' chat.send_message(text, parse_mode='markdown') poll.init_votes_for_new_options(session) else: chat.send_message(i18n.t('creation.option.no_new', locale=user.locale)) # Reset expected input user.current_poll = None user.expected_input = None text = get_settings_text(poll) keyboard = get_settings_keyboard(poll) message = chat.send_message( text, parse_mode='markdown', reply_markup=keyboard, ) # Delete old references references = session.query(Reference) \ .filter(Reference.poll == poll) \ .filter(Reference.admin_user_id == chat.id) \ .all() for reference in references: try: bot.delete_message(chat.id, reference.admin_message_id) except: pass session.delete(reference) # Create new reference reference = Reference(poll, admin_user=user, admin_message_id=message.message_id) session.add(reference) session.commit() update_poll_messages(session, bot, poll)
def pick_due_date(session, context, poll): """Set the due date for a poll.""" picked_date = date.fromisoformat(context.data[2]) if picked_date <= date.today(): return i18n.t('callback.due_date_in_past', locale=poll.user.locale) due_date = datetime.combine(picked_date, time(hour=12, minute=00)) if (due_date == poll.due_date): poll.set_due_date(None) context.query.answer( i18n.t('callback.due_date_removed', locale=poll.user.locale)) else: poll.set_due_date(due_date) context.query.message.edit_text( text=get_settings_text(context.poll), parse_mode='markdown', reply_markup=get_due_date_datepicker_keyboard(poll, picked_date))
def update_datepicker(context, poll, datepicker_context, current_date): """Update the creation datepicker.""" message = get_datepicker_text(context.poll) if datepicker_context == DatepickerContext.creation: keyboard = get_creation_datepicker_keyboard(poll, current_date) elif datepicker_context == DatepickerContext.additional_option: keyboard = get_add_option_datepicker_keyboard(poll, current_date) elif datepicker_context == DatepickerContext.external_add_option: keyboard = get_external_datepicker_keyboard(poll, current_date) elif datepicker_context == DatepickerContext.due_date: message = get_settings_text(poll) keyboard = get_due_date_datepicker_keyboard(poll, current_date) else: raise Exception('Unknown DatepickerContext') context.query.message.edit_text(message, parse_mode='markdown', reply_markup=keyboard, disable_web_page_preview=True)
def go_back(session, context, poll): """Go back to the original step.""" if context.callback_result == CallbackResult.main_menu: text = get_poll_text(session, poll) keyboard = get_management_keyboard(poll) poll.in_settings = False elif context.callback_result == CallbackResult.settings: text = get_settings_text(poll) keyboard = get_settings_keyboard(poll) context.query.message.edit_text( text, parse_mode="markdown", reply_markup=keyboard, disable_web_page_preview=True, ) # Reset the expected input from the previous option context.user.expected_input = None
def handle_new_option(bot, update, session, user, text, poll, chat): """Add a new option after poll creation.""" added_options = add_options(session, poll, text) if len(added_options) > 0: text = i18n.t("creation.option.multiple_added", locale=user.locale) + "\n" for option in added_options: text += f"\n*{option}*" chat.send_message(text, parse_mode="markdown") poll.init_votes_for_new_options(session) else: chat.send_message(i18n.t("creation.option.no_new", locale=user.locale)) # Reset expected input user.current_poll = None user.expected_input = None text = get_settings_text(poll) keyboard = get_settings_keyboard(poll) message = chat.send_message( text, parse_mode="markdown", reply_markup=keyboard, ) remove_old_references(session, bot, poll, user) # Create new reference reference = Reference(poll, ReferenceType.admin.name, user=user, message_id=message.message_id) session.add(reference) session.commit() update_poll_messages(session, bot, poll, message.message_id, user)
def send_settings_message(context): """Edit the message of the current context to the settings menu.""" context.query.message.edit_text(text=get_settings_text(context.poll), parse_mode='markdown', reply_markup=get_settings_keyboard( context.poll))
def show_settings(session, context, poll): """Show the settings tab.""" text = get_settings_text(poll) keyboard = get_settings_keyboard(poll) context.query.message.edit_text(text, parse_mode='markdown', reply_markup=keyboard) poll.in_settings = True