Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
flask-admin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Python-Dev
flask-admin
Commits
ab501acb
Commit
ab501acb
authored
Aug 05, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Missing files.
parent
4742a1c2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
51 additions
and
14 deletions
+51
-14
upload.py
flask_admin/form/upload.py
+51
-14
copyleft.jpg
flask_admin/tests/data/copyleft.jpg
+0
-0
copyleft.tiff
flask_admin/tests/data/copyleft.tiff
+0
-0
No files found.
flask_admin/form/upload.py
View file @
ab501acb
...
@@ -194,7 +194,7 @@ class FileUploadField(fields.TextField):
...
@@ -194,7 +194,7 @@ class FileUploadField(fields.TextField):
self
.
_delete_file
(
field
)
self
.
_delete_file
(
field
)
filename
=
self
.
generate_name
(
obj
,
self
.
data
)
filename
=
self
.
generate_name
(
obj
,
self
.
data
)
self
.
_save_file
(
self
.
data
,
filename
)
filename
=
self
.
_save_file
(
self
.
data
,
filename
)
setattr
(
obj
,
name
,
filename
)
setattr
(
obj
,
name
,
filename
)
...
@@ -222,6 +222,8 @@ class FileUploadField(fields.TextField):
...
@@ -222,6 +222,8 @@ class FileUploadField(fields.TextField):
path
=
self
.
_get_path
(
filename
)
path
=
self
.
_get_path
(
filename
)
data
.
save
(
path
)
data
.
save
(
path
)
return
filename
class
ImageUploadField
(
FileUploadField
):
class
ImageUploadField
(
FileUploadField
):
"""
"""
...
@@ -233,10 +235,18 @@ class ImageUploadField(FileUploadField):
...
@@ -233,10 +235,18 @@ class ImageUploadField(FileUploadField):
"""
"""
widget
=
ImageUploadInput
()
widget
=
ImageUploadInput
()
keep_image_formats
=
(
'PNG'
,)
"""
If field detects that uploaded image is not in this list, it will save image
as PNG.
"""
def
__init__
(
self
,
label
=
None
,
validators
=
None
,
def
__init__
(
self
,
label
=
None
,
validators
=
None
,
base_path
=
None
,
relative_path
=
None
,
base_path
=
None
,
relative_path
=
None
,
namegen
=
None
,
allowed_extensions
=
None
,
namegen
=
None
,
allowed_extensions
=
None
,
thumbgen
=
None
,
thumbnail_size
=
None
,
endpoint
=
'static'
,
max_size
=
None
,
thumbgen
=
None
,
thumbnail_size
=
None
,
endpoint
=
'static'
,
**
kwargs
):
**
kwargs
):
"""
"""
Constructor.
Constructor.
...
@@ -268,6 +278,9 @@ class ImageUploadField(FileUploadField):
...
@@ -268,6 +278,9 @@ class ImageUploadField(FileUploadField):
:param allowed_extensions:
:param allowed_extensions:
List of allowed extensions. If not provided, will allow any file.
List of allowed extensions. If not provided, will allow any file.
:param max_size:
Tuple of (width, height, force) or None. If provided, Flask-Admin will
resize image to the desired size.
:param thumbgen:
:param thumbgen:
Thumbnail filename generation function. All thumbnails will be saved as JPEG files,
Thumbnail filename generation function. All thumbnails will be saved as JPEG files,
so there's no need to keep original file extension.
so there's no need to keep original file extension.
...
@@ -295,13 +308,14 @@ class ImageUploadField(FileUploadField):
...
@@ -295,13 +308,14 @@ class ImageUploadField(FileUploadField):
if
Image
is
None
:
if
Image
is
None
:
raise
Exception
(
'PIL library was not found'
)
raise
Exception
(
'PIL library was not found'
)
self
.
max_size
=
max_size
self
.
thumbnail_fn
=
thumbgen
or
thumbgen_filename
self
.
thumbnail_fn
=
thumbgen
or
thumbgen_filename
self
.
thumbnail_size
=
thumbnail_size
self
.
thumbnail_size
=
thumbnail_size
self
.
endpoint
=
endpoint
self
.
endpoint
=
endpoint
self
.
image
=
None
self
.
image
=
None
if
not
allowed_extensions
:
if
not
allowed_extensions
:
allowed_extensions
=
(
'gif'
,
'jpg'
,
'jpeg'
,
'png'
)
allowed_extensions
=
(
'gif'
,
'jpg'
,
'jpeg'
,
'png'
,
'tiff'
)
super
(
ImageUploadField
,
self
)
.
__init__
(
label
,
validators
,
super
(
ImageUploadField
,
self
)
.
__init__
(
label
,
validators
,
base_path
=
base_path
,
base_path
=
base_path
,
...
@@ -333,25 +347,48 @@ class ImageUploadField(FileUploadField):
...
@@ -333,25 +347,48 @@ class ImageUploadField(FileUploadField):
# Saving
# Saving
def
_save_file
(
self
,
data
,
filename
):
def
_save_file
(
self
,
data
,
filename
):
data
.
save
(
self
.
_get_path
(
filename
))
if
self
.
image
and
self
.
max_size
:
filename
,
format
=
self
.
_get_save_format
(
filename
,
self
.
image
)
self
.
_save_image
(
self
.
_resize
(
self
.
image
,
self
.
max_size
),
self
.
_get_path
(
filename
),
format
)
else
:
data
.
save
(
self
.
_get_path
(
filename
))
self
.
_save_thumbnail
(
data
,
filename
)
self
.
_save_thumbnail
(
data
,
filename
)
return
filename
def
_save_thumbnail
(
self
,
data
,
filename
):
def
_save_thumbnail
(
self
,
data
,
filename
):
if
self
.
image
and
self
.
thumbnail_size
:
if
self
.
image
and
self
.
thumbnail_size
:
thumb
=
self
.
image
path
=
self
.
_get_path
(
self
.
thumbnail_fn
(
filename
))
(
width
,
height
,
force
)
=
self
.
thumbnail_size
self
.
_save_image
(
self
.
_resize
(
self
.
image
,
self
.
thumbnail_size
),
path
)
if
self
.
image
.
size
[
0
]
>
width
or
self
.
image
.
size
[
1
]
>
height
:
def
_resize
(
self
,
image
,
size
):
if
force
:
(
width
,
height
,
force
)
=
size
thumb
=
ImageOps
.
fit
(
self
.
image
,
(
width
,
height
),
Image
.
ANTIALIAS
)
else
:
thumb
=
self
.
image
.
copy
()
.
thumbnail
((
width
,
height
),
Image
.
ANTIALIAS
)
path
=
self
.
_get_path
(
self
.
thumbnail_fn
(
filename
))
if
image
.
size
[
0
]
>
width
or
image
.
size
[
1
]
>
height
:
with
open
(
path
,
'wb'
)
as
fp
:
if
force
:
thumb
.
save
(
fp
,
'JPEG'
)
return
ImageOps
.
fit
(
self
.
image
,
(
width
,
height
),
Image
.
ANTIALIAS
)
else
:
return
self
.
image
.
copy
()
.
thumbnail
((
width
,
height
),
Image
.
ANTIALIAS
)
return
image
def
_save_image
(
self
,
image
,
path
,
format
=
'JPEG'
):
with
open
(
path
,
'wb'
)
as
fp
:
image
.
save
(
fp
,
format
)
def
_get_save_format
(
self
,
filename
,
image
):
if
not
image
.
format
in
self
.
keep_image_formats
:
name
,
ext
=
op
.
splitext
(
filename
)
filename
=
'
%
s.jpg'
%
name
return
filename
,
'JPEG'
return
filename
,
image
.
format
# Helpers
# Helpers
...
...
flask_admin/tests/data/copyleft.jpg
0 → 100644
View file @
ab501acb
13.2 KB
flask_admin/tests/data/copyleft.tiff
0 → 100644
View file @
ab501acb
7.74 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment