- You can now specify the backend you are using to install the necessary dependencies using
extra_requires
. For examplepip install django-storages[boto3]
(#417) - Add additional content-type detection fallbacks (#406, #407)
- Add
GS_LOCATION
setting to specify subdirectory forGoogleCloudStorage
(#355) - Add support for uploading large files to
DropBoxStorage
, fix saving files (#379, #378, #301) - Drop support for Django 1.8 and Django 1.10 (and hence Python 3.3) (#438)
- Implement
get_created_time
forGoogleCloudStorage
(#464)
- Fix Django 1.11 regression with gzipped content being saved twice resulting in empty files (#367, #371, #373)
- Fix the
mtime
when gzipping content onS3Boto3Storage
(#374)
- Files uploaded with
GoogleCloudStorage
will now set their appropriate mimetype (#320) - Fix
DropBoxStorage.url
to work. (#357) - Fix
S3Boto3Storage
whenAWS_PRELOAD_METADATA = True
(#366) - Fix
S3Boto3Storage
uploading file-like objects without names (#195, #368) S3Boto3Storage
is now threadsafe - a separate session is created on a per-thread basis (#268, #358)
- Revert default
AWS_S3_SIGNATURE_VERSION
to V2 to restore backwards compatability inS3Boto3
. It's recommended that all new projects set this to be's3v4'
. (#344)
- Fix regression in
safe_join()
to handle a trailing slash in an intermediate path. (#341) - Fix regression in
gs.GSBotoStorage
getting an unexpected kwarg. (#342)
- Drop support for Django 1.9 (e89db45)
- Fix regression in
safe_join()
to allow joining a base path with an empty string. (#336)
- Breaking: Remove backends deprecated in v1.5.1 (#280)
- Breaking:
DropBoxStorage
has been upgrade to support v2 of the API, v1 will be shut off at the end of the month - upgrading is recommended (#273) - Breaking: The
SFTPStorage
backend now checks for the existence of the fallback~/.ssh/known_hosts
before 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 for
AWS_S3_SIGNATURE_VERSION
is now's3v4'
. No changes should be required (#335) - Deprecation: The undocumented
gs.GSBotoStorage
backend. See the newgcloud.GoogleCloudStorage
orapache_libcloud.LibCloudStorage
backends instead. (#236) - Add a new backend,
gcloud.GoogleCloudStorage
based on thegoogle-cloud
bindings. (#236) - Pass in the location constraint when auto creating a bucket in
S3Boto3Storage
(#257, #258) - Add support for reading
AWS_SESSION_TOKEN
andAWS_SECURITY_TOKEN
from the environment toS3Boto3Storage
andS3BotoStorage
. (#283) - Fix Boto3 non-ascii filenames on Python 2.7 (#216, #217)
- Fix
collectstatic
timezone handling in and addget_modified_time
toS3BotoStorage
(#290) - Add support for Django 1.11 (#295)
- Add
project
keyword support to GCS inLibCloudStorage
backend (#269) - Files that have a guessable encoding (e.g. gzip or compress) will be uploaded with that Content-Encoding in
the
s3boto3
backend (#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)
- Actually use
SFTP_STORAGE_HOST
inSFTPStorage
backend (#204) - Fix
S3Boto3Storage
to avoid race conditions in a multi-threaded WSGI environment (#238) - Fix trying to localize a naive datetime when
settings.USE_TZ
isFalse
inS3Boto3Storage.modified_time
. (#235, #234) - Fix automatic bucket creation in
S3Boto3Storage
whenAWS_AUTO_CREATE_BUCKET
isTrue
(#196) - Improve the documentation for the S3 backends
- Breaking: Drop support for Django 1.7 (#185)
- Deprecation: hashpath, image, overwrite, mogile, symlinkorcopy, database, mogile, couchdb. See (#202) to discuss maintenance going forward
- Use a fixed
mtime
argument forGzipFile
inS3BotoStorage
andS3Boto3Storage
to ensure a stable output for gzipped files - Use
.putfileobj
instead of.put
inS3Boto3Storage
to use the transfer manager, allowing files greater than 5GB to be put on S3 (#194 , #201) - Update
S3Boto3Storage
for Django 1.10 (#181) (get_modified_time
andget_accessed_time
) - Fix bad kwarg name in
S3Boto3Storage
when AWS_PRELOAD_METADATA is True (#189, #190)
- Add new backend
S3Boto3Storage
(#179) - Add a strict option to utils.setting (#176)
- Tests, documentation, fixing
.close
forSFTPStorage
(#177) - Tests, documentation, add .readlines for
FTPStorage
(#175) - Tests and documentation for
DropBoxStorage
(#174) - Fix
MANIFEST.in
to not ship.pyc
files. (#145) - Enable CI testing of Python 3.5 and fix test failure from api change (#171)
- Files that have a guessable encoding (e.g. gzip or compress) will be uploaded with that Content-Encoding
in the
s3boto
backend. Compressable types such asapplication/javascript
will still be gzipped. PR #122 - Fix
DropBoxStorage.exists
check and addDropBoxStorage.url
(#127) - Add
GS_HOST
setting (with a default ofGSConnection.DefaultHost
) to fixGSBotoStorage
. (#124, #125)
- This package is now released on PyPI as django-storages. Please update your requirements files to django-storages==1.4.
- Fix memory leak from not closing underlying temp file in
s3boto
backend (#106) - Allow easily specifying a custom expiry time when generating a url for
S3BotoStorage
(#96) - Check for bucket existence when the empty path ('') is passed to
storage.exists
inS3BotoStorage
- this prevents a crash when runningcollectstatic -c
on Django 1.9.1 (#112) fixed in #116
- A few Azure Storage fixes [pass the content-type to Azure, handle chunked content, fix
url
] (#45) - Add support for a Dropbox (
dropbox
) storage backend - Various fixes to the
apache_libcloud
backend [return the number of bytes asked for by.read
, make.name
non-private, don't initialize to an emptyBytesIO
object] (#55) - Fix multi-part uploads in
s3boto
backend not respectingAWS_S3_ENCRYPTION
(#94) - Automatically gzip svg files (#100)
- Breaking: Drop Support for Django 1.5 and Python 2.6
- Breaking: Remove previously deprecated mongodb backend
- Breaking: Remove previously deprecated
parse_ts_extended
from s3boto storage - Add support for Django 1.8+ (#36)
- Add
AWS_S3_PROXY_HOST
andAWS_S3_PROXY_PORT
settings for s3boto backend (#41) - Fix Python3K compat issue in apache_libcloud (#52)
- Fix Google Storage backend not respecting
GS_IS_GZIPPED
setting (#51, #60) - Rename FTP
_name
attribute toname
which is what the DjangoFile
api is expecting (#70) - Put
StorageMixin
first in inheritance to maintain backwards compat with older versions of Django (#63)
- Variety of FTP backend fixes (fix
exists
, addmodified_time
, remove call to non-existent function) (#26) - Apparently the year changed to 2015
- Remove always show all warnings filter (#21)
- Release package as a wheel
- Avoid resource warning during install (#20)
- Made
S3BotoStorage
deconstructible (previously onlyS3BotoStorageFile
was deconstructible) (#19)
- Deprecation: Issue warning about
parse_ts_extended
- Deprecation: mongodb backend - django-mongodb-engine now ships its own storage backend
- Fix
storage.modified_time
crashing on new files whenAWS_PRELOAD_METADATA=True
(#11, #12, #14)
- Breaking: Remove legacy S3 storage (#1)
- Breaking: Remove mosso files backend (#2)
- Add text/javascript mimetype to S3BotoStorage gzip allowed defaults
- Add 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.
- Fix syntax for Python3 with pull-request #91
- Support pushing content type from File object to GridFS with pull-request #90
- Support passing a region to the libcloud driver with pull-request #86
- Handle trailing slash paths fixes #188 fixed by pull-request #85
- Use a SpooledTemporaryFile to conserve memory in S3BotoFile pull-request #69
- Guess content-type for S3BotoStorageFile the same way that _save() in S3BotoStorage does
- Pass headers and response_headers through from url to generate_url in S3BotoStorage pull-request #65
- Added AWS_S3_HOST, AWS_S3_PORT and AWS_S3_USE_SSL settings to specify host, port and is_secure in pull-request #66
Everything Below Here Was Previously Released on PyPi under django-storages
- Fixes #156 regarding date parsing, ValueError when running collectstatic
- Proper handling of boto dev version parsing
- Made SFTP URLs accessible, now uses settings.MEDIA_URL instead of sftp://
- Listing of huge buckets on S3 is now prevented by using the prefix argument to boto's list() method
- Initial support for Windows Azure Storage
- Switched to useing boto's parse_ts date parser getting last modified info when using S3boto backend
- Fixed key handling in S3boto and Google Storage backends
- Account for lack of multipart upload in Google Storage backend
- Fixed seek() issue when using AWS_IS_GZIPPED by darkness51 with pull-request #50
- Improvements to S3BotoStorage and GSBotoStorage
- Merged many changes from Jannis Leidel (mostly regarding gzipping)
- Fixed tests by Ian Lewis
- Added support for Google Cloud Storage backend by Jannis Leidel
- Updated license file by Dan Loewenherz, fixes #133 with pull-request #44
- Set Content-Type header for use in upload_part_from_file by Gerardo Curiel
- Pass the rewind parameter to Boto's set_contents_from_file method by Jannis Leidel with pull-request #45
- Fix for FTPStorageFile close() method by Mathieu Comandon with pull-request #43
- Minor refactoring by Oktay Sancak with pull-request #48
- Ungzip on download based on Content-Encoding by Gavin Wahl with pull-request #46
- Add support for S3 server-side encryption by Tobias McNulty with pull-request #17
- Add an optional setting to the boto storage to produce protocol-relative URLs, fixes #105
- Merged pull request #36 from freakboy3742 Keith-Magee, improvements to Apache Libcloud backend and docs
- Merged pull request #35 from atodorov, allows more granular S3 access settings
- Add support for SSL in Rackspace Cloudfiles backend
- Fixed the listdir() method in s3boto backend, fixes #57
- Added base url tests for safe_join in s3boto backend
- Merged pull request #20 from alanjds, fixed SuspiciousOperation warning if AWS_LOCATION ends with '/'
- Added FILE_BUFFER_SIZE setting to s3boto backend
- Merged pull request #30 from pendletongp, resolves #108, #109 and #110
- Updated the modified_time() method so that it doesn't require dateutil. fixes #111
- Merged pull request #16 from chamal, adds Apache Libcloud backend
- When preloading the S3 metadata make sure we reset the files key during saving to prevent stale metadata
- Merged pull request #24 from tobias.mcnulty, fixes bug where s3boto backend returns modified_time in wrong time zone
- Fixed HashPathStorage.location to no longer use settings.MEDIA_ROOT
- Remove download_url from setup file so PyPI dist is used
- Added PendingDeprecationWarning for mosso backend
- Merged pull request #13 from marcoala, adds
SFTP_KNOWN_HOST_FILE
setting to SFTP storage backend - Merged pull request #12 from ryankask, fixes HashPathStorage tests that delete remote media
- Merged pull request #10 from key, adds support for django-mongodb-engine 0.4.0 or later, fixes GridFS file deletion bug
- Fixed S3BotoStorage performance problem calling modified_time()
- Added deprecation warning for s3 backend, refs #40
- Fixed CLOUDFILES_CONNECTION_KWARGS import error, fixes #78
- Switched to sphinx documentation, set official docs up on http://django-storages.rtfd.org/
- HashPathStorage uses self.exists now, fixes #83
- Created this lovely change log
- Fixed #89: broken StringIO import in CloudFiles backend
- Merged pull request #5: HashPathStorage path bug