'Add an email to our newsletter.'

@cross_domain(allow_credentials=True)
@json_validate(VModhashIfLoggedIn(), VRatelimit(rate_ip=True, prefix='rate_newsletter_'), email=ValidEmail('email'), source=VOneOf('source', ['newsletterbar', 'standalone']))
def POST_newsletter(self, responder, email, source):

    VRatelimit.ratelimit(rate_ip=True, prefix='rate_newsletter_')
    try:
        newsletter.add_subscriber(email, source=source)
    except newsletter.EmailUnacceptableError as e:
        c.errors.add(errors.NEWSLETTER_EMAIL_UNACCEPTABLE, field='email')
        responder.has_errors('email', errors.NEWSLETTER_EMAIL_UNACCEPTABLE)
        return
    except newsletter.NewsletterError as e:
        g.log.warning(('Failed    to    subscribe:    %r' % e))
        abort(500)
