Package: django-storages
InstallationInstalling from PyPI is as easy as doing:pipinstalldjango-storagesIf you’d prefer to install from source (maybe there is a bugfix in master that
hasn’t been released yet) then the magic incantation you are looking for is:pipinstall-e'git+https://github.com/jschneier/django-storages.git#egg=django-storages'For detailed instructions on how to configure the backend of your choice please consult the documentation.Aboutdjango-storages is a project to provide a variety of storage backends in a single library.This library is usually compatible with the currently supported versions of
Django. Check the Trove classifiers in setup.py to be sure.django-storages is backed in part byTidelift. Check them out for all of your enterprise open source
software commercial support needs.SecurityTo report a security vulnerability, please use theTidelift security contact. Tidelift will coordinate the
fix and disclosure. Pleasedo notpost a public issue on the tracker.Found a Bug?Issues are tracked via GitHub issues at theproject issue page.DocumentationDocumentation for django-storages is located athttps://django-storages.readthedocs.io/.ContributingCheck for open issuesat the project
issue page or open a new issue to start a discussion about a feature or bug.Fork thedjango-storages repository on GitHubto start making changes.Add a test case to show that the bug is fixed or the feature is implemented
correctly.Bug me until I can merge your pull request.Please don’t update the library version in CHANGELOG.rst orstorages/__init__.py, the maintainer will do that on release.
If you’re the first to update the CHANGELOG in this release cycle, just put the version asXXXX-XX-XX.HistoryThis repo began as a fork of the original library under the package name of django-storages-redux and
became the official successor (releasing under django-storages on PyPI) in February of 2016.django-storages CHANGELOG1.14.2 (2023-10-08)S3Fix re-opening ofS3File(#1321)Revert raisingImproperlyConfiguredwhen nobucket_nameis set (#1322)1.14.1 (2023-09-29)AzureDo not require bothAccountNameandAccountKeyinconnection_string(#1312)S3Work around boto3 closing the uploaded file (#1303)Fix crash when cleaning up during aborted connection ofS3File.write(#1304)RaiseFileNotFoundErrorwhen attempting to read thesizeof a non-existent file (#1309)Move auth & CloudFront signer validation to init (#1302)RaiseImproperlyConfiguredif nobucket_nameis set (#1313)Fix tracking ofS3File.closed(#1311)1.14 (2023-09-04)GeneralBreaking: Drop support for Django 4.0 (#1235)Breaking: The long deprecated & removed (from Django)(modified|created|accessed)_timemethods have been
removed from the various storages, please replace with theget_(modified|created|accessed)_timemethodsAdd support for savingpathlib.PurePathnames (#1278)Add support for Django 4.2 (#1236)AzureSetaccount_(name|key)fromconnection_stringif not provided (#1225)DropboxDeprecated:The nameDropboxStorage.locationhas been deprecated, please rename toDropboxStorage.root_path, a future version will
remove support for the old name. (#1251)Storage and related names with a captialized B have been changed to no longer have one e.gDropboxStoragehas now replacedDropBoxStorage. Aliases have been added so no change is necessary at this time. A future version might deprecate the old names. (#1250)DropboxStoragenow conforms to theBaseStorageinterface (#1251)Fix name mangling when saving with certain complex root paths (#1279)FTPUse settingBASE_URLif it is defined (#1238)Google CloudBreaking: Support for the deprecatedGS_CACHE_CONTROLhas been removed. Please set thecache_controlparameter ofGS_OBJECT_PARAMETERSinstead. (#1220)LibcloudReading a file that does not exist will now raiseFileNotFoundError(#1191)SFTPAdd closing context manager for standalone usage to ensure connections are cleaned up (#1253)S3Deprecated:AWS_S3_USE_THREADShas been deprecated in favor ofAWS_S3_TRANSFER_CONFIG(#1280)Important:The namespace of this backend has changed fromS3Boto3toS3. There are no current plans
to deprecate and remove the old namespace but please update if you can. All paths, imports, and classes that previously
referred tos3botoare nows3. E.gS3Boto3Storagehas been changed toS3StorageandS3Boto3StorageFilehas been changed toS3File. (#1289). Additionally the install extra is nows3(#1284)Add settingtransfer_config/AWS_S3_TRANSFER_CONFIGto customize any of theTransferConfigproperties (#1280)Enable passingsecurity_tokento constructor (#1246)Do not overwrite a returnedContentTypefromget_object_parameters(#1281)Add support for settingcloudfront_key_idandcloudfront_keyvia Django 4.2’sOPTIONS(#1274)FixS3File.closed(#1249)Fix opening new files in write mode withS3File(#1282)FixS3Filenot respecting mode onreadlines(#1000)Fix saving files with string content (#911)Fix retrieving files with SSE-C enabled (#1286)1.13.2 (2022-12-23)GeneralAdd support for Python 3.11 (#1196)Add support for savingpathlib.Pathnames (#1200)S3Catch 404 errors when callingdelete()(#1201)AzureUseAZURE_CUSTOM_DOMAINfor retrieving blob URLs and storage URL for other operations (#1176)Google CloudUseDEFAULT_RETRYfor all upload & delete operations (#1156)Fix gzipping of content (#1203)Pass through kwargs to signed URL generator (#1193)SFTPImprove write & memory performance when saving files (#1194)1.13.1 (2022-08-06)DropboxStrip off the root path when saving files to fix saving with upgraded versions of Django (#1168)UpdateDropBoxStorageconstructor parameter order to be backwards compatible (#1167)1.13 (2022-08-05)GeneralAdd support for Django 4.0 and 4.1 (#1093)Drop support for Django 2.2, 3.0 and 3.1 (#1093)Drop support for Python 3.5 and 3.6 (#1093)S3Breaking: Update and document the undocumentedAWS_S3_URL_PROTOCOLfromhttp:tohttps:and remove the
undocumentedAWS_S3_SECURE_URLSsetting. You should only need to update your settings if you had updated either of
these previously undocumented settings.  The default behavior of constructing anhttps:URL with a custom domain
is unchanged (#1164)AddAWS_S3_USE_THREADSto disablethreadingfor compatibility withgevent(#1112)DropboxAdd support for refresh tokens (#1159)IgnoreApiErrorexception inurl()(#1158)AzureRestore support forAZURE_ENDPOINT_SUFFIX(#1118)Replace deprecateddownload_to_streamwithreadinto(#1113)AddAZURE_API_VERSIONsetting (#1132)Fixget_modified_time()(#1134)Google CloudAdd support for gzipping files viaGS_IS_GZIPPEDandGZIP_CONTENT_TYPES(#980)UseGS_BLOB_CHUNK_SIZEwith files that already exist (#1154)1.12.3 (2021-10-29)GeneralAdd support for Python 3.10 (#1078)S3Re-raise non-404 errors in.exists()(#1084,#1085)AzureFix usingAZURE_CUSTOM_DOMAINwith an account key credential (#1082,#1083)SFTPCatchFileNotFoundErrorinstead ofOSerrorin.exists()to prevent swallowingsocket.timeoutexceptions (#1064,#1087)1.12.2 (2021-10-16)AzureAddparameterskwarg toAzureStorage.urlto configure blob properties in the SAS token (#1071)Fix regression whereAZURE_CUSTOM_DOMAINwas interpreted as a replacement ofblob.core.windows.netrather than as a full domain
(#1073,#1076)1.12.1 (2021-10-11)S3Change gzip compression to use a streaming implementation (#1061)Fix saving files withS3ManifestStaticStorage(#1068,#1069)1.12 (2021-10-06)GeneralAdd support for Django 3.2 (#1046,#1042,#1005)Replace Travis CI with GitHub actions (#1051)S3Convert signing keys to bytes if necessary (#1003)Avoid a ListParts API call during multipart upload (#1041)Custom domains now use passed URL params (#1054)Allow the use of AWS profiles and clarify the options for passing credentials (fbe9538)Re-allow override of various access key names (#1026)Properly exclude empty folders duringlistdir(66f4f8e)Support saving file objects that are notseekable(#860,#1057)ReturnTruefor.exists()if a non-404 error is encountered (#938)AzureBreaking: This backend has been rewritten to use the newer versions ofazure-storage-blob, which now has a minimum required version of 12.0. The settingsAZURE_EMULATED_MODE,AZURE_ENDPOINT_SUFFIX, andAZURE_CUSTOM_CONNECTION_STRINGare now ignored. (#784,#805)Add support for user delegation keys (#1063)Google CloudBreaking: The minimum required version ofgoogle-cloud-storageis now 1.27.0 (#994)Breaking: Switch URL signing version from v2 to v4 (#994)Deprecated: Support forGS_CACHE_CONTROLwill be removed in 1.13. Please set thecache_controlparameter ofGS_OBJECT_PARAMETERSinstead. (#970)AddGS_OBJECT_PARAMETERSand overridableGoogleCloudStorage.get_object_parametersto customize blob parameters for all blobs and per-blob respectively. (#970)Catch theNotFoundexception raised when deleting a non-existent blob, this matches Django and other backends (#998,#999)Fix signing URLs with custom endpoints (#994)DropboxValidatewrite_modeparam (#1020)1.11.1 (2020-12-23)S3Revert fix forValueError: I/O operation on closed filewhen callingcollectstaticand
introduceS3StaticStorageandS3ManifestStaticStoragefor use asSTATICFILES_STORAGEtargets (#968)1.11 (2020-12-16)GeneralTest against Python 3.9 (#964)S3FixValueError: I/O operation on closed filewhen callingcollectstatic(#382,#955)CalculateS3Boto3StorageFile.buffer_size(via settingAWS_S3_FILE_BUFFER_SIZE)
at run-time rather than import-time. (#930)Fix writingbytearraycontent (#958,#965)Google CloudAdd settingGS_QUERYSTRING_AUTHto avoid signing URLs. This is useful for buckets with a
policy of Uniform public read (#952)AzureAddAZURE_OBJECT_PARAMETERSand overridableAzureStorage.get_object_parametersto customizeContentSettingsparameters for all keys and per-key respectively. (#898)1.10.1 (2020-09-13)S3RestoreAWS_DEFAULT_ACLhandling. This setting is ignored ifACLis set inAWS_S3_OBJECT_PARAMETERS(#934)SFTPFix usingSFTP_STORAGE_HOST(#926)1.10 (2020-08-30)GeneralBreaking: Removed support for end-of-life Python 2.7 and 3.4 (#709)Breaking: Removed support for end-of-life Django 1.11 (#891)Add support for Django 3.1 (#916)Introduce a newBaseStorageclass with aget_default_settingsmethod and use
it inS3Boto3Storage,AzureStorage,GoogleCloudStorage, andSFTPStorage. These backends
now calculate their settings when instantiated, not imported. (#524,#852)S3Breaking: Automatic bucket creation has been removed. Doing so encourages using overly broad credentials.
As a result, support for the correspondingAWS_BUCKET_ACLandAWS_AUTO_CREATE_BUCKETsettings have been removed. (#636)Breaking: Support for the undocumented settingAWS_PRELOAD_METADATAhas been removed (#636)Breaking: The constructor kwargaclis no longer accepted. Instead, use theACLkey in settingAWS_S3_OBJECT_PARAMETERS(#636)Breaking: The constructor kwargbucketis no longer accepted. Instead, usebucket_nameor theAWS_STORAGE_BUCKET_NAMEsetting (#636)Breaking: Support for settingAWS_REDUCED_REDUNDANCYhas been removed. Replace withStorageClass=REDUCED_REDUNDANCYinAWS_S3_OBJECT_PARAMETERS(#636)Breaking: Support for settingAWS_S3_ENCRYPTIONhas been removed. Replace withServerSideEncryption=AES256inAWS_S3_OBJECT_PARAMETERS(#636)Breaking: Support for settingAWS_DEFAULT_ACLhas been removed. Replace withACLinAWS_S3_OBJECT_PARAMETERS(#636)Addhttp_methodparameter to.urlmethod (#854)Add support for signing Cloudfront URLs to the.urlmethod. You must setAWS_CLOUDFRONT_KEY,AWS_CLOUDFRONT_KEY_IDand install eithercryptographyorrsa(#456,#587). See the docs for more info.
URLs will only be signed ifAWS_QUERYSTRING_AUTHis set toTrue(#885)Google CloudBreaking: Automatic bucket creation has been removed. Doing so encourages using overly broad credentials.
As a result, support for the correspondingGS_AUTO_CREATE_BUCKETandGS_AUTO_CREATE_ACLsettings have been removed. (#894)DropboxAddDROPBOX_WRITE_MODEsetting to control e.g. overwriting behavior. Check the docs
for more info (#873,#138)SFTPRemove exception swallowing during ssh connection (#835,#838)FTPAddFTP_STORAGE_ENCODINGsetting to set the filesystem encoding  (#803)Support multiple nested paths for files (#886)1.9.1 (2020-02-03)S3Fix reading files withS3Boto3StorageFile(#831,#833)1.9 (2020-02-02)GeneralBreaking: The long deprecated S3 backend based onbotohas been removed. (#825)Test against and support Python 3.8 (#810)S3Deprecated: Automatic bucket creation will be removed in version 1.10 (#826)Deprecated: The undocumentedAWS_PRELOAD_METADATAand associated functionality will
be removed in version 1.10 (#829)Deprecated: Support forAWS_REDUCED_REDUNDANCYwill be removed in version 1.10
Replace withStorageClass=REDUCED_REDUNDANCYinAWS_S3_OBJECT_PARAMETERS(#829)Deprecated: Support forAWS_S3_ENCRYPTIONwill be removed in version 1.10 (#829)
Replace withServerSideEncryption=AES256inAWS_S3_OBJECT_PARAMETERSA customContentEncodingis no longer overwritten automatically (note that specifying
one will disable automaticgzip) (#391,#828).AddS3Boto3Storage.get_object_parameters, an overridable method for customizing
upload parameters on a per-object basis (#819,#828)Opening and closing a file inwmode without writing anything will now create an empty file
in S3, this mimics the builtinopenand Django’s ownFileSystemStorage(#435,#816)Fix reading a file in text mode (#404,#827)Google CloudDeprecated: Automatic bucket creation will be removed in version 1.10 (#826)DropboxFix crash onDropBoxStorage.listdir(#762)Settings can now additionally be specified at the class level to ease subclassing (#745)LibcloudAdd support for Backblaze B2 toLibCloudStorage.url(#807)FTPFix creating multiple intermediary directories on Windows (#823,#824)1.8 (2019-11-20)GeneralAdd support for Django 3.0 (#759)Update license identifier to unambiguousBSD-3-ClauseS3Include error message raised when missing library is imported (#776,#793)GoogleBreakingThe minimum supported version ofgoogle-cloud-storageis now1.15.0which enables…Add settingGS_CUSTOM_ENDPOINTto allow usage of custom domains (#775,#648)AzureFix extra installation by pinning version to < 12 (#785)Add support for settingAZURE_CACHE_CONTROLheader (#780,#674)1.7.2 (2019-09-10)S3Avoid misleadingAWS_DEFAULT_ACLwarning for insecuredefault_aclwhen
overridden as a class variable (#591)Propagate file deletion to cache whenpreload_metadataisTrue,
(not the default) (#743,#749)Fix exception raised on closed file (common if usingManifestFilesMixinorcollectstatic. (#382,#754)AzurePare down the required packages inextra_requireswhen installing theazureextra to onlyazure-storage-blob(#680,#684)Fix compatibility withgenerate_blob_shared_access_signatureupdated signature (#705,#723)Fetching a file now uses the configured timeout rather than hardcoding one (#727)Add support for configuring all blobservice options:AZURE_ENDPOINT_SUFFIX,AZURE_CUSTOM_DOMAIN,AZURE_CONNECTION_STRING,AZURE_TOKEN_CREDENTIAL.
See the docs for more info. Huge thanks once again to @nitely. (#750)Fix filename handling to not strip special characters (#609,#752)Google CloudSet the file acl in the same call that uploads it (#698)Reduce the number of queries and required permissions whenGS_AUTO_CREATE_BUCKETisFalse(the default) (#412,#718)Set thepredefined_aclwhen creating aGoogleCloudFileusing.write(#640,#756)AddGS_BLOB_CHUNK_SIZEsetting to enable efficient uploading of large files (#757)DropboxComplete migration to v2 api with file fetching and metadata fixes (#724)AddDROPBOX_TIMEOUTto configure client timeout defaulting to 100 seconds
to match the underlying sdk. (#419,#747)SFTPFix reopening a file (#746)1.7.1 (2018-09-06)Fix off-by-1 error inget_available_namewheneverfile_overwriteoroverwrite_filesisTrue(#588,#589)ChangeS3Boto3Storage.listdir()to uselist_objectsinstead oflist_objects_v2to restore
compatibility with services implementing the S3 protocol that do not yet support the new method (#586,#590)1.7 (2018-09-03)SecurityTheS3BotoStorageandS3Boto3Storagebackends have an insecure
default ACL ofpublic-read. It is recommended that all current users audit their bucket
permissions.  Support has been added for settingAWS_DEFAULT_ACL = NoneandAWS_BUCKET_ACL = Nonewhich causes all created files to inherit the bucket’s ACL (and created buckets to inherit the
Amazon account’s default ACL). This will become the default in version 1.10 (forS3Boto3Storageonly
sinceS3BotoStoragewill be removed in version 1.9, see below). Additionally, a warning is now
raised ifAWS_DEFAULT_ACLorAWS_BUCKET_ACLis not explicitly set. (#381,#535,#579)BreakingTheAzureStoragebackend and documentation has been completely rewritten. It now
depends onazureandazure-storage-bloband isvastlyimproved. Big thanks to @nitely and all
other contributors along the way (#565)The.url()method ofGoogleCloudStoragehas been completely reworked. Many use
cases should require no changes and will experience a massive speedup. The.url()method no longer hits
the network for public urls and generates signed urls (with a default of 1-day expiration, configurable
viaGS_EXPIRATION) for non-public buckets.  Check out the docs for more information. (#570)Various backends will now raiseImproperlyConfiguredat runtime if their
location (GS_LOCATION,AWS_LOCATION) begins with a leading/rather than silently
stripping it.  Verify yours does not. (#520)The long deprecatedGSBotoStoragebackend is removed. (#518)DeprecationThe insecure default ofpublic-readforAWS_DEFAULT_ACLandAWS_BUCKET_ACLinS3Boto3Storagewill change to inherit the bucket’s setting in version 1.10 (#579)The legacyS3BotoBackendis deprecated and will be removed in version 1.9.
It is strongly recommended to move to theS3Boto3Storagebackend for performance,
stability and bugfix reasons. See theboto migration docsfor step-by-step guidelines. (#578,#584)The long aliased arguments toS3Boto3Storageofaclandbucketare
deprecated in favor ofbucket_nameanddefault_acl(#516)The minimum required version ofboto3will be increasing to1.4.4in
the next major version ofdjango-storages. (#583)FeaturesAdd support for a file to inherit its bucket’s ACL by settingAWS_DEFAULT_ACL = None(#535)AddGS_CACHE_CONTROLsetting forGoogleCloudStoragebackend (#411,#505)Add documentation around using django-storages with Digital Ocean Spaces (#521)Add support for Django 2.1 and Python 3.7 (#530)MakeS3Boto3Storagepickleable (#551)Add automatic reconnection toSFTPStorage(#563,#564)Unconditionally set the security token in the boto backends (b13efd)Improve efficiency of.listdironS3Boto3Storage(#352)AddAWS_S3_VERIFYto support custom certificates and disabling certificate verification
toS3Boto3Storage(#486,#580)AddAWS_S3_PROXIESsetting toS3Boto3Storage(#583)Add a snazzy new logo. Big thanks to @reallinfoBugfixesReset file read offset before passing toGoogleCloudStorageandAzureStorage(#481,#581,#582)Fix various issues with multipart uploads in the S3 backends
(#169,#160,#364,#449,#504,#506,#546)FixS3Boto3Storageto stream down large files (also disallowr+wmode) (#383,#548)FixSFTPStorageFileto align with the coreFileabstraction (#487,#568)CatchIOErrorinSFTPStorage.delete(#568)AzureStorage,GoogleCloudStorage,S3Boto3StorageandS3BotoStoragenow
respectmax_lengthwhenfile_overwrite = True(#513,#554)The S3 backends now consistently usecompresslevel=9(the Python stdlib default)
for gzipped content (#572,#576)Improve error message ofS3Boto3Storageduring an unexpected exception when automatically
creating a bucket (#574,#577)1.6.6 (2018-03-26)You can now specify the backend you are using to install the necessary dependencies usingextra_requires. For examplepip installdjango-storages[boto3](#417)Add additional content-type detection fallbacks (#406,#407)AddGS_LOCATIONsetting to specify subdirectory forGoogleCloudStorage(#355)Add support for uploading large files toDropBoxStorage, fix saving files (#379,#378,#301)Drop support for Django 1.8 and Django 1.10 (and hence Python 3.3) (#438)Implementget_created_timeforGoogleCloudStorage(#464)1.6.5 (2017-08-01)Fix Django 1.11 regression with gzipped content being saved twice
resulting in empty files (#367,#371,#373)Fix themtimewhen gzipping content onS3Boto3Storage(#374)1.6.4 (2017-07-27)Files uploaded withGoogleCloudStoragewill now set their appropriate mimetype (#320)FixDropBoxStorage.urlto work. (#357)FixS3Boto3StoragewhenAWS_PRELOAD_METADATA = True(#366)FixS3Boto3Storageuploading file-like objects without names (#195,#368)S3Boto3Storageis now threadsafe - a separate session is created on a
per-thread basis (#268,#358)1.6.3 (2017-06-23)Revert defaultAWS_S3_SIGNATURE_VERSIONto V2 to restore backwards
compatibility inS3Boto3. It’s recommended that all new projects set
this to be's3v4'. (#344)1.6.2 (2017-06-22)Fix regression insafe_join()to handle a trailing slash in an
intermediate path. (#341)Fix regression ings.GSBotoStoragegetting an unexpected kwarg.
(#342)1.6.1 (2017-06-22)Drop support for Django 1.9 (e89db45)Fix regression insafe_join()to allow joining a base path with an empty
string. (#336)1.6 (2017-06-21)Breaking:Remove backends deprecated in v1.5.1 (#280)Breaking:DropBoxStoragehas been upgrade to support v2 of the API, v1 will be shut off at the
end of the month - upgrading is recommended (#273)Breaking:TheSFTPStoragebackend now checks for the existence of the fallback~/.ssh/known_hostsbefore attempting to load it.  If you had previously been passing in a path to a non-existent file it will no longer
attempt to load the fallback. (#118,#325)Breaking:The default version value forAWS_S3_SIGNATURE_VERSIONis now's3v4'. No changes should
be required (#335)Deprecation:The undocumentedgs.GSBotoStoragebackend. See the newgcloud.GoogleCloudStorageorapache_libcloud.LibCloudStoragebackends instead. (#236)Add a new backend,gcloud.GoogleCloudStoragebased on thegoogle-cloudbindings. (#236)Pass in the location constraint when auto creating a bucket inS3Boto3Storage(#257,#258)Add support for readingAWS_SESSION_TOKENandAWS_SECURITY_TOKENfrom the environment
toS3Boto3StorageandS3BotoStorage. (#283)Fix Boto3 non-ascii filenames on Python 2.7 (#216,#217)Fixcollectstatictimezone handling in and addget_modified_timetoS3BotoStorage(#290)Add support for Django 1.11 (#295)Addprojectkeyword support to GCS inLibCloudStoragebackend (#269)Files that have a guessable encoding (e.g. gzip or compress) will be uploaded with that Content-Encoding in
thes3boto3backend (#263,#264)The Dropbox backend now properly translates backslashes in Windows paths into forward slashes (e52a127)The S3 backends now permit colons in the keys (#248,#322)1.5.2 (2017-01-13)Actually useSFTP_STORAGE_HOSTinSFTPStoragebackend (#204)FixS3Boto3Storageto avoid race conditions in a multi-threaded WSGI environment (#238)Fix trying to localize a naive datetime whensettings.USE_TZisFalseinS3Boto3Storage.modified_time.
(#235,#234)Fix automatic bucket creation inS3Boto3StoragewhenAWS_AUTO_CREATE_BUCKETisTrue(#196)Improve the documentation for the S3 backends1.5.1 (2016-09-13)Breaking:Drop support for Django 1.7 (#185)Deprecation:hashpath, image, overwrite, mogile, symlinkorcopy, database, mogile, couchdb.
See (#202) to discuss maintenance going forwardUse a fixedmtimeargument forGzipFileinS3BotoStorageandS3Boto3Storageto ensure
a stable output for gzipped filesUse.putfileobjinstead of.putinS3Boto3Storageto use the transfer manager,
allowing files greater than 5GB to be put on S3 (#194,#201)UpdateS3Boto3Storagefor Django 1.10 (#181) (get_modified_timeandget_accessed_time)Fix bad kwarg name inS3Boto3StoragewhenAWS_PRELOAD_METADATAisTrue(#189,#190)1.5.0 (2016-08-02)Add new backendS3Boto3Storage(#179)Add astrictoption toutils.setting(#176)Tests, documentation, fixing.closeforSFTPStorage(#177)Tests, documentation, add.readlinesforFTPStorage(#175)Tests and documentation forDropBoxStorage(#174)FixMANIFEST.into not ship.pycfiles. (#145)Enable CI testing of Python 3.5 and fix test failure from api change (#171)1.4.1 (2016-04-07)Files that have a guessable encoding (e.g. gzip or compress) will be uploaded with that Content-Encoding
in thes3botobackend. Compressable types such asapplication/javascriptwill still be gzipped.
PR#122FixDropBoxStorage.existscheck and addDropBoxStorage.url(#127)AddGS_HOSTsetting (with a default ofGSConnection.DefaultHost) to fixGSBotoStorage.
(#124,#125)1.4 (2016-02-07)This package is now released on PyPI asdjango-storages. Please update your requirements files todjango-storages==1.4.1.3.2 (2016-01-26)Fix memory leak from not closing underlying temp file ins3botobackend (#106)Allow easily specifying a custom expiry time when generating a url forS3BotoStorage(#96)Check for bucket existence when the empty path (‘’) is passed tostorage.existsinS3BotoStorage-
this prevents a crash when runningcollectstatic-con Django 1.9.1 (#112) fixed in#1161.3.1 (2016-01-12)A few Azure Storage fixes [pass the content-type to Azure, handle chunked content, fixurl] (#45)Add support for a Dropbox (dropbox) storage backendVarious fixes to theapache_libcloudbackend [return the number of bytes asked for by.read, make.namenon-private, don’t
initialize to an emptyBytesIOobject] (#55)Fix multi-part uploads ins3botobackend not respectingAWS_S3_ENCRYPTION(#94)Automatically gzip svg files (#100)1.3 (2015-08-14)Breaking:Drop Support for Django 1.5 and Python 2.6Breaking:Remove previously deprecated mongodb backendBreaking:Remove previously deprecatedparse_ts_extendedfrom s3boto storageAdd support for Django 1.8+ (#36)AddAWS_S3_PROXY_HOSTandAWS_S3_PROXY_PORTsettings for s3boto backend (#41)Fix Python3K compat issue in apache_libcloud (#52)Fix Google Storage backend not respectingGS_IS_GZIPPEDsetting (#51,#60)Rename FTP_nameattribute tonamewhich is what the DjangoFileapi is expecting (#70)PutStorageMixinfirst in inheritance to maintain backwards compat with older versions of Django (#63)1.2.3 (2015-03-14)Variety of FTP backend fixes (fixexists, addmodified_time, remove call to non-existent function) (#26)Apparently the year changed to 20151.2.2 (2015-01-28)Remove always show all warnings filter (#21)Release package as a wheelAvoid resource warning during install (#20)MadeS3BotoStoragedeconstructible (previously onlyS3BotoStorageFilewas deconstructible) (#19)1.2.1 (2014-12-31)Deprecation:Issue warning aboutparse_ts_extendedDeprecation:mongodb backend - django-mongodb-engine now ships its own storage backendFixstorage.modified_timecrashing on new files whenAWS_PRELOAD_METADATA=True(#11,#12,#14)1.2 (2014-12-14)Breaking:Remove legacy S3 storage (#1)Breaking:Remove mosso files backend (#2)Add text/javascript mimetype to S3BotoStorage gzip allowed defaultsAdd support for Django 1.7 migrations in S3BotoStorage and ApacheLibCloudStorage (#5,#8)Python3K (3.3+) now available for S3Boto backend (#4)NOTE: Version 1.1.9 is the first release of django-storages after the fork.
It represents the current (2014-12-08) state of the original django-storages in
master with no additional changes. This is the first release of the code base
since March 2013.1.1.9 (2014-12-08)Fix syntax for Python3 with pull-request#91Support pushing content type from File object to GridFS with pull-request#90Support passing a region to the libcloud driver with pull-request#86Handle trailing slash paths fixes#188fixed by pull-request#85Use a SpooledTemporaryFile to conserve memory in S3BotoFile pull-request#69Guess content-type for S3BotoStorageFile the same way that _save() in S3BotoStorage doesPass headers and response_headers through from url to generate_url in S3BotoStorage pull-request#65Added AWS_S3_HOST, AWS_S3_PORT and AWS_S3_USE_SSL settings to specify host, port and is_secure in pull-request#66Everything Below Here Was Previously Released on PyPI under django-storages1.1.8 (2013-03-31)Fixes#156regarding date parsing, ValueError when running collectstaticProper handling of boto dev version parsingMade SFTP URLs accessible, now uses settings.MEDIA_URL instead of sftp://1.1.7 (2013-03-20)Listing of huge buckets on S3 is now prevented by using the prefix argument to boto’s list() methodInitial support for Windows Azure StorageSwitched to useing boto’s parse_ts date parser getting last modified info when using S3boto backendFixed key handling in S3boto and Google Storage backendsAccount for lack of multipart upload in Google Storage backendFixed seek() issue when using AWS_IS_GZIPPED by darkness51 with pull-request#50Improvements to S3BotoStorage and GSBotoStorage1.1.6 (2013-01-06)Merged many changes from Jannis Leidel (mostly regarding gzipping)Fixed tests by Ian LewisAdded support for Google Cloud Storage backend by Jannis LeidelUpdated license file by Dan Loewenherz, fixes#133with pull-request#44Set Content-Type header for use in upload_part_from_file by Gerardo CurielPass the rewind parameter to Boto’s set_contents_from_file method by Jannis Leidel with pull-request#45Fix for FTPStorageFile close() method by Mathieu Comandon with pull-request#43Minor refactoring by Oktay Sancak with pull-request#48Ungzip on download based on Content-Encoding by Gavin Wahl with pull-request#46Add support for S3 server-side encryption by Tobias McNulty with pull-request#17Add an optional setting to the boto storage to produce protocol-relative URLs, fixes#1051.1.5 (2012-07-18)Merged pull request#36from freakboy3742 Keith-Magee, improvements to Apache Libcloud backend and docsMerged pull request#35from atodorov, allows more granular S3 access settingsAdd support for SSL in Rackspace Cloudfiles backendFixed the listdir() method in s3boto backend, fixes#57Added base url tests for safe_join in s3boto backendMerged pull request#20from alanjds, fixed SuspiciousOperation warning if AWS_LOCATION ends with ‘/’Added FILE_BUFFER_SIZE setting to s3boto backendMerged pull request#30from pendletongp, resolves#108,#109and#110Updated the modified_time() method so that it doesn’t require dateutil. fixes#111Merged pull request#16from chamal, adds Apache Libcloud backendWhen preloading the S3 metadata make sure we reset the files key during saving to prevent stale metadataMerged pull request#24from tobias.mcnulty, fixes bug where s3boto backend returns modified_time in wrong time zoneFixed HashPathStorage.location to no longer use settings.MEDIA_ROOTRemove download_url from setup file so PyPI dist is used1.1.4 (2012-01-06)Added PendingDeprecationWarning for mosso backendMerged pull request#13from marcoala, addsSFTP_KNOWN_HOST_FILEsetting to SFTP storage backendMerged pull request#12from ryankask, fixes HashPathStorage tests that delete remote mediaMerged pull request#10from key, adds support for django-mongodb-engine 0.4.0 or later, fixes GridFS file deletion bugFixed S3BotoStorage performance problem calling modified_time()Added deprecation warning for s3 backend, refs#40Fixed CLOUDFILES_CONNECTION_KWARGS import error, fixes#78Switched to sphinx documentation, set official docs up onhttps://django-storages.readthedocs.io/HashPathStorage uses self.exists now, fixes#831.1.3 (2011-08-15)Created this lovely change logFixed#89: broken StringIO import in CloudFiles backendMergedpull request #5: HashPathStorage path bug