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
0c3e9406
Commit
0c3e9406
authored
Feb 15, 2014
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:mrjoes/flask-admin
parents
f8bd572a
52ef3ff2
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
36 additions
and
10 deletions
+36
-10
fileadmin.py
flask_admin/contrib/fileadmin.py
+8
-8
upload.py
flask_admin/form/upload.py
+5
-2
copyleft.gif
flask_admin/tests/data/copyleft.gif
+0
-0
copyleft.jpeg
flask_admin/tests/data/copyleft.jpeg
+0
-0
test_form_upload.py
flask_admin/tests/test_form_upload.py
+23
-0
No files found.
flask_admin/contrib/fileadmin.py
View file @
0c3e9406
...
@@ -290,7 +290,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -290,7 +290,7 @@ class FileAdmin(BaseView, ActionsMixin):
"""
"""
file_data
.
save
(
path
)
file_data
.
save
(
path
)
def
_get_dir_url
(
self
,
endpoint
,
path
,
**
kwargs
):
def
_get_dir_url
(
self
,
endpoint
,
path
=
None
,
**
kwargs
):
"""
"""
Return prettified URL
Return prettified URL
...
@@ -439,7 +439,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -439,7 +439,7 @@ class FileAdmin(BaseView, ActionsMixin):
base_path
,
directory
,
path
=
self
.
_normalize_path
(
path
)
base_path
,
directory
,
path
=
self
.
_normalize_path
(
path
)
if
not
self
.
is_accessible_path
(
path
):
if
not
self
.
is_accessible_path
(
path
):
flash
(
gettext
(
gettext
(
'Permission denied.'
)
))
flash
(
gettext
(
'Permission denied.'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
# Get directory listing
# Get directory listing
...
@@ -502,7 +502,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -502,7 +502,7 @@ class FileAdmin(BaseView, ActionsMixin):
return
redirect
(
self
.
_get_dir_url
(
'.index'
,
path
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
,
path
))
if
not
self
.
is_accessible_path
(
path
):
if
not
self
.
is_accessible_path
(
path
):
flash
(
gettext
(
gettext
(
'Permission denied.'
)
))
flash
(
gettext
(
'Permission denied.'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
form
=
self
.
upload_form
(
self
)
form
=
self
.
upload_form
(
self
)
...
@@ -555,7 +555,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -555,7 +555,7 @@ class FileAdmin(BaseView, ActionsMixin):
return
redirect
(
dir_url
)
return
redirect
(
dir_url
)
if
not
self
.
is_accessible_path
(
path
):
if
not
self
.
is_accessible_path
(
path
):
flash
(
gettext
(
gettext
(
'Permission denied.'
)
))
flash
(
gettext
(
'Permission denied.'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
form
=
NameForm
(
helpers
.
get_form_data
())
form
=
NameForm
(
helpers
.
get_form_data
())
...
@@ -566,7 +566,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -566,7 +566,7 @@ class FileAdmin(BaseView, ActionsMixin):
self
.
on_mkdir
(
directory
,
form
.
name
.
data
)
self
.
on_mkdir
(
directory
,
form
.
name
.
data
)
return
redirect
(
dir_url
)
return
redirect
(
dir_url
)
except
Exception
as
ex
:
except
Exception
as
ex
:
flash
(
gettext
(
'Failed to create directory:
%(error)
s'
,
ex
),
'error'
)
flash
(
gettext
(
'Failed to create directory:
%(error)
s'
,
e
rror
=
e
x
),
'error'
)
return
self
.
render
(
self
.
mkdir_template
,
return
self
.
render
(
self
.
mkdir_template
,
form
=
form
,
form
=
form
,
...
@@ -592,7 +592,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -592,7 +592,7 @@ class FileAdmin(BaseView, ActionsMixin):
return
redirect
(
return_url
)
return
redirect
(
return_url
)
if
not
self
.
is_accessible_path
(
path
):
if
not
self
.
is_accessible_path
(
path
):
flash
(
gettext
(
gettext
(
'Permission denied.'
)
))
flash
(
gettext
(
'Permission denied.'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
if
op
.
isdir
(
full_path
):
if
op
.
isdir
(
full_path
):
...
@@ -635,7 +635,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -635,7 +635,7 @@ class FileAdmin(BaseView, ActionsMixin):
return
redirect
(
return_url
)
return
redirect
(
return_url
)
if
not
self
.
is_accessible_path
(
path
):
if
not
self
.
is_accessible_path
(
path
):
flash
(
gettext
(
gettext
(
'Permission denied.'
)
))
flash
(
gettext
(
'Permission denied.'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
if
not
op
.
exists
(
full_path
):
if
not
op
.
exists
(
full_path
):
...
@@ -681,7 +681,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -681,7 +681,7 @@ class FileAdmin(BaseView, ActionsMixin):
base_path
,
full_path
,
path
=
self
.
_normalize_path
(
path
)
base_path
,
full_path
,
path
=
self
.
_normalize_path
(
path
)
if
not
self
.
is_accessible_path
(
path
)
or
not
self
.
is_file_editable
(
path
):
if
not
self
.
is_accessible_path
(
path
)
or
not
self
.
is_file_editable
(
path
):
flash
(
gettext
(
gettext
(
'Permission denied.'
)
))
flash
(
gettext
(
'Permission denied.'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
return
redirect
(
self
.
_get_dir_url
(
'.index'
))
dir_url
=
self
.
_get_dir_url
(
'.index'
,
os
.
path
.
dirname
(
path
))
dir_url
=
self
.
_get_dir_url
(
'.index'
,
os
.
path
.
dirname
(
path
))
...
...
flask_admin/form/upload.py
View file @
0c3e9406
...
@@ -177,7 +177,8 @@ class FileUploadField(fields.TextField):
...
@@ -177,7 +177,8 @@ class FileUploadField(fields.TextField):
return
True
return
True
return
(
'.'
in
filename
and
return
(
'.'
in
filename
and
filename
.
rsplit
(
'.'
,
1
)[
1
]
in
self
.
allowed_extensions
)
filename
.
rsplit
(
'.'
,
1
)[
1
]
.
lower
()
in
map
(
str
.
lower
,
self
.
allowed_extensions
))
def
pre_validate
(
self
,
form
):
def
pre_validate
(
self
,
form
):
if
(
self
.
data
and
if
(
self
.
data
and
...
@@ -208,6 +209,8 @@ class FileUploadField(fields.TextField):
...
@@ -208,6 +209,8 @@ class FileUploadField(fields.TextField):
filename
=
self
.
generate_name
(
obj
,
self
.
data
)
filename
=
self
.
generate_name
(
obj
,
self
.
data
)
filename
=
self
.
_save_file
(
self
.
data
,
filename
)
filename
=
self
.
_save_file
(
self
.
data
,
filename
)
# update filename of FileStorage to our validated name
self
.
data
.
filename
=
filename
setattr
(
obj
,
name
,
filename
)
setattr
(
obj
,
name
,
filename
)
...
@@ -329,7 +332,7 @@ class ImageUploadField(FileUploadField):
...
@@ -329,7 +332,7 @@ class ImageUploadField(FileUploadField):
"""
"""
# Check if PIL is installed
# Check if PIL is installed
if
Image
is
None
:
if
Image
is
None
:
raise
Exception
(
'PIL library was not found'
)
raise
ImportError
(
'PIL library was not found'
)
self
.
max_size
=
max_size
self
.
max_size
=
max_size
self
.
thumbnail_fn
=
thumbgen
or
thumbgen_filename
self
.
thumbnail_fn
=
thumbgen
or
thumbgen_filename
...
...
flask_admin/tests/data/copyleft.gif
0 → 100644
View file @
0c3e9406
1.54 KB
flask_admin/tests/data/copyleft.jpeg
0 → 100644
View file @
0c3e9406
12.4 KB
flask_admin/tests/test_form_upload.py
View file @
0c3e9406
...
@@ -95,6 +95,10 @@ def test_image_upload_field():
...
@@ -95,6 +95,10 @@ def test_image_upload_field():
safe_delete
(
path
,
'test2.png'
)
safe_delete
(
path
,
'test2.png'
)
safe_delete
(
path
,
'test2_thumb.jpg'
)
safe_delete
(
path
,
'test2_thumb.jpg'
)
safe_delete
(
path
,
'test1.jpg'
)
safe_delete
(
path
,
'test1.jpg'
)
safe_delete
(
path
,
'test1.jpeg'
)
safe_delete
(
path
,
'test1.gif'
)
safe_delete
(
path
,
'test1.png'
)
safe_delete
(
path
,
'test1.tiff'
)
class
TestForm
(
form
.
BaseForm
):
class
TestForm
(
form
.
BaseForm
):
upload
=
form
.
ImageUploadField
(
'Upload'
,
upload
=
form
.
ImageUploadField
(
'Upload'
,
...
@@ -204,6 +208,25 @@ def test_image_upload_field():
...
@@ -204,6 +208,25 @@ def test_image_upload_field():
ok_
(
op
.
exists
(
op
.
join
(
path
,
'test1.jpg'
)))
ok_
(
op
.
exists
(
op
.
join
(
path
,
'test1.jpg'
)))
# check allowed extensions
for
extension
in
(
'gif'
,
'jpg'
,
'jpeg'
,
'png'
,
'tiff'
):
filename
=
'copyleft.'
+
extension
filepath
=
op
.
join
(
op
.
dirname
(
__file__
),
'data'
,
filename
)
with
open
(
filepath
,
'rb'
)
as
fp
:
with
app
.
test_request_context
(
method
=
'POST'
,
data
=
{
'upload'
:
(
fp
,
filename
)}):
my_form
=
TestNoResizeForm
(
helpers
.
get_form_data
())
ok_
(
my_form
.
validate
())
my_form
.
populate_obj
(
dummy
)
eq_
(
dummy
.
upload
,
my_form
.
upload
.
data
.
filename
)
# check case-sensitivity for extensions
filename
=
op
.
join
(
op
.
dirname
(
__file__
),
'data'
,
'copyleft.jpg'
)
with
open
(
filename
,
'rb'
)
as
fp
:
with
app
.
test_request_context
(
method
=
'POST'
,
data
=
{
'upload'
:
(
fp
,
'copyleft.JPG'
)}):
my_form
=
TestNoResizeForm
(
helpers
.
get_form_data
())
ok_
(
my_form
.
validate
())
def
test_relative_path
():
def
test_relative_path
():
app
=
Flask
(
__name__
)
app
=
Flask
(
__name__
)
...
...
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