From 3f4ac47b16e93fb114bdaddacaec9e826057098a Mon Sep 17 00:00:00 2001 From: Brian Simpson Date: Tue, 20 Aug 2013 11:10:43 -0400 Subject: [PATCH] Simplify oversold message. Only show the total available for given target and dates, rather than breaking it down by date. --- r2/r2/controllers/promotecontroller.py | 10 ++++++++-- r2/r2/lib/errors.py | 2 +- r2/r2/public/static/js/sponsored.js | 23 ++++++++++------------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/r2/r2/controllers/promotecontroller.py b/r2/r2/controllers/promotecontroller.py index bb7dc9f4a..6133a4968 100644 --- a/r2/r2/controllers/promotecontroller.py +++ b/r2/r2/controllers/promotecontroller.py @@ -551,8 +551,14 @@ class PromoteController(ListingController): oversold = inventory.get_oversold(sr or Frontpage, start, end, daily_request, ignore) if oversold: - msg_params = {'daily_request': format_number(daily_request, - locale=c.locale)} + min_daily = min(oversold.values()) + available = min_daily * ndays + msg_params = { + 'available': format_number(available, locale=c.locale), + 'target': sr.name if sr else 'the frontpage', + 'start': start.strftime('%m/%d/%Y'), + 'end': end.strftime('%m/%d/%Y'), + } c.errors.add(errors.OVERSOLD_DETAIL, field='bid', msg_params=msg_params) form.has_errors('bid', errors.OVERSOLD_DETAIL) diff --git a/r2/r2/lib/errors.py b/r2/r2/lib/errors.py index 47c5b2cba..d06bb6322 100644 --- a/r2/r2/lib/errors.py +++ b/r2/r2/lib/errors.py @@ -79,7 +79,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.')), ('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. Requested %(daily_request)s impressions per day.')), + ('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.")), ('BAD_DATE', _('please provide a date of the form mm/dd/yyyy')), ('BAD_DATE_RANGE', _('the dates need to be in order and not identical')), ('DATE_RANGE_TOO_LARGE', _('you must choose a date range of less than %(days)s days')), diff --git a/r2/r2/public/static/js/sponsored.js b/r2/r2/public/static/js/sponsored.js index 233d475c7..e3b786b18 100644 --- a/r2/r2/public/static/js/sponsored.js +++ b/r2/r2/public/static/js/sponsored.js @@ -95,24 +95,21 @@ r.sponsored = { }) if (!_.isEmpty(oversold)) { - var oversold_dates = _.keys(oversold) + var minDaily = _.min(_.values(oversold)), + available = minDaily * ndays var message = r._("We have insufficient inventory to fulfill" + " your requested budget, target, and dates." + - " Requested %(daily_request)s impressions " + - "per day." - ).format({daily_request: r.utils.prettyNumber(daily_request)}) + " Only %(available)s impressions available" + + " on %(target)s from %(start)s to %(end)s." + ).format({ + available: r.utils.prettyNumber(available), + target: targeted ? srname : 'the frontpage', + start: startdate, + end: enddate + }) $(".OVERSOLD_DETAIL").text(message).show() - var available_list = $('