Deprecation Notice: VERIFY_STUDENT["STORAGE_CLASS"] in Favor of Django’s STORAGES

Hello maintainers and early adopters,

We are deprecating the VERIFY_STUDENT["STORAGE_CLASS"] configuration used by the _storage property in the SoftwareSecurePhotoVerification class.

Starting with PR #36910, the storage backend is now resolved using Django’s modern STORAGES dictionary (introduced in Django 4.2):

  • The system will first look for STORAGES["verify_student"].

  • If that is not defined, it will fall back to the legacy VERIFY_STUDENT["STORAGE_CLASS"] for backward compatibility.

Breaking change:
Previously, if no legacy setting was defined, the default was storages.backends.s3boto3.S3Boto3Storage.
Now, it defaults to the global default storage instead.

If you are running from master or are an early deployer, please review your storage settings to ensure compatibility.

@early-deployers

I’d like to merge this underlying PR by 2025-08-08T04:00:00Z so if anyone has an concerns, about not being able to make this update to their settings, please speak up soon.

FWIW, on the 2U side it looks like this settings is already explicitly set if edx-platform/lms/envs/mock.yml at master · openedx/edx-platform · GitHub is to be believed but someone should confirm that with the real settings.

Hey there. Three questions for you.

  1. I was only made aware of this deprecation yesterday, so I want to confirm that when you remove this pull request, we should expect no changes on our end because of the backwards compatibility. Is that correct?
  2. How long do you plan to keep this backwards compatibility?
  3. Will a platform default value for the STORAGES setting be added?

Thanks!

Hi again.

I don’t think that the changes are backwards compatible. The STORAGE_CLASS for the verify_student application is set in settings.VERIFY_STUDENT['SOFTWARE_SECURE']['STORAGE_CLASS'] and not settings.VERIFY_STUDENT['STORAGE_CLASS']. Can we update the code changes to be sure to index into the SOFTWARE_SECURE dictionary to get the STORAGE_CLASS value?

Thank you.

According to the tests, the path is as follows:

However, I believe the correct path is the one you mentioned @mroytman, because I just saw this file edx-platform/lms/envs/mock.yml at master · openedx/edx-platform · GitHub in Feanil’s comment. If that’s the case, I’ll need to adjust the test as well. @feanil

I just added the fix into the PR feat: deprecate get_storage_class in core/storage.py by dwong2708 · Pull Request #36910 · openedx/edx-platform · GitHub