Pycassa will do its own marshalling when columns have validators
specified in the C* metadata. We need to disable our own marshalling
when we know Pycassa will take care of it. This is already taken care of
in the general case, but timestamps are handled somewhat uniquely.
This provides a system for two-factor authentication, using a compliant
OTP-generator such as Google Authenticator. The framework includes a
validator for use on API calls needing authentication as well as a UI
for provisioning/resetting your secret key. A secure cookie may be
generated to effectively turn the user's browser into a temporary
authentication factor.
This feature is currently limited to admins only until full-site SSL is
available.
If the config variable profile_directory is set, ProfilingMiddleware
will be added to the WSGI stack. The middleware will generate a file in
the specified directory on each request containing the contents of that
request's profile.
The code has already been dual-writing to PromoCampaign Things. This change
begins reading from Things while still writing to both Things and the link
attributes in case we need to roll back.
Makes the behavior match that of PromoteDates.bid_history, which sets the
end_date to today if it's not given as a parameter.
This fixes a bug where the function raised an error if the optional parameter
end_date wasn't provided.
Gets rid of default values so a data attribute will be saved even when trans_id
is zero. This change will make it possible to query for unpaid campaigns.
Also gets rid of payment state and makes sure the transaction id is preserved
even if the promoted link is rejected because this lets us link the campaign
to the refund in the promo log.
In the previous system, the weekday summary showed the average traffic
for each day-of-week over the day interval range. The new system was
just showing the latest week's data.
boto attempts to validate the bucket when calling get_bucket by doing a
LIST with zero desired items. By turning off validate we can reduce the
permissions.
Occasional rogue promotion weights were causing /promoted/graph to fail. We
should figure out how those weights are being created in the first place, but
for now just check to make sure a campaign exists before using it.
Links that had been taken down for DMCA compliance (and therefore moved
into the takedown subreddit) were breaking modlog because the takedown
subreddit wasn't in the list of subreddits to look up.
Defaults to showing traffic for the last month if a promoted link doesn't have
any campaigns associated with it. This will make it possible to see stats for
manually launched promos like the subreddit discovery links.
This should be a bit more color-blind friendly as it's high-contrast.
Additionally, I've changed the name of the variable to something less
tied to the contents of the variable, as I really should've known better
from the world of CSS classes.
This allows moderators of private subreddits to explain why it is
private or how to request access (or simply that you shouldn't and
should go the hell away.)
* Upgrade flot and include the new timeseries flot plugin.
(flot/flot@ca050b26c2)
* All times mentioned by traffic are now in UTC, not "local."
* Traffic data is generated as actual tables and JavaScript
generates the Flot charts from the tables for accessibility.
* Many pieces of traffic data that were only accessible from the
old traffic app are now moved into the reddit app.
* Traffic backend lag time is indicated on the graphs for clarity.
* Use excanvas with Flot instead of Google Charts for old-IE fallback.
Traffic stats are currently pulled from the traffic app, which is a
separate pylons application, via HTTP requests. This patch eliminates
the dependency on that extra app by moving the queries into the reddit
app while maintaining the existing API near-verbatim. This allows us to
ditch the external traffic app.