def invite(): url = __check_login(url = get_redirect_target()) if url: return redirect(url) inviteform = InviteForm() if inviteform.validate(): user = get_user(session['email']) troika = get_troika(inviteform.troika_id.data) if troika is None: flash(_(u'Invalid Troika Id'), 'error') elif troika.get_phase() == 'complete': flash(_(u'Can not invite to a completed Troika'), 'error') else: msg = Message(_(u"Come join the Troika \"%(title)s\"!", title=troika.title), sender = ("Troika Webmaster", "*****@*****.**"), recipients=[inviteform.email.data]) msg.body = _("%(user)s thought you should join the Troika \"%(title)s\":", user = __get_display_name(user), title=troika.title) msg.body += "\n\n" + url_for('troika', troika_id=troika.id, _external=True) msg.body += "\n\n" role_string = None if inviteform.role.data == '0': if troika.lead is None: role_string = _("the lead") else: flash(_(u'Troika already has a lead'), 'error') elif inviteform.role.data == '1': if troika.first_learner is None: role_string = _("the first learner") else: flash(_(u'Troika already has a first learner'), 'error') elif inviteform.role.data == '2': if troika.second_learner is None: role_string = _("the second learner") else: flash(_(u'Troika already has a second learner'), 'error') elif inviteform.role.data == '3': role_string = _("a participant") else: flash(_(u'Invalid role: ') + 'inviteform.role', 'error') if role_string is not None: msg.body += _("as %(role)s.", role=role_string) msg.body += "\n\n" msg.body += _("What do you say?") + "\n\n" msg.body += __get_troika_message_signature() mail.send(msg) flash(_(u'Invite sent to %(email)s', email = inviteform.email.data)) else: flash(_(u"Invalid invite form") + ': ' + ', '.join((key + ': ' + value[0]) for key, value in inviteform.errors.items()), 'error') return redirect(get_redirect_target())
def change_language(): langform = LanguageForm(prefix="language") if langform.validate(): if not 'language' in session or session['language'] != langform.language.data: session['language'] = langform.language.data # Also change the user language in the database, to make the change persistent if 'email' in session: user = get_user(session['email']) user.preferred_language = session['language'] save_user(user) else: flash(_(u'Invalid language form') + ': ' + ', '.join((key + ': ' + value[0]) for key, value in langform.errors.items()), 'error') return redirect(get_redirect_target())
def forgot(): forgotform = ForgotForm() if forgotform.validate(): reset_link = generate_password_reset_link(forgotform.email.data) if reset_link is None: flash(_(u'Could not find user with given email'), 'error') else: msg = Message(_(u"Troikalearning.org password reset"), sender = ("Troika Webmaster", "*****@*****.**"), recipients=[forgotform.email.data]) msg.body = _("Go to the following link to reset your password in the troikalearning.org website:") msg.body += "\n\n" + reset_link msg.body += "\n\n" msg.body += _("If you did not ask for your password to be reset, you can ignore this message.") msg.body += "\n\n" msg.body += __get_troika_message_signature() mail.send(msg) flash(_(u'Password reset instructions sent to %(email)s', email = forgotform.email.data)) else: flash(_(u"Invalid forgot form") + ': ' + ', '.join((key + ': ' + value[0]) for key, value in forgotform.errors.items()), 'error') return redirect(get_redirect_target())