Require email for sponsors upon registration

This commit is contained in:
David Wick
2015-08-07 12:46:13 -07:00
parent 92f2cdc777
commit 9e91ea0d5f
2 changed files with 17 additions and 3 deletions

View File

@@ -279,8 +279,9 @@ class ApiController(RedditController):
@csrf_exempt
@json_validate(email=ValidEmail("email"),
newsletter_subscribe=VBoolean("newsletter_subscribe", default=False))
def POST_check_email(self, responder, email, newsletter_subscribe):
newsletter_subscribe=VBoolean("newsletter_subscribe", default=False),
sponsor=VBoolean("sponsor", default=False))
def POST_check_email(self, responder, email, newsletter_subscribe, sponsor):
"""
Check whether an email is valid. Allows blank emails.
@@ -292,6 +293,11 @@ class ApiController(RedditController):
responder.has_errors("email", errors.NEWSLETTER_NO_EMAIL)
return
if sponsor and not email:
c.errors.add(errors.SPONSOR_NO_EMAIL, field="email")
responder.has_errors("email", errors.SPONSOR_NO_EMAIL)
return
if not (responder.has_errors("email", errors.BAD_EMAIL)):
# Pylons does not handle 204s correctly.
return {}
@@ -664,9 +670,11 @@ class ApiController(RedditController):
rem = VBoolean('rem'),
newsletter_subscribe=VBoolean('newsletter_subscribe',
default=False),
sponsor=VBoolean('sponsor', default=False),
)
def _handle_register(self, form, responder, name, email,
password, rem, newsletter_subscribe):
password, rem, newsletter_subscribe,
sponsor):
bad_captcha = responder.has_errors('captcha', errors.BAD_CAPTCHA)
if not (responder.has_errors("user",
errors.USERNAME_TOO_SHORT,
@@ -685,6 +693,11 @@ class ApiController(RedditController):
form.has_errors("email", errors.NEWSLETTER_NO_EMAIL)
return
if sponsor and not email:
c.errors.add(errors.SPONSOR_NO_EMAIL, field="email")
form.has_errors("email", errors.SPONSOR_NO_EMAIL)
return
user = register(name, password, request.ip)
VRatelimit.ratelimit(rate_ip = True, prefix = "rate_register_")

View File

@@ -94,6 +94,7 @@ error_list = dict((
('NO_EMAILS', _('please enter at least one email address')),
('TOO_MANY_EMAILS', _('please only share to %(num)s emails at a time.')),
('NEWSLETTER_NO_EMAIL', _('where should we send that weekly newsletter?')),
('SPONSOR_NO_EMAIL', _('advertisers are required to supply an email')),
('NEWSLETTER_EMAIL_UNACCEPTABLE', _('That email could not be added. Check your email for an existing confirmation email.')),
('OVERSOLD', _('that subreddit has already been oversold on %(start)s to %(end)s. Please pick another subreddit or date.')),
('OVERSOLD_DETAIL', _("We have insufficient inventory to fulfill your requested budget, target, and dates. Only %(available)s impressions available on %(target)s from %(start)s to %(end)s.")),