From 96c0aef441d87ea312d08095d64284a9c2f22326 Mon Sep 17 00:00:00 2001 From: Keith Mitchell Date: Mon, 7 Jan 2013 13:57:24 -0800 Subject: [PATCH] promotions: Separate admin view of /promoted/graph Make the admin view of /promoted/analytics distinct from the non-admin view --- r2/r2/config/routing.py | 1 + r2/r2/controllers/promotecontroller.py | 10 +++++++--- r2/r2/lib/menus.py | 1 + r2/r2/lib/pages/pages.py | 11 ++++++++--- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/r2/r2/config/routing.py b/r2/r2/config/routing.py index 96cde1fca..531eacba1 100644 --- a/r2/r2/config/routing.py +++ b/r2/r2/config/routing.py @@ -155,6 +155,7 @@ def make_map(): controller='promote', action='pay') mc('/promoted/graph', controller='promote', action='graph') + mc('/promoted/admin/graph', controller='promote', action='admingraph') mc('/promoted/inventory/:sr_name', controller='promote', action='inventory') mc('/promoted/traffic/headline/:link', diff --git a/r2/r2/controllers/promotecontroller.py b/r2/r2/controllers/promotecontroller.py index 4474b612e..7d565ad23 100644 --- a/r2/r2/controllers/promotecontroller.py +++ b/r2/r2/controllers/promotecontroller.py @@ -144,11 +144,15 @@ class PromoteController(ListingController): @validate(VSponsor()) def GET_graph(self): - content = Promote_Graph() - if c.user_is_sponsor and c.render_style == 'csv': + return PromotePage("graph", content=Promote_Graph()).render() + + @validate(VSponsorAdmin()) + def GET_admingraph(self): + content = Promote_Graph(admin_view=True) + if c.render_style == 'csv': c.response.content = content.as_csv() return c.response - return PromotePage("graph", content = content).render() + return PromotePage("admingraph", content=content).render() def GET_inventory(self, sr_name): diff --git a/r2/r2/lib/menus.py b/r2/r2/lib/menus.py index 038675b99..758435d1c 100644 --- a/r2/r2/lib/menus.py +++ b/r2/r2/lib/menus.py @@ -174,6 +174,7 @@ menu = MenuHandler(hot = _('hot'), future_promos = _('unseen'), roadblock = _('roadblock'), graph = _('analytics'), + admin_graph = _('admin analytics'), live_promos = _('live'), unpaid_promos = _('unpaid'), pending_promos = _('pending'), diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index 3ff46e5bb..b16919e7f 100755 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -3050,6 +3050,10 @@ class PromotePage(Reddit): NamedButton('live_promos'), NamedButton('graph')] + if c.user_is_sponsor: + buttons.append(NamedButton('admin_graph', + dest='/admin/graph')) + menu = NavMenu(buttons, base_path = '/promoted', type='flatlist') @@ -3506,7 +3510,8 @@ class Promote_Graph(Templated): return promos - def __init__(self): + def __init__(self, admin_view=False): + self.admin_view = admin_view and c.user_is_sponsor self.now = promote.promo_datetime_now() start_date = promote.promo_datetime_now(offset = -7).date() @@ -3518,13 +3523,13 @@ class Promote_Graph(Templated): # these will be cached queries market, promo_counter = self.get_market(None, start_date, end_date) my_market = market - if not c.user_is_sponsor: + if not self.admin_view: my_market = self.get_market(c.user._id, start_date, end_date)[0] # determine the range of each link promote_blocks = [] def block_maker(link, bid_day, starti, endi, campaign): - if ((c.user_is_sponsor or link.author_id == c.user._id) + if ((self.admin_view or link.author_id == c.user._id) and not promote.is_rejected(link) and not promote.is_unpaid(link)): promote_blocks.append((link, starti, endi, campaign))