Exemplo n.º 1
0
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
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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)