Fix some bugs when creating attachments for FileDiffs.

Review Request #13546 — Created Feb. 16, 2024 and submitted — Latest diff uploaded

Information

Review Board
master

Reviewers

There are two more bugs I ran into when creating attachments for a
FileDiff:

  1. When creating a FileAttachment for a given FileDiff, we were creating
    a draft for the review request. Diff-specific attachments aren't part
    of the usual draft flow for the review request, so this isn't
    necessary.

  2. Review requests and review request drafts both have relations to file
    attachments. When we create a new attachment for a FileDiff, we were
    correctly associating it with the review request, but we were not
    associating it with the draft. This meant that if there was a draft
    (as there often is when posting a new diff), publishing that draft
    would erase the relation to the ReviewRequest.

These objects also have a RelationCounterField for the FileAttachment
relation, which is used when computing things like the ETag to
shortcut if there are no attachments. This change also makes sure
we're saving those fields when adding new attachments.

  • Ran unit tests.
  • Posted changes including binary files and no longer saw extra drafts.
  • Verified that the file_attachment_counts field was set correctly.
  • Published a diff and saw that my file attachments didn't disappear and
    file_attachment_counts didn't zero out.

Commits

Files