Commit 65370564 authored by lanybass's avatar lanybass

fix url_relative_path error on windows

make upload path auto
fix pic save incomplete
fix 'thumb image return none error'
remove an extra 'return' token
fix dynamic gif thumb error
parent e5295fe6
...@@ -21,7 +21,6 @@ except ImportError: ...@@ -21,7 +21,6 @@ except ImportError:
Image = None Image = None
ImageOps = None ImageOps = None
__all__ = ['FileUploadInput', 'FileUploadField', __all__ = ['FileUploadInput', 'FileUploadField',
'ImageUploadInput', 'ImageUploadField', 'ImageUploadInput', 'ImageUploadField',
'namegen_filename', 'thumbgen_filename'] 'namegen_filename', 'thumbgen_filename']
...@@ -103,8 +102,6 @@ class ImageUploadInput(object): ...@@ -103,8 +102,6 @@ class ImageUploadInput(object):
if field.url_relative_path: if field.url_relative_path:
filename = urljoin(field.url_relative_path, filename) filename = urljoin(field.url_relative_path, filename)
return url_for(field.endpoint, filename)
return url_for(field.endpoint, filename=field.data) return url_for(field.endpoint, filename=field.data)
...@@ -229,6 +226,10 @@ class FileUploadField(fields.TextField): ...@@ -229,6 +226,10 @@ class FileUploadField(fields.TextField):
def _save_file(self, data, filename): def _save_file(self, data, filename):
path = self._get_path(filename) path = self._get_path(filename)
if not op.exists(op.dirname(path)):
print 1
os.makedirs(os.path.dirname(path), 0666)
data.save(path) data.save(path)
return filename return filename
...@@ -328,6 +329,7 @@ class ImageUploadField(FileUploadField): ...@@ -328,6 +329,7 @@ class ImageUploadField(FileUploadField):
self.thumbnail_size = thumbnail_size self.thumbnail_size = thumbnail_size
self.endpoint = endpoint self.endpoint = endpoint
self.image = None self.image = None
self.url_relative_path = url_relative_path
if not allowed_extensions: if not allowed_extensions:
allowed_extensions = ('gif', 'jpg', 'jpeg', 'png', 'tiff') allowed_extensions = ('gif', 'jpg', 'jpeg', 'png', 'tiff')
...@@ -362,14 +364,20 @@ class ImageUploadField(FileUploadField): ...@@ -362,14 +364,20 @@ class ImageUploadField(FileUploadField):
# Saving # Saving
def _save_file(self, data, filename): def _save_file(self, data, filename):
path = self._get_path(filename)
if not op.exists(op.dirname(path)):
print 2
os.makedirs(os.path.dirname(path), 0666)
if self.image and self.max_size: if self.image and self.max_size:
filename, format = self._get_save_format(filename, self.image) filename, format = self._get_save_format(filename, self.image)
self._save_image(self._resize(self.image, self.max_size), self._save_image(self._resize(self.image, self.max_size),
self._get_path(filename), path,
format) format)
else: else:
data.save(self._get_path(filename)) data.seek(0)
data.save(path)
self._save_thumbnail(data, filename) self._save_thumbnail(data, filename)
...@@ -389,11 +397,14 @@ class ImageUploadField(FileUploadField): ...@@ -389,11 +397,14 @@ class ImageUploadField(FileUploadField):
if force: if force:
return ImageOps.fit(self.image, (width, height), Image.ANTIALIAS) return ImageOps.fit(self.image, (width, height), Image.ANTIALIAS)
else: else:
return self.image.copy().thumbnail((width, height), Image.ANTIALIAS) thumb = self.image.copy()
thumb.thumbnail((width, height), Image.ANTIALIAS)
return thumb
return image return image
def _save_image(self, image, path, format='JPEG'): def _save_image(self, image, path, format='JPEG'):
image = image.convert('RGB')
with open(path, 'wb') as fp: with open(path, 'wb') as fp:
image.save(fp, format) image.save(fp, format)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment