From 595999ddfa14bccf963e63a2b8e83c2591d683fd Mon Sep 17 00:00:00 2001 From: Brian Simpson Date: Tue, 17 Dec 2013 12:39:42 -0500 Subject: [PATCH] edit_campaign: record more details in PromotionLog. --- r2/r2/lib/promote.py | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/r2/r2/lib/promote.py b/r2/r2/lib/promote.py index 0a3d8bb8d..a31d0a1de 100644 --- a/r2/r2/lib/promote.py +++ b/r2/r2/lib/promote.py @@ -260,6 +260,26 @@ def free_campaign(link, campaign, user): def edit_campaign(link, campaign, dates, bid, cpm, sr, priority): sr_name = sr.name if sr else '' # empty string means target to all + changed = {} + if bid != campaign.bid: + changed['bid'] = ("$%0.2f" % campaign.bid, "$%0.2f" % bid) + if dates[0] != campaign.start_date or dates[1] != campaign.end_date: + original = '%s to %s' % (campaign.start_date, campaign.end_date) + edited = '%s to %s' % (dates[0], dates[1]) + changed['dates'] = (original, edited) + if cpm != campaign.cpm: + changed['cpm'] = (campaign.cpm, cpm) + if sr_name != campaign.sr_name: + format_sr_name = (lambda sr_name: '/r/%s' % sr_name if sr_name + else '') + changed['sr_name'] = map(format_sr_name, (campaign.sr_name, sr_name)) + if priority != campaign.priority: + changed['priority'] = (campaign.priority.name, priority.name) + + change_strs = map(lambda t: '%s: %s -> %s' % (t[0], t[1][0], t[1][1]), + changed.iteritems()) + change_text = ', '.join(change_strs) + # if the bid amount changed, cancel any pending transactions if campaign.bid != bid: void_campaign(link, campaign) @@ -273,15 +293,15 @@ def edit_campaign(link, campaign, dates, bid, cpm, sr, priority): campaign.trans_id, priority, commit=True) if campaign.priority.cpm: - # record the transaction - text = 'updated campaign %s. (bid: %0.2f)' % (campaign._id, bid) - PromotionLog.add(link, text) - # make it a freebie, if applicable author = Account._byID(link.author_id, True) if getattr(author, "complimentary_promos", False): free_campaign(link, campaign, c.user) + # record the changes + if change_text: + PromotionLog.add(link, 'edited %s: %s' % (campaign, change_text)) + hooks.get_hook('promote.edit_campaign').call(link=link, campaign=campaign)