Skip to content

Commit af31aef

Browse files
committed
Extending the FileBrowser backend to add support for ImageField
1 parent ca26f47 commit af31aef

File tree

1 file changed

+16
-4
lines changed
  • image_cropping/backends

1 file changed

+16
-4
lines changed

image_cropping/backends/fb.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
.. _filebrowser: https://github.com/sehmaschine/django-filebrowser
66
"""
77

8+
from django.db.models.fields.files import ImageFieldFile
9+
810
from filebrowser.base import FileObject
911
from filebrowser.fields import FileBrowseWidget
12+
from filebrowser.sites import site
1013

1114
from ..widgets import CropWidget, get_attrs
1215
from .base import ImageBackend
@@ -30,10 +33,19 @@ class FileBrowserBackend(ImageBackend):
3033
WIDGETS['FileBrowseField'] = CropFileBrowseWidget
3134

3235
def get_thumbnail_url(self, image_path, thumbnail_options):
33-
image = image_path if isinstance(
34-
image_path, FileObject) else FileObject(image_path)
35-
return image.version_generate(self.version_suffix, thumbnail_options).url
36+
image = self.get_imageobject(image_path)
37+
version_suffix = thumbnail_options.pop('version_suffix', self.version_suffix)
38+
return image.version_generate(version_suffix, thumbnail_options).url
3639

3740
def get_size(self, image):
38-
image = image if isinstance(image, FileObject) else FileObject(image)
41+
image = self.get_imageobject(image)
3942
return image.dimensions
43+
44+
def get_imageobject(self, image):
45+
if isinstance(image, FileObject):
46+
return image
47+
if isinstance(image, ImageFieldFile):
48+
image = image.path
49+
if image.startswith(site.storage.base_location):
50+
image = image[len(site.storage.base_location)+1:]
51+
return FileObject(image)

0 commit comments

Comments
 (0)