Don't cache failed manual updates checks.

Once a thread finds that manual updates are required, that state is
cached, requiring a restart to recompute the checks. This is
particularly problematic when a thread happens to hit the database when
it's temporarily down or something.

Now, we only cache if checks pass, and not when they fail. If they fail,
the next request will just try them again. That helps unstick these
threads.
Add compatibility with Plastic SCM 4.0.

This updates the Plastic compatibility to work against Plastic SCM 4.0.

http://reviews.reviewboard.org/r/2797/
Require Djblets 0.6.18.
Add documentation for the hosting service support.

This provides some docs in the admin UI for the new account linking and
fields, and provides some basic API documentation on the new resource.
Give the hosting service account resource a name.

The hosting service account resource is now located at
/api/hosting-service-accounts/, instead of /api/hostingserviceaccounts/.
Release Review Board 1.6.7.
Fix a database migration issue with certain versions of MySQL.

MySQL's handling of default values for longtext fields is strict, and
are problematic during an evolution. We can't have a default value (it's
okay for it to be empty in certain versions), unless it's NULL. We
didn't have it set to allow NULL, though.

Now the new Repository.extra_data field allows NULL values, and is NULL
by default, restoring compatibility.

An evolution has been added for anyone who has successfully upgraded
already, or installed 1.6.7 on a new database.
Release version 1.6.7.1.
Fix the Account field default for hosting services.

A change in the comparison for the Account field in the Repository form
broke the default for the Account field. Opening an existing repository
would show the Link New Account entry again. The proper repository could
be selected again, so this isn't fatal, but it's annoying.

This was caused because a "==" was turned into a "===" after review,
since === is ideal, but we were comparing a string and an integer.

This change makes this explicit by calling parseInt() on the selected
value in order to normalize the types.
Fix the New Review Request form with hosting services.

The New Review Request form ended up having problems with the repository
selected. Django seems to use defer() somewhere when providing an object
from a ModelChoiceField. This creates something designed to look like
the model we care about, but with some field changes. What ends up
happening is that our JSONField's serialized data gets copied over to
this model, not the dict we operate on. This fails later on when we
attempt to access data from this dict.

To fix this, we re-fetch the Repository based on the placeholder one.
This gives us a model that isn't screwed up that we can rely upon.
Support checking if re-authorization is needed.

If a hosting service account needs re-authorization (as determined by
the is_authorized method, which can check the local account auth data for
known keys), we will now show this on the repository configuration page
with some helpful text.

Nothing committed needs this yet, but an in-progress Bitbucket change
will.
Add some helpful text for hosting service configuration.

This improves the help text a little bit for a couple of the standard
hosting service fields, and also for the GitHub repository. It doesn't
deal with the other repositories yet, but GitHub is, for the moment, the
priority.
Fix the parameters passed to FileNotFoundError in GitHub.

FileNotFoundError expects a path and revision, but was being passed an
error string. Now it's passed the correct parameters.
Fix hosting service bug tracker configuration and required flags.

Bug tracker configuration had some problems when using the hosting
service's bug tracker, especially with certain combinations of bug
trackers and hosting services.

There were two key issues:

1) The bug tracker plan field's required state was based on the selected
   bug tracker service, but it wasn't taking into account the Use
   Hosting Service's Bug Tracker state. Now that is factored in.

2) The bug tracker plan's value wasn't being based off the repository
   plan when using the hosting service's bug tracker. This meant that if
   you used GitHub as the hosting service, the bug tracker plan was
   still "default", which didn't exist in the GitHub hosting service's
   plans. Now that's using the selected hosting service's repository
   plan.

While working on this, I realized that we were doing a lot of work to
set the required flags, but never setting them back, which made them
appear incorrectly (which could possibly affect validation on future
fixes). So now we store the required states and then set them back after
validation.

To make the unit tests for this not be so time-consuming, I added a flag
to turn off the repository validation. This is used in the new test for
bug trackers.
Release Review Board 1.6.8.
Require Djblets 0.6.19.

This build fixes a key bindings issue on the diff viewer, where the diff
viewer's key bindings were taking precedent over typing in the
inlineEditor.
Always factor in the access token for requests.

The access token wasn't always being factored in. This got dropped at
some point in my rework. This was affecting Private GitHub plans.
Log a warning when GitHub rate limits reach only 100 calls left.

This updates the GitHub code to check the rate limit and to log a
warning when we're down to only 100 calls. This will help with debugging
rate limit problems.

Part of this work updates our _http_{get,post} and _json_{get,post} to
return not only data but also headers.

GitHub overrides _http_{get,post} to do the rate limit check before
returning, assuming no exception has been raised by urlopen.
Fix non-repository review requests.

The recent change to fix loading repository data for the New Review
Request page re-introduced the requirement that there be a valid
repository, which broke graphic-only reviews. This fixes that so we no
longer make the assumption.

Fixes bug #2633.
Release Review Board 1.6.9.