mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-04-27 03:00:12 -04:00
Delete traffic viewers.
This commit is contained in:
@@ -341,7 +341,6 @@ def make_map():
|
||||
mc('/api/:action', controller='promote',
|
||||
requirements=dict(action=("promote|unpromote|edit_promo|link_thumb|"
|
||||
"freebie|promote_note|update_pay|refund|"
|
||||
"traffic_viewer|rm_traffic_viewer|"
|
||||
"edit_campaign|delete_campaign|meta_promo|"
|
||||
"add_roadblock|rm_roadblock|check_inventory|"
|
||||
"refund_campaign|terminate_campaign")))
|
||||
|
||||
@@ -1080,7 +1080,7 @@ class FrontController(RedditController):
|
||||
|
||||
|
||||
@require_oauth2_scope("modtraffic")
|
||||
@validate(VTrafficViewer('link'),
|
||||
@validate(VSponsor('link'),
|
||||
link=VLink('link'),
|
||||
campaign=VPromoCampaign('campaign'),
|
||||
before=VDate('before', format='%Y%m%d%H'),
|
||||
|
||||
@@ -50,7 +50,6 @@ from r2.lib.pages import (
|
||||
Roadblocks,
|
||||
UploadedImage,
|
||||
)
|
||||
from r2.lib.pages.trafficpages import TrafficViewerList
|
||||
from r2.lib.pages.things import wrap_links
|
||||
from r2.lib.system_messages import user_added_messages
|
||||
from r2.lib.utils import make_offset_date, to_date, to36
|
||||
@@ -691,46 +690,6 @@ class PromoteController(ListingController):
|
||||
rc = RenderableCampaign.from_campaigns(link, campaign)
|
||||
jquery.update_campaign(campaign._fullname, rc.render_html())
|
||||
|
||||
@validatedForm(VSponsor('container'),
|
||||
VModhash(),
|
||||
user=VExistingUname('name'),
|
||||
thing=VByName('container'))
|
||||
def POST_traffic_viewer(self, form, jquery, user, thing):
|
||||
"""
|
||||
Adds a user to the list of users allowed to view a promoted
|
||||
link's traffic page.
|
||||
"""
|
||||
if not form.has_errors("name",
|
||||
errors.USER_DOESNT_EXIST, errors.NO_USER):
|
||||
form.set_inputs(name="")
|
||||
form.set_html(".status:first", _("added"))
|
||||
if promote.add_traffic_viewer(thing, user):
|
||||
user_row = TrafficViewerList(thing).user_row('traffic_viewer', user)
|
||||
jquery(".traffic_viewer-table").show(
|
||||
).find("table").insert_table_rows(user_row)
|
||||
|
||||
# send the user a message
|
||||
msg = user_added_messages['traffic']['pm']['msg']
|
||||
subj = user_added_messages['traffic']['pm']['subject']
|
||||
if msg and subj:
|
||||
d = dict(url=thing.make_permalink_slow(),
|
||||
traffic_url=promote.promo_traffic_url(thing),
|
||||
title=thing.title)
|
||||
msg = msg % d
|
||||
item, inbox_rel = Message._new(c.user, user,
|
||||
subj, msg, request.ip)
|
||||
queries.new_message(item, inbox_rel)
|
||||
|
||||
|
||||
@validatedForm(VSponsor('container'),
|
||||
VModhash(),
|
||||
iuser=VByName('id'),
|
||||
thing=VByName('container'))
|
||||
def POST_rm_traffic_viewer(self, form, jquery, iuser, thing):
|
||||
if thing and iuser:
|
||||
promote.rm_traffic_viewer(thing, iuser)
|
||||
|
||||
|
||||
@validatedForm(VSponsor('link'),
|
||||
VModhash(),
|
||||
link=VByName("link"),
|
||||
|
||||
@@ -2926,14 +2926,6 @@ class UserTableItem(Templated):
|
||||
def __repr__(self):
|
||||
return '<UserTableItem "%s">' % self.user.name
|
||||
|
||||
class TrafficTableItem(UserTableItem):
|
||||
type = "traffic_viewer"
|
||||
remove_action = "rm_traffic_viewer"
|
||||
|
||||
@property
|
||||
def container_name(self):
|
||||
return self.link._fullname
|
||||
|
||||
class RelTableItem(UserTableItem):
|
||||
def __init__(self, rel, **kw):
|
||||
self._id = rel._id
|
||||
|
||||
@@ -36,8 +36,7 @@ from r2.lib import promote
|
||||
from r2.lib.db.sorts import epoch_seconds
|
||||
from r2.lib.menus import menu
|
||||
from r2.lib.menus import NavButton, NamedButton, PageNameNav, NavMenu
|
||||
from r2.lib.pages.pages import Reddit, TimeSeriesChart, UserList, TabbedPane
|
||||
from r2.lib.pages import TrafficTableItem
|
||||
from r2.lib.pages.pages import Reddit, TimeSeriesChart, TabbedPane
|
||||
from r2.lib.promote import cost_per_mille, cost_per_click
|
||||
from r2.lib.template_helpers import format_number
|
||||
from r2.lib.utils import Storage, to_date, timedelta_by_name
|
||||
@@ -535,8 +534,6 @@ class PromotedLinkTraffic(Templated):
|
||||
else 'all campaigns')
|
||||
|
||||
editable = c.user_is_sponsor or c.user._id == thing.author_id
|
||||
self.viewer_list = TrafficViewerList(thing, editable)
|
||||
|
||||
self.traffic_last_modified = traffic.get_traffic_last_modified()
|
||||
self.traffic_lag = (datetime.datetime.utcnow() -
|
||||
self.traffic_last_modified)
|
||||
@@ -739,36 +736,6 @@ class PromotedLinkTraffic(Templated):
|
||||
return out.getvalue()
|
||||
|
||||
|
||||
class TrafficViewerList(UserList):
|
||||
"""Traffic share list on /traffic/*"""
|
||||
|
||||
destination = "traffic_viewer"
|
||||
remove_action = "rm_traffic_viewer"
|
||||
type = "traffic_viewer"
|
||||
|
||||
def __init__(self, link, editable=True):
|
||||
self.link = link
|
||||
UserList.__init__(self, editable=editable)
|
||||
|
||||
@property
|
||||
def form_title(self):
|
||||
return _("share traffic")
|
||||
|
||||
@property
|
||||
def table_title(self):
|
||||
return _("current viewers")
|
||||
|
||||
def user_ids(self):
|
||||
return promote.traffic_viewers(self.link)
|
||||
|
||||
@property
|
||||
def container_name(self):
|
||||
return self.link._fullname
|
||||
|
||||
def user_row(self, row_type, user, editable=True):
|
||||
return TrafficTableItem(user)
|
||||
|
||||
|
||||
class SubredditTrafficReport(Templated):
|
||||
def __init__(self):
|
||||
self.srs, self.invalid_srs, self.report = [], [], []
|
||||
|
||||
@@ -152,34 +152,6 @@ def is_live_on_sr(link, sr):
|
||||
return bool(live_campaigns_by_link(link, sr=sr))
|
||||
|
||||
|
||||
# These could be done with relationships, but that seeks overkill as
|
||||
# we never query based on user and only check per-thing
|
||||
def is_traffic_viewer(thing, user):
|
||||
return (c.user_is_sponsor or user._id == thing.author_id or
|
||||
user._id in getattr(thing, "promo_traffic_viewers", set()))
|
||||
|
||||
def add_traffic_viewer(thing, user):
|
||||
viewers = getattr(thing, "promo_traffic_viewers", set()).copy()
|
||||
if user._id not in viewers:
|
||||
viewers.add(user._id)
|
||||
thing.promo_traffic_viewers = viewers
|
||||
thing._commit()
|
||||
return True
|
||||
return False
|
||||
|
||||
def rm_traffic_viewer(thing, user):
|
||||
viewers = getattr(thing, "promo_traffic_viewers", set()).copy()
|
||||
if user._id in viewers:
|
||||
viewers.remove(user._id)
|
||||
thing.promo_traffic_viewers = viewers
|
||||
thing._commit()
|
||||
return True
|
||||
return False
|
||||
|
||||
def traffic_viewers(thing):
|
||||
return sorted(getattr(thing, "promo_traffic_viewers", set()))
|
||||
|
||||
|
||||
def update_promote_status(link, status):
|
||||
set_promote_status(link, status)
|
||||
hooks.get_hook('promote.edit_promotion').call(link=link)
|
||||
|
||||
@@ -993,11 +993,6 @@ class VEmployee(VVerifiedUser):
|
||||
VVerifiedUser.run(self)
|
||||
|
||||
|
||||
class VTrafficViewer(VSponsor):
|
||||
def user_test(self, thing):
|
||||
return (VSponsor.user_test(self, thing) or
|
||||
promote.is_traffic_viewer(thing, c.user))
|
||||
|
||||
class VSrModerator(Validator):
|
||||
def __init__(self, fatal=True, perms=(), *a, **kw):
|
||||
# If True, abort rather than setting an error
|
||||
|
||||
@@ -4907,11 +4907,6 @@ div.timeseries span.title {
|
||||
}
|
||||
}
|
||||
|
||||
.traffic_viewer-table {
|
||||
margin-bottom: 2em;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.promo-traffic .content .tabmenu li {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
@@ -152,8 +152,6 @@ ${unsafe(safemarkdown(strings.traffic_promoted_link_explanation))}
|
||||
|
||||
${unsafe(safemarkdown(strings.traffic_help_email % dict(email=g.selfserve_support_email)))}
|
||||
|
||||
${thing.viewer_list}
|
||||
|
||||
${make_campaign_table()}
|
||||
|
||||
${make_traffic_table()}
|
||||
|
||||
Reference in New Issue
Block a user