• 
      

    Update our django-storages dependency and fix storage usage.

    Review Request #13764 — Created April 22, 2024 and submitted — Latest diff uploaded

    Information

    Review Board
    release-7.x

    Reviewers

    Django 4.2 no longer supports the DEFAULT_FILE_STORAGE setting, and we
    hadn't updated our code to move fully over to STORAGES. This prevented
    us from properly storing or accessing files via S3 (in the case of
    reviews.reviewboard.org), and would have affected users using this or
    other storage backends.

    We now set STORAGES['default'] instead, which is the modern
    equivalent.

    The django-storages dependency has been bumped as part of this, as older
    releases don't work with Django 4.2. There have been some changes in
    modern django-storages, which impacted some of our loading code. That
    code has been updated accordingly.

    As django-storages is now light-weight, with all the requirements for
    services like S3 being available via "extra" dependencies, we can now
    depend on it unconditionally. Our S3 support in ReviewBoard[s3] now
    just wraps django-storages[s3]. Of note, they now use boto3, as
    opposed to the old boto we used before.

    One notable change is that it appears django-storages before may have
    given us signed URLs unconditionally. It's not entirely clear, but it
    does seem that we aren't getting signed URLs anymore due to the
    aws_querystring_auth setting we pass in. We had this set to False,
    which is a bad default. We now set it to True and set a standard
    expiration for signed URLs.

    One last semi-related thing is that we had a bad field name set in the
    configuration form that prevented the configured storage backend from
    being selected by default. This has been corrected.

    Semi-related, the support for CouchDB is now explicitly turned off. It
    turns out we haven't actually worked with it in ages, and we never
    offered native configuration. It's doubtful anyone's used it since its
    introduction, and isn't worth putting in the release notes.

    Unit tests pass.

    Re-deployed and verified that file storage and access worked again.

    Commits

    Files