Django custom storage for Thumbor backend.
A Django custom storage for Thumbor backend.
This app provide 2 classes ThumborStorage and ThumborMigrationStorage. The last one is a storage you can use for Imagefield initialy using a FileSystemStorage you want to migrate to Thumbor without batch-moving all of them. That way, Django continues to serve them from the file system until you change the image on that field.
pip install django-thumborstorage
Add django_thumborstorage in your INSTALLED_APPS.
And set the following:
THUMBOR_SERVER = 'http://localhost:8888' THUMBOR_SECURITY_KEY = 'MY_SECURE_KEY' # This may be a different host than THUMBOR_SERVER # only reachable by your Django server. THUMBOR_RW_SERVER = 'http://localhost:8888'
Just set the storage parameter in the ImageField you want to manage with Thumbor:
from django_thumborstorage.storages import ThumborStorage class Stuff(models.Model): def upload_path(instance, filename): return 'stuffs/%s' % filename photo = models.ImageField(upload_to=upload_path, storage=ThumborStorage(), height_field='photo_height', width_field='photo_width') photo_height = models.IntegerField(blank=True, null=True) photo_width = models.IntegerField(blank=True, null=True)
In the code
You can get the Thumbor uuid from the <ImageField> instance using:
This is useful to generate_url() with Django-thumbor when original files are stored on Thumbor. Thus, you can pass the key as url parameter.
- Drop support for Django < 1.11 and Python 3.4.
- Remove mock from dependencies.
- Fix readonly_to_rw_url() to manage suffix in the urls.
- Handle status code of the Thumbor server response when posting an image.
- Added experimental Python 3.4 support (Thanks to Charlie 123.)
- Fixed broken support for Django < 1.7 (Thanks to Rizziepit.)
- Added unicode support in file names (Thanks to Rizziepit.)
- Add storages.readonly_to_rw_url(), a function to convert a read-only thumbor url in a rw url.
- Use THUMBOR_SERVER to generate the original file url.
- THUMBOR_SERVER and THUMBOR_SECURITY_KEY are required in settings.
- Add ThumborStorage.key(name) to retrieve the Thumbor uuid from the name.
- THUMBOR_WRITABLE_SERVER setting is replaced by THUMBOR_RW_SERVER since it is now used to retrieve the original file.