def get_settings_text(poll): """Compile the options text for this poll.""" text = [] locale = poll.user.locale text.append(i18n.t('settings.poll_type', locale=locale, poll_type=translate_poll_type(poll.poll_type, locale))) text.append(i18n.t('settings.language', locale=locale, language=poll.locale)) if poll.anonymous: text.append(i18n.t('settings.anonymous', locale=locale)) else: text.append(i18n.t('settings.not_anonymous', locale=locale)) if poll.due_date: text.append(i18n.t('settings.due_date', locale=locale, date=poll.get_formatted_due_date())) else: text.append(i18n.t('settings.no_due_date', locale=locale)) if poll.results_visible: text.append(i18n.t('settings.results_visible', locale=locale)) else: text.append(i18n.t('settings.results_not_visible', locale=locale)) text.append('') if poll.allow_new_options: text.append(i18n.t('settings.user_options', locale=locale)) else: text.append(i18n.t('settings.no_user_options', locale=locale)) if poll.results_visible: if poll.show_percentage: text.append(i18n.t('settings.percentage', locale=locale)) else: text.append(i18n.t('settings.no_percentage', locale=locale)) if poll.has_date_option(): if poll.european_date_format: text.append(i18n.t('settings.euro_date_format', locale=locale)) else: text.append(i18n.t('settings.us_date_format', locale=locale)) text.append('') # Sorting of user names if poll.poll_type == PollType.doodle.name: sorting_name = i18n.t(f'sorting.doodle_sorting', locale=locale) text.append(i18n.t('settings.user_sorting', locale=locale, name=sorting_name)) elif not poll.anonymous: sorting_name = i18n.t(f'sorting.{poll.user_sorting}', locale=locale) text.append(i18n.t('settings.user_sorting', locale=locale, name=sorting_name)) sorting_name = i18n.t(f'sorting.{poll.option_sorting}', locale=locale) text.append(i18n.t('settings.option_sorting', locale=locale, name=sorting_name)) return '\n'.join(text)
def get_poll_type_help_text(poll): """Create the help text for vote types.""" locale = poll.user.locale message = i18n.t( 'creation.poll_type_help', locale=locale, poll_type=translate_poll_type(poll.poll_type, locale), ) return message
def get_change_poll_type_keyboard(poll): """Get the inline keyboard for changing the vote type.""" change_type = CallbackType["change_poll_type"].value # Dynamically create a button for each vote type buttons = [] for poll_type in PollType: text = translate_poll_type(poll_type.name, poll.locale) payload = f'{change_type}:{poll.id}:{poll_type.value}' button = [InlineKeyboardButton(text, callback_data=payload)] buttons.append(button) return InlineKeyboardMarkup(buttons)
def get_init_text(poll): """Compile the poll creation initialization text.""" locale = poll.user.locale poll.user.current_poll = poll poll.user.expected_input = ExpectedInput.name.name anonymity = i18n.t('creation.no_anonymity', locale=locale) if poll.anonymous: anonymity = i18n.t('creation.anonymity', locale=locale) results_visible = i18n.t('creation.results_not_visible', locale=locale) if poll.results_visible: results_visible = i18n.t('creation.results_visible', locale=locale) message = i18n.t( 'creation.init_text', locale=poll.user.locale, poll_type=translate_poll_type(poll.poll_type, poll.locale), anonymity=anonymity, results_visible=results_visible, ) return message
def get_settings_text(poll): """Compile the options text for this poll.""" text = [] locale = poll.user.locale text.append( i18n.t('settings.poll_type', locale=locale, poll_type=translate_poll_type(poll.poll_type, locale))) text.append( i18n.t('settings.language', locale=locale, language=poll.locale)) if poll.anonymous: text.append(i18n.t('settings.anonymous', locale=locale)) else: text.append(i18n.t('settings.not_anonymous', locale=locale)) if poll.results_visible: text.append(i18n.t('settings.results_visible', locale=locale)) else: text.append(i18n.t('settings.results_not_visible', locale=locale)) if poll.due_date: text.append( i18n.t('settings.due_date', locale=locale, date=poll.get_formatted_due_date())) else: text.append(i18n.t('settings.no_due_date', locale=locale)) text.append('') text.append('*------- Styling -------*') text.append('') if poll.allow_new_options: text.append(i18n.t('settings.user_options', locale=locale)) else: text.append(i18n.t('settings.no_user_options', locale=locale)) if poll.results_visible: if poll.show_percentage: text.append(i18n.t('settings.percentage', locale=locale)) else: text.append(i18n.t('settings.no_percentage', locale=locale)) if poll.permanently_summarized: text.append( i18n.t('settings.permanently_summarized', locale=locale)) elif poll.summarize: text.append(i18n.t('settings.summarize', locale=locale)) else: text.append(i18n.t('settings.dont_summarize', locale=locale)) if poll.has_date_option(): if poll.european_date_format: text.append(i18n.t('settings.euro_date_format', locale=locale)) else: text.append(i18n.t('settings.us_date_format', locale=locale)) text.append('') # Sorting of user names if poll.poll_type == PollType.doodle.name: sorting_name = i18n.t(f'sorting.doodle_sorting', locale=locale) text.append( i18n.t('settings.user_sorting', locale=locale, name=sorting_name)) elif not poll.anonymous: sorting_name = i18n.t(f'sorting.{poll.user_sorting}', locale=locale) text.append( i18n.t('settings.user_sorting', locale=locale, name=sorting_name)) sorting_name = i18n.t(f'sorting.{poll.option_sorting}', locale=locale) text.append( i18n.t('settings.option_sorting', locale=locale, name=sorting_name)) text.append('') text.append( i18n.t('settings.sharing_link', locale=locale, name=sorting_name)) payload = get_start_button_payload(poll, StartAction.share_poll) bot_name = get_escaped_bot_name() text.append(f'https://t.me/{bot_name}?start={payload}') return '\n'.join(text)