Future date limit on creating campaigns.

This commit is contained in:
Brian Simpson
2013-09-24 12:42:26 -04:00
parent cac9702cc4
commit b884ef23cc
5 changed files with 33 additions and 29 deletions

View File

@@ -327,6 +327,7 @@ authorizenetkey =
min_promote_bid = 20
max_promote_bid = 9999
min_promote_future = 2
max_promote_future = 93
# traffic log processing
TRAFFIC_ACCESS_KEY =

View File

@@ -509,10 +509,11 @@ class PromoteController(ListingController):
@validatedForm(VSponsor('link_id'),
VModhash(),
dates=VDateRange(['startdate', 'enddate'],
earliest=promote.promo_datetime_now(offset=1),
reference_date=promote.promo_datetime_now,
business_days=True,
sponsor_override=True),
earliest=promote.promo_datetime_now(offset=1),
latest=promote.promo_datetime_now(offset=g.max_promote_future),
reference_date=promote.promo_datetime_now,
business_days=True,
sponsor_override=True),
link=VLink('link_id'),
bid=VBid('bid', min=0, max=g.max_promote_bid,
coerce=False, error=errors.BAD_BID),
@@ -545,9 +546,9 @@ class PromoteController(ListingController):
field="startdate")
if (form.has_errors('startdate', errors.BAD_DATE,
errors.DATE_TOO_EARLY) or
form.has_errors('enddate', errors.BAD_DATE,
errors.DATE_TOO_EARLY, errors.BAD_DATE_RANGE)):
errors.DATE_TOO_EARLY, errors.DATE_TOO_LATE) or
form.has_errors('enddate', errors.BAD_DATE, errors.DATE_TOO_EARLY,
errors.DATE_TOO_LATE, errors.BAD_DATE_RANGE)):
return
# Limit the number of PromoCampaigns a Link can have

View File

@@ -128,6 +128,7 @@ class Globals(object):
'wiki_max_page_name_length',
'wiki_max_page_separators',
'min_promote_future',
'max_promote_future',
],
ConfigValue.float: [

View File

@@ -3345,23 +3345,26 @@ class PromoteLinkForm(Templated):
)
self.bids.append(row)
# reference "now" to what we use for promtions
# determine date range
now = promote.promo_datetime_now()
# min date is the day before the first possible start date.
self.promote_date_today = now
mindate = make_offset_date(now, g.min_promote_future,
business_days=True)
mindate -= datetime.timedelta(1)
if c.user_is_sponsor:
mindate = now
elif promote.is_accepted(link):
mindate = make_offset_date(now, 1, business_days=True)
else:
mindate = make_offset_date(now, g.min_promote_future,
business_days=True)
startdate = mindate + datetime.timedelta(1)
enddate = startdate + datetime.timedelta(3)
maxstart = now + datetime.timedelta(days=g.max_promote_future-1)
self.maxstart = maxstart.strftime("%m/%d/%Y")
maxend = now + datetime.timedelta(days=g.max_promote_future)
self.maxend = maxend.strftime("%m/%d/%Y")
self.startdate = startdate.strftime("%m/%d/%Y")
self.startdate = mindate.strftime("%m/%d/%Y")
enddate = mindate + datetime.timedelta(days=2)
self.enddate = enddate.strftime("%m/%d/%Y")
self.mindate = mindate.strftime("%m/%d/%Y")
self.subreddit_selector = SubredditSelector()
self.link = promote.wrap_promoted(link)
@@ -3378,8 +3381,8 @@ class PromoteLinkForm(Templated):
srnames.update(names)
srs = Subreddit._by_name(srnames)
srs[''] = Frontpage
inv_start = startdate
inv_end = startdate + datetime.timedelta(days=14)
inv_start = mindate
inv_end = mindate + datetime.timedelta(days=14)
sr_inventory = inventory.get_available_pageviews(
srs.values(), inv_start, inv_end, datestr=True)

View File

@@ -275,14 +275,12 @@ ${self.javascript_setup()}
<tr>
<th>${_("start")}</th>
<td class="prefright">
<%
mindate = thing.startdate
if c.user_is_sponsor:
mindate = thing.promote_date_today.strftime('%m/%d/%Y')
%>
<input type="hidden" id="date-min" name="date-min" value="${mindate}" />
<input type="hidden" id="date-min" name="date-min" value="${thing.startdate}">
<input type="hidden" id="date-start-max" name="date-start-max" value="${thing.maxstart}">
<input type="hidden" id="date-end-max" name="date-end-max" value="${thing.maxend}">
<%self:datepicker name="startdate", value="${thing.startdate}"
minDateSrc="date-min" initfuncname="init_startdate">
minDateSrc="date-min" maxDateSrc="date-start-max"
initfuncname="init_startdate">
function(elem) {
check_enddate(elem, $("#enddate"));
r.sponsored.on_date_change();
@@ -294,8 +292,8 @@ ${self.javascript_setup()}
<th>${_("end")}</th>
<td class="prefright">
<%self:datepicker name="enddate", value="${thing.enddate}"
minDateSrc="startdate" initfuncname="init_enddate"
min_date_offset="86400000">
minDateSrc="startdate" maxDateSrc="date-end-max"
initfuncname="init_enddate" min_date_offset="86400000">
function(elem) { r.sponsored.on_date_change(); }
</%self:datepicker>
${error_field("BAD_DATE_RANGE", "enddate", "div")}