Downloads: Enforce constraint that only one ReleaseFile per OS per Release has "Download button" enabled. #2137
+63,066
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Our most favorite (and common) release failure!
This enforces the constraint on the DB level and raises a ValidationError if attempting to make a change that would breach it.
Before, RMs might accidentally mark multiple ReleaseFile objects as the "Download" for a given OS on a Release. This breaks the rendering of the downloads page for that release (and the main downloads page if it's the current release!) due to the Django "get" query here.