Bump to 1.7.23 dev.
Add CSRF protection to all POSTable views in Review Board.

All views in Review Board that handle HTTP POST requests are now
decorated with a @csrf_protect decorator, and have matching
{% csrf_token %} tags in the templates. This adds a layer of protection
we didn't have before.

Like the Djblets change, this doesn't affect the API, but does handle
all the user-facing and admin-facing views that accept HTTP POST.
Allow posting multiple review requests with the same commit ID.

POSTing a new review request isn't supposed to attempt to create or
update from a commit ID unless create_from_commit_id is passed in the
request. We weren't checking this flag, though, before looking up an
existing review request with that commit ID. This triggered a
ChangeNumberInUseError, which ended up confusing RBTools.

We no longer make this check unless being told to create or update from
the commit ID.
Clean up PyFlakes warnings in 1.7.

In order to keep things clean, I've gone through the PyFlakes warnings
found in 1.7 and fixed them up. These fixes match the fixes done in
2.0, and shouldn't be too painful to merge.
Fix the default URL imports in generated extensions.

Generated extensions were importing from 'django.conf.urls.defaults',
which is the old location. Now they import from 'django.conf.urls'.
Fix the MySQL docs for max_allowed_packet.

The old docs were not only styled wrong, but were also only showing how
to set the per-session max allowed packet size. This updates the docs to
show where to set this permanently, and to also discuss setting it just
for the session (switching the example to using mysqldump).
Merge branch 'release-1.7.x' into release-2.0.x
Add some logging and better strings to the reviews models.

This ports over some of the RBCommons changes made to the reviews
models.

In DefaultReviewer, "target people" has been changed to "target users."

In Group, invite_only now has help text.

There's also some logging for access control for ReviewRequest and
Group, which can be helpful in spotting users trying to get to things
they're not allowed to get to.
Change the CSS class for datagrid sidebar rows.

The datagrid sidebar rows were using "row" as the class name, which was
too generic and easily caused conflicts. We now have this namespaced to
"datagrid-sidebar-row".
Don't show Local Sites without groups in the joined groups list.

In the My Account page, the Groups list would show a section header for
every Local Site, even those without any actual groups added. This looks
messy and is completely useless. We now filter out any Local Sites that
don't contain any groups.
Split out the headerbar and navbar into new templates.

This takes the headerbar and navbar and puts them into their own
templates. It makes it a lot easier to read the base template,
particularly with regards to the ordering of blocks and template hooks,
and it also makes it easier to modify these bars without major merge
issues.

It also fixes an issue with overriding the "navbar" block, which
would have resulted in an extra </div>, due to an ordering issue that
wasn't apparent before this change.
Improve styling and extensibility for the My Account page.

The My Account page's styling was less than optimal when trying to put
<p> tags on the form. They were too large, had bad margins, and the
black text stood out too much. Now <p> tags have the same size and color
as labels, and have a good margin between elements, helping them to
blend in and feel natural.

Checkboxes also now have a sane style when not using the "checkbox-row"
class. This is particularly handy for MultipleChoiceFields. Previously,
the checkbox portion was taking 21em, which made no sense.

There's also some better extensibility for custom templates for the
page. Templates can inherit from prefs_page_form.html and overrie the
"pre_fields" and "post_fields" blocks to inject custom HTML before or
after the fields. Useful for explanatory text.
Merge branch 'release-2.0.x'