Skip to main content

Django custom storage for Thumbor backend.

Project description

https://coveralls.io/repos/github/Starou/django-thumborstorage/badge.svg?branch=master https://img.shields.io/pypi/v/django-thumborstorage.svg

A Django custom storage for Thumbor.

Provides 2 custom storages classes: ThumborStorage and ThumborMigrationStorage.

Use ThumborMigrationStorage on an Imagefield that started with a classic FileSystemStorage you want to upgrade to Thumbor without migrating your old media. That way, Django continues to serve them from the file system until the image is changed.

Install

pip install django-thumborstorage

Dependencies

Recommended:

Usage

settings.py

Add django_thumborstorage in INSTALLED_APPS.

And set the following with your values:

THUMBOR_SERVER = 'https://my.thumbor.server.com: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 = 'https://my.rw.thumbor.server.local:8888'

models.py

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:

my_stuff.photo.storage.key(my_stuff.photo.name)

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.

CHANGELOG

2.0.0

  • Add support for Django 3.2.

Possible breaking change

The leading / in the path of the file stored in the database has been removed due to a breaking change introduced un Django 3.2.11.

https://docs.djangoproject.com/en/4.0/releases/3.2.11/#cve-2021-45452-potential-directory-traversal-via-storage-save

That release handle seamlessly both pre-2.0.0 style (/image/…) and post-2.0.0 style paths (image/…) so there is not need to migrate your database to replace /image/… with image/….

1.13.0

  • Drop support for Django < 2.1 and Python 2.7, 3.4 and 3.5

  • Use GitHub actions for CI instead of Travis.

1.11.0

  • Drop support for Django < 1.11 and Python 3.4.

  • Remove mock from dependencies.

0.92.2

  • Fix readonly_to_rw_url() to manage suffix in the urls.

0.92.1

  • Handle status code of the Thumbor server response when posting an image.

0.92.0

  • 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.)

0.91.6

  • Add storages.readonly_to_rw_url(), a function to convert a read-only thumbor url in a rw url.

0.91.5

  • Use THUMBOR_SERVER to generate the original file url.

Backward imcompatibilities

  • THUMBOR_SERVER and THUMBOR_SECURITY_KEY are required in settings.

0.91.4

  • Add ThumborStorage.key(name) to retrieve the Thumbor uuid from the name.

0.91.3

Backward imcompatibilities

  • THUMBOR_WRITABLE_SERVER setting is replaced by THUMBOR_RW_SERVER since it is now used to retrieve the original file.

TODO

  • PUT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-thumborstorage-2.0.0.tar.gz (122.5 kB view details)

Uploaded Source

File details

Details for the file django-thumborstorage-2.0.0.tar.gz.

File metadata

  • Download URL: django-thumborstorage-2.0.0.tar.gz
  • Upload date:
  • Size: 122.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/60.5.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.10

File hashes

Hashes for django-thumborstorage-2.0.0.tar.gz
Algorithm Hash digest
SHA256 7a10ad19e4a15424167ccf6cd40787a3a63f2e5ae469d15e605d5a753a791841
MD5 8c19fe4dc54c8d1e54acfbbe9d279c92
BLAKE2b-256 8b6b8f1af83872c03cbd8fbb03f728c7a9b6e0ea1878a6877dca715749cc1d49

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page