From 9442f16cb4b843276bcb99f517da2c09cb7ca3f4 Mon Sep 17 00:00:00 2001 From: bsimpson63 Date: Thu, 25 Apr 2013 16:38:54 -0400 Subject: [PATCH] traffic: Add campaign_history for querying targeting things. --- r2/r2/models/traffic.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/r2/r2/models/traffic.py b/r2/r2/models/traffic.py index 853e97f9e..dd5ae3f80 100644 --- a/r2/r2/models/traffic.py +++ b/r2/r2/models/traffic.py @@ -342,6 +342,19 @@ def promotion_history(cls, codename, start, stop): return [(r[0], (r[1],)) for r in q.all()] +def campaign_history(cls, codenames, start, stop): + """Get hourly traffic for given campaigns.""" + time_points = get_time_points('hour', start, stop) + q = (Session.query(cls) + .filter(cls.interval == "hour") + .filter(cls.codename.in_(codenames)) + .filter(cls.date.in_(time_points)) + .order_by(cls.date)) + return [(r.date, r.codename, r.subreddit, (r.unique_count, + r.pageview_count)) + for r in q.all()] + + @memoize("traffic_last_modified", time=60 * 10) def get_traffic_last_modified(): """Guess how far behind the traffic processing system is.""" @@ -492,6 +505,11 @@ class TargetedClickthroughsByCodename(Base): def total_by_codename(cls, codenames): return total_by_codename(cls, codenames) + @classmethod + @memoize_traffic(time=3600) + def campaign_history(cls, codenames, start, stop): + return campaign_history(cls, codenames, start, stop) + class AdImpressionsByCodename(Base): """Impressions for ads.""" @@ -569,6 +587,11 @@ class TargetedImpressionsByCodename(Base): def total_by_codename(cls, codenames): return total_by_codename(cls, codenames) + @classmethod + @memoize_traffic(time=3600) + def campaign_history(cls, codenames, start, stop): + return campaign_history(cls, codenames, start, stop) + class SubscriptionsBySubreddit(Base): """Subscription statistics for subreddits.