These are ynbuttons, which cannot appear within an existing form.
Thus the "delete app" link appears in an awkward place and the
"remove developer" link currently won't work at all. chromakode
said he was going to take a look at modifying ynbutton to fix this.
This commit fixes a bug in the OAuth2Client.delete().
Update the models to be able to update and query:
- Which OAuth2Clients are developed by a user?
- Who are the developers of an OAuth2Client?
- What OAuth2AccessTokens are outstanding for a user?
There's some duplicated code here, and tests are needed, but it's
functional.
This now relies on the fudged number from subreddit.py for obscurity.
Rewords the default text, and title text of the metric.
Adds a "fudged" class to the block so that low values can be hidden through CSS.
Previously, setting data props on a thing would result in a SELECT to
determine which data properties already existed, and then a sequence of
INSERTs and UPDATEs (with some batching) to get the database in the
right state.
The account master wasn't too happy with those extra selects, so we
made it so that the app would optimistically UPDATE and if no rows were
changed do INSERTs instead (with appropriate batching as above).
Unfortunately, this greatly increases the number of operations done when
adding new data props, such as at thing creation time, and on some
tables that's almost entirely all of the workload.
This patch takes advantage of the fact that we know no data attributes
will exist at thing creation time and therefore we can blindly INSERT
without doing UPDATEs or SELECTs first to try and reduce the number of
extraneous operations we do.
Updates an occurrence of "index" that should have been changed to campaign._id
during the campaign thing reads change. This fixes two bugs:
(1) Campaigns were being incorrectly marked with "update failed" when edited
by an admin or sponsor even though the update was successful.
(2) Campaigns were not being automatically marked as freebies when edited by
an admin or sponsor. (These have to be set as freebies in self-serve because
they are billed separately.)
This change also checks for an empty user string so the update function can
be run in paster shell.