def contact(): """Send an email to the ADMINS.""" current_app.logger.info('Entering meta.views.contact()...') form = ContactUsForm() if form.validate_on_submit(): subject = '[%s] Message from %s: %s' % (current_app.config['APP_NAME'], form.full_name.data, form.subject.data) date = get_current_time() css = get_resource_as_string('static/css/email.css') html = render_template('meta/emails/contact.html', css=css, email_recipient=form.email.data, full_name=form.full_name.data, date=date, title=subject, message=form.message.data) p = Premailer(html) result_html = p.transform() message = Message(subject=subject, html=result_html, reply_to=form.email.data, recipients=current_app.config['ADMINS']) mail.send(message) flash(_("Thanks for your message. We'll get back to you shortly."), 'success') current_app.logger.debug('Returning success.') response = jsonify(status='success') response.status_code = 200 return response
def post(): """Create a session.""" current_app.logger.info('Entering session.views.post()...') form = LoginForm() if form.validate_on_submit(): user, authenticated = User.authenticate(form.email.data, form.password.data) if user and authenticated: if login_user(user, remember='y'): response = jsonify(status='success', data=user.session_as_dict()) response.status_code = 200 current_app.logger.debug('Returning success; response.data=[%s]' % response.data) return response else: # User reactivation request. user.activation_key = str(uuid4()) db.session.add(user) db.session.commit() # Send reactivation confirmation email. css = get_resource_as_string('static/css/email.css') reactivate_url = '%s/#accounts/reactivate/%s/%s/' % (current_app.config['DOMAIN'], quote(user.email), user.activation_key) html = render_template('user/emails/reactivate_confirm.html', css=css, username=user.username, email_recipient=user.email, reactivate_url=reactivate_url) current_app.logger.debug('reactivate_url=[%s]' % reactivate_url) p = Premailer(html) result_html = p.transform() message = Message(subject='%s Account Reactivation' % current_app.config['APP_NAME'], html=result_html, recipients=[user.email]) try: mail.send(message) except SMTPDataError as e: current_app.logger.debug('Returning fail = [%s].' % e) response = jsonify(status='fail', data={'email': "Couldn't send email to %s." % form.email.data}) response.status_code = 200 return response # Return response response = jsonify(status='success', data=user.session_as_dict()) response.status_code = 200 current_app.logger.debug('Returning success') return response else: response = jsonify(status='fail', data={'email': _('Wrong email/password.')}) response.status_code = 200 current_app.logger.debug('Returning success; response.data=[%s]' % response.data) return response else: current_app.logger.debug('Returning fail; data = [%s].' % form.errors) return jsonify(status='fail', data=form.errors)
def password_reset(): """Request a password reset for a user.""" form = RecoverPasswordForm() # TODO: Refactor this logic so the if block is not nested if form.validate_on_submit(): user = User.query.filter_by(email=form.email.data).first() if user: user.activation_key = str(uuid4()) db.session.add(user) db.session.commit() # Send reset password email. css = get_resource_as_string('static/css/email.css') change_password_url = '%s/#accounts/password/reset/confirm/%s/%s/' % (current_app.config['DOMAIN'], quote(user.email), quote(user.activation_key)) html = render_template('user/emails/reset_password.html', css=css, username=user.username, email_recipient=user.email, change_password_url=change_password_url) current_app.logger.debug('change_password_url=[%s]' % change_password_url) p = Premailer(html) result_html = p.transform() message = Message(subject='Recover your password', html=result_html, recipients=[user.email]) try: mail.send(message) except SMTPDataError as e: current_app.logger.debug('Returning fail = [%s].' % e) response = jsonify(status='fail', data={'email': "Couldn't send email to %s." % form.email.data}) response.status_code = 200 return response current_app.logger.debug('Returning success.') response = jsonify(status='success') response.status_code = 200 return response else: current_app.logger.debug('Returning fail = [Sorry, no user found for that email address.].') response = jsonify(status='fail', data={'email': 'Sorry, no user found for that email address.'}) response.status_code = 200 return response else: current_app.logger.debug('Returning fail = [%s].' % form.errors) response = jsonify(status='fail', data=form.errors) response.status_code = 200 return response
def delete(id): """Delete a user.""" current_app.logger.info('Entering users.views.delete()...') # TODO: Verify that id === current_user.id user = User.query.get(id) form = DeactivateAccountForm() if form.validate(): user.status_id = INACTIVE db.session.add(user) db.session.commit() # Send deactivation receipt email css = get_resource_as_string('static/css/email.css') reactivate_request_url = '%s/#sessions/login/' % current_app.config['DOMAIN'] current_app.logger.debug('reactivate_request_url=[%s]' % reactivate_request_url) html = render_template('user/emails/deactivate_receipt.html', css=css, username=user.username, email_recipient=user.email, reactivate_request_url=reactivate_request_url) p = Premailer(html) result_html = p.transform() message = Message(subject='Your %s account is now deactivated' % current_app.config['APP_NAME'], html=result_html, recipients=[user.email]) try: mail.send(message) except SMTPDataError as e: current_app.logger.error('Returning fail = [%s].' % e) response = jsonify(status='fail', data={'email': "Couldn't send email to %s." % form.email.data}) response.status_code = 200 return response # Return response response = jsonify(status='success') response.status_code = 200 return response else: response = jsonify(status='fail', data=form.errors) current_app.logger.debug('form errors = [%s]' % form.errors) response.status_code = 200 return response
def post(): """Create a session.""" current_app.logger.info('Entering session.views.post()...') form = LoginForm() if form.validate_on_submit(): user, authenticated = User.authenticate(form.email.data, form.password.data) if user and authenticated: if login_user(user, remember='y'): response = jsonify(status='success', data=user.session_as_dict()) response.status_code = 200 current_app.logger.debug( 'Returning success; response.data=[%s]' % response.data) return response else: # User reactivation request. user.activation_key = str(uuid4()) db.session.add(user) db.session.commit() # Send reactivation confirmation email. css = get_resource_as_string('static/css/email.css') reactivate_url = '%s/#accounts/reactivate/%s/%s/' % ( current_app.config['DOMAIN'], quote( user.email), user.activation_key) html = render_template('user/emails/reactivate_confirm.html', css=css, username=user.username, email_recipient=user.email, reactivate_url=reactivate_url) current_app.logger.debug('reactivate_url=[%s]' % reactivate_url) p = Premailer(html) result_html = p.transform() message = Message(subject='%s Account Reactivation' % current_app.config['APP_NAME'], html=result_html, recipients=[user.email]) try: mail.send(message) except SMTPDataError as e: current_app.logger.debug('Returning fail = [%s].' % e) response = jsonify(status='fail', data={ 'email': "Couldn't send email to %s." % form.email.data }) response.status_code = 200 return response # Return response response = jsonify(status='success', data=user.session_as_dict()) response.status_code = 200 current_app.logger.debug('Returning success') return response else: response = jsonify(status='fail', data={'email': _('Wrong email/password.')}) response.status_code = 200 current_app.logger.debug('Returning success; response.data=[%s]' % response.data) return response else: current_app.logger.debug('Returning fail; data = [%s].' % form.errors) return jsonify(status='fail', data=form.errors)