def has_oversold_error(form, campaign, start, end, bid, cpm, target, location): ndays = (to_date(end) - to_date(start)).days total_request = calc_impressions(bid, cpm) daily_request = int(total_request / ndays) oversold = inventory.get_oversold(target, start, end, daily_request, ignore=campaign, location=location) if oversold: min_daily = min(oversold.values()) available = min_daily * ndays msg_params = { 'available': format_number(available, locale=c.locale), 'target': target.pretty_name, '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) return True
def has_oversold_error(form, campaign, start, end, bid, cpm, target, location): ndays = (to_date(end) - to_date(start)).days total_request = calc_impressions(bid, cpm) daily_request = int(total_request / ndays) oversold = inventory.get_oversold(target, start, end, daily_request, ignore=campaign, location=location) if oversold: min_daily = min(oversold.values()) available = min_daily * ndays msg_params = { "available": format_number(available, locale=c.locale), "target": target.pretty_name, "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) return True
def has_oversold_error(form, campaign, start, end, bid, cpm, target): ndays = (to_date(end) - to_date(start)).days total_request = calc_impressions(bid, cpm) daily_request = int(total_request / ndays) oversold = inventory.get_oversold(target or Frontpage, start, end, daily_request, ignore=campaign) if oversold: min_daily = min(oversold.values()) available = min_daily * ndays msg_params = { 'available': format_number(available, locale=c.locale), 'target': target.name if target 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) return True