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
>>
>>
>