Now, in addition to checking that the date has the correct format (YYYY-MM)
we also check to make sure the date is in the future and the month is in
the range 01 to 12.
This fixes the problem where users were seeing a 500 server error after
entering invalid values for the month when entering their credit card info.
This change also fixes a problem where the form was redirecting even if there
were validation errors, leading the user to believe their authorization was
successful when it wasn't.
This will replace the current stuff in thing_utils.py. The idea is that
by storing the various last modified timestamps for a thing in a single
row together, we can save Cassandra round trips and seeks per request.
This has a couple of advantages:
* interoperability with Cassandra tools (cassandra-cli / cqlsh)
* smaller by 5-6 bytes on every column
From here on out, date columns will be written in the Cassandra
standard 8-byte integer (number of milliseconds since epoch) format.
Old-style stringified epoch seconds will be read properly.
This relies on Pycassa's new UTC-based behaviour in 1.7.
Previously, invoice number was [user_id]T[link_id]C[campaign_id].
Since campaigns are represented as Things now, their ids are longer, putting
us over the 20 char limit for invoice numbers defined in the authorize.net
xml api.
(see https://api.authorize.net/xml/v1/schema/AnetApiSchema.xsd )
Now invoice number will be T[link_id]C[campaign_id], which is still unique
across campaigns since a link is always associated with only one user
First step of breaking campaigns out into their own data object.
Campaigns are still stored as an attribute on their promoted Link as before,
and all reads are still done from the link attribute, but writes (creation of
a campaign and edits to a campaign) are also written into a Thing table.
NOTE: This change has a configuration dependency in another repository.
The following lines must be added to the .ini file:
db_table_promocampaign = thing
db_servers_promocampaign = [YOUR SERVER NAMES HERE]
Since "+/-frontpage" became "subscribe" and "unsubscribe", the text is
no longer the same width. This causes the subreddits to be jagged on
/reddits listings. This fixes it by giving space (hopefully enough for
all languages) for the buttons.
Makes campaign id a part of the invoice number so self-serve users can create
multiple campaigns at the same bid amount without getting a duplicate
transaction error