Add original URL and mimetype information for expanded resources.

Review Request #10452 — Created March 18, 2019 and submitted


When expanding objects in an API response, the caller loses out on some
useful information, such as the original URL to the expanded resource
and the mimetypes. This causes the caller some extra work if they need
this information, either making assumptions about URLs/mimetypes or
performing a second request to get these details.

This change updates the payment to provide some useful information on
the expanded information. Payloads that expand resources now have an
_expanded field that has each expanded field name as a key and
information as the value.

If expanding a model (such as from a ForeignKey), this will contain
an item_mimetype key mapping to the mimetype of the expanded resource.

If expanding a QuerySet, this will also just contain item_mimetype
(as there's not necessarily a corresponding list resource that the user
could otherwise get access to).

If expanding a child resource, this will contain item_mimetype,
list_mimetype, and list_url, all of which can be useful for mapping
the results back to native objects on the client.

Unit tests pass in both Djblets and Review Board.

Manually tested this with some resources, making sure I always got the
results I expected.

Add original URL and mimetype information for expanded resources.
  1. Ship It!
Review request changed

Status: Closed (submitted)

Change Summary:

Pushed to release-2.0.x (0cdc624)