mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-01-28 00:07:57 -05:00
Allow sponsors to create promoted links as other users.
This commit is contained in:
@@ -393,6 +393,7 @@ class PromoteController(ListingController):
|
||||
rate_ip=True,
|
||||
prefix='create_promo_'),
|
||||
VShamedDomain('url'),
|
||||
username=VLength('username', 100, empty_error=None),
|
||||
l=VLink('link_id'),
|
||||
title=VTitle('title'),
|
||||
url=VUrl('url', allow_self=False, lookup=False),
|
||||
@@ -406,10 +407,9 @@ class PromoteController(ListingController):
|
||||
media_override=VBoolean("media-override"),
|
||||
domain_override=VLength("domain", 100)
|
||||
)
|
||||
def POST_edit_promo(self, form, jquery, ip, l, title, url, selftext, kind,
|
||||
disable_comments,
|
||||
media_height, media_width, media_embed,
|
||||
media_override, domain_override):
|
||||
def POST_edit_promo(self, form, jquery, ip, username, l, title, url,
|
||||
selftext, kind, disable_comments, media_height,
|
||||
media_width, media_embed, media_override, domain_override):
|
||||
|
||||
should_ratelimit = False
|
||||
if not c.user_is_sponsor:
|
||||
@@ -418,6 +418,27 @@ class PromoteController(ListingController):
|
||||
if not should_ratelimit:
|
||||
c.errors.remove((errors.RATELIMIT, 'ratelimit'))
|
||||
|
||||
# check for user override
|
||||
if not l and c.user_is_sponsor and username:
|
||||
try:
|
||||
user = Account._by_name(username)
|
||||
except NotFound:
|
||||
c.errors.add(errors.USER_DOESNT_EXIST, field="username")
|
||||
form.set_error(errors.USER_DOESNT_EXIST, "username")
|
||||
return
|
||||
|
||||
if not user.email:
|
||||
c.errors.add(errors.NO_EMAIL_FOR_USER, field="username")
|
||||
form.set_error(errors.NO_EMAIL_FOR_USER, "username")
|
||||
return
|
||||
|
||||
if not user.email_verified:
|
||||
c.errors.add(errors.NO_VERIFIED_EMAIL, field="username")
|
||||
form.set_error(errors.NO_VERIFIED_EMAIL, "username")
|
||||
return
|
||||
else:
|
||||
user = c.user
|
||||
|
||||
# check for shame banned domains
|
||||
if form.has_errors("url", errors.DOMAIN_BANNED):
|
||||
g.stats.simple_event('spam.shame.link')
|
||||
@@ -446,7 +467,7 @@ class PromoteController(ListingController):
|
||||
if not l:
|
||||
l = promote.new_promotion(title, url if kind == 'link' else 'self',
|
||||
selftext if kind == 'self' else '',
|
||||
c.user, ip)
|
||||
user, ip)
|
||||
|
||||
elif promote.is_promo(l):
|
||||
# changing link type is not allowed
|
||||
|
||||
@@ -52,6 +52,7 @@ error_list = dict((
|
||||
('NO_NAME', _('please enter a name')),
|
||||
('NO_EMAIL', _('please enter an email address')),
|
||||
('NO_EMAIL_FOR_USER', _('no email address for that user')),
|
||||
('NO_VERIFIED_EMAIL', _('no verified email address for that user')),
|
||||
('NO_TO_ADDRESS', _('send it to whom?')),
|
||||
('NO_SUBJECT', _('please enter a subject')),
|
||||
('USER_DOESNT_EXIST', _("that user doesn't exist")),
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
|
||||
<div class="pretty-form" id="promo-form">
|
||||
|
||||
%if c.user_is_sponsor:
|
||||
${username_field()}
|
||||
%endif
|
||||
${title_field(None, editable=True)}
|
||||
${kind_selector()}
|
||||
${url_field(None, editable=True, enable_override=c.user_is_sponsor)}
|
||||
@@ -55,3 +58,16 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%def name="username_field()">
|
||||
<%utils:line_field title="${_('create as user')}" id="username-field" css_class="rounded">
|
||||
<input id="username" name="username" type="text"
|
||||
class="rounded">
|
||||
${error_field("NO_EMAIL_FOR_USER", "username", "div")}
|
||||
${error_field("NO_VERIFIED_EMAIL", "username", "div")}
|
||||
${error_field("USER_DOESNT_EXIST", "username", "div")}
|
||||
<div class="infotext rounded">
|
||||
<p>${_("Create a promotion on another user's account.")}</p>
|
||||
</div>
|
||||
</%utils:line_field>
|
||||
</%def>
|
||||
|
||||
Reference in New Issue
Block a user