librelist archives

« back to archive

registration + email confirmation

registration + email confirmation

From:
Giolan Hai
Date:
2011-06-22 @ 10:27
Hey all,

Do you know how to do registration in Flask that require email 
confirmation? Is Flask has any mechanism to do it easy?

Thanks,
giolan

Re: [flask] registration + email confirmation

From:
JimG
Date:
2011-06-22 @ 10:34
http://packages.python.org/flask-mail/

On 22 June 2011 11:27, Giolan Hai <giolanhai@yahoo.com> wrote:

> Hey all,
>
> Do you know how to do registration in Flask that require email 
confirmation? Is Flask has any mechanism to do it easy?
>
> Thanks,
> giolan
>
>

Re: [flask] registration + email confirmation

From:
Marc de Verdelhan
Date:
2011-06-22 @ 13:25
With Flask-Mail extension:

1) The __init.py__ file in *<my_main_package>*

from flaskext.mail import Mail
...
mail = Mail(app)
...

2) The view.py module

import mailing
...

@module.route('/register', methods=['GET', 'POST'])
def register():
    """
    Register function.
    """
    if form.validate_on_submit():
        *### Registering the new user here* ###
        mailing.send_awaiting_confirm_mail(new_user)
        flash(messages.EMAIL_VALIDATION_SENT, 'info')
        return redirect(url_for('index'))
    else:
        if not g.user:
            return render_template('register.html', form=form)
        else:
            return redirect(url_for('index'))

3) The mailing.py module

from flaskext.mail import Message
...

def send_awaiting_confirm_mail(user):
    """
    Send the awaiting for confirmation mail to the user.
    """
    subject = "We're waiting for your confirmation!!"
    mail_to_be_sent = Message(subject=subject, recipients=[user['email']])
    confirmation_url = url_for('activate_user', user_id=user['_id'],
_external=True)
    mail_to_be_sent.body = "Dear %s, click here to confirm: %s" %
(user['email'], confirmation_url)
    from *<my_main_package>* import mail
    mail.send(mail_to_be_sent)

4) The 'activate' method, in the view.py module (again)

@module.route('/activate_user/<user_id>')
def activate_user(user_id):
    """
    Activate user function.
    """
    found_user = *### Getting user in db from id here ###*
    if not found_user:
        return abort(404)
    else:
        if found_user['status'] == 'awaiting_confirm':
            *### Setting the user status active here ###*
            mailing.send_subscription_confirmed_mail(found_user)
            flash('user has been activated', 'info')
        elif found_user['status'] == 'active':
            flash('user already activated', 'info')
        return redirect(url_for('login'))

--
Marc

On Wed, Jun 22, 2011 at 12:34 PM, JimG <j.gumbley@gmail.com> wrote:

> http://packages.python.org/flask-mail/
>
>
> On 22 June 2011 11:27, Giolan Hai <giolanhai@yahoo.com> wrote:
>
>> Hey all,
>>
>> Do you know how to do registration in Flask that require email 
confirmation? Is Flask has any mechanism to do it easy?
>>
>> Thanks,
>> giolan
>>
>>
>