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
f6894398
Commit
f6894398
authored
Jun 13, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Additional flask-wtf cleanup fixes
parent
b255126b
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
61 additions
and
43 deletions
+61
-43
auth.py
examples/auth-mongoengine/auth.py
+3
-2
auth.py
examples/auth/auth.py
+3
-2
base.py
flask_admin/base.py
+0
-2
fileadmin.py
flask_admin/contrib/fileadmin.py
+9
-9
form.py
flask_admin/form.py
+2
-23
helpers.py
flask_admin/helpers.py
+39
-1
base.py
flask_admin/model/base.py
+5
-4
No files found.
examples/auth-mongoengine/auth.py
View file @
f6894398
...
...
@@ -5,6 +5,7 @@ from wtforms import form, fields, validators
from
flask.ext
import
admin
,
login
from
flask.ext.admin.contrib.mongoengine
import
ModelView
from
flask.ext.admin
import
helpers
# Create application
app
=
Flask
(
__name__
)
...
...
@@ -103,7 +104,7 @@ def index():
@
app
.
route
(
'/login/'
,
methods
=
(
'GET'
,
'POST'
))
def
login_view
():
form
=
LoginForm
(
request
.
form
)
if
form
.
validate_on_submit
(
):
if
helpers
.
validate_form_on_submit
(
form
):
user
=
form
.
get_user
()
login
.
login_user
(
user
)
return
redirect
(
url_for
(
'index'
))
...
...
@@ -114,7 +115,7 @@ def login_view():
@
app
.
route
(
'/register/'
,
methods
=
(
'GET'
,
'POST'
))
def
register_view
():
form
=
RegistrationForm
(
request
.
form
)
if
form
.
validate_on_submit
(
):
if
helpers
.
validate_form_on_submit
(
form
):
user
=
User
()
form
.
populate_obj
(
user
)
...
...
examples/auth/auth.py
View file @
f6894398
...
...
@@ -5,6 +5,7 @@ from wtforms import form, fields, validators
from
flask.ext
import
admin
,
login
from
flask.ext.admin.contrib
import
sqlamodel
from
flask.ext.admin
import
helpers
# Create Flask application
app
=
Flask
(
__name__
)
...
...
@@ -104,7 +105,7 @@ def index():
@
app
.
route
(
'/login/'
,
methods
=
(
'GET'
,
'POST'
))
def
login_view
():
form
=
LoginForm
(
request
.
form
)
if
form
.
validate_on_submit
(
):
if
helpers
.
validate_form_on_submit
(
form
):
user
=
form
.
get_user
()
login
.
login_user
(
user
)
return
redirect
(
url_for
(
'index'
))
...
...
@@ -115,7 +116,7 @@ def login_view():
@
app
.
route
(
'/register/'
,
methods
=
(
'GET'
,
'POST'
))
def
register_view
():
form
=
RegistrationForm
(
request
.
form
)
if
form
.
validate_on_submit
(
):
if
helpers
.
validate_form_on_submit
(
form
):
user
=
User
()
form
.
populate_obj
(
user
)
...
...
flask_admin/base.py
View file @
f6894398
...
...
@@ -106,8 +106,6 @@ class BaseView(six.with_metaclass(AdminViewMeta, BaseMeta)):
def index(self):
return 'Hello World!'
"""
__metaclass__
=
AdminViewMeta
@
property
def
_template_args
(
self
):
"""
...
...
flask_admin/contrib/fileadmin.py
View file @
f6894398
...
...
@@ -15,7 +15,7 @@ from wtforms import fields, validators
from
flask.ext.admin.base
import
BaseView
,
expose
from
flask.ext.admin.actions
import
action
,
ActionsMixin
from
flask.ext.admin.babel
import
gettext
,
lazy_gettext
from
flask.ext.admin
import
form
from
flask.ext.admin
import
form
,
helpers
class
NameForm
(
form
.
BaseForm
):
...
...
@@ -43,7 +43,7 @@ class UploadForm(form.BaseForm):
def
__init__
(
self
,
admin
):
self
.
admin
=
admin
super
(
UploadForm
,
self
)
.
__init__
()
super
(
UploadForm
,
self
)
.
__init__
(
helpers
.
get_form_data
()
)
def
validate_upload
(
self
,
field
):
if
not
self
.
upload
.
has_file
():
...
...
@@ -476,7 +476,7 @@ class FileAdmin(BaseView, ActionsMixin):
return
redirect
(
self
.
_get_dir_url
(
'.index'
,
path
))
form
=
UploadForm
(
self
)
if
form
.
validate_on_submit
(
):
if
helpers
.
validate_form_on_submit
(
form
):
filename
=
op
.
join
(
directory
,
secure_filename
(
form
.
upload
.
data
.
filename
))
...
...
@@ -511,9 +511,9 @@ class FileAdmin(BaseView, ActionsMixin):
flash
(
gettext
(
'Directory creation is disabled.'
),
'error'
)
return
redirect
(
dir_url
)
form
=
NameForm
(
request
.
form
)
form
=
NameForm
(
helpers
.
get_form_data
()
)
if
form
.
validate_on_submit
(
):
if
helpers
.
validate_form_on_submit
(
form
):
try
:
os
.
mkdir
(
op
.
join
(
directory
,
form
.
name
.
data
))
self
.
on_mkdir
(
directory
,
form
.
name
.
data
)
...
...
@@ -587,8 +587,8 @@ class FileAdmin(BaseView, ActionsMixin):
flash
(
gettext
(
'Path does not exist.'
))
return
redirect
(
return_url
)
form
=
NameForm
(
request
.
form
,
name
=
op
.
basename
(
path
))
if
form
.
validate_on_submit
(
):
form
=
NameForm
(
helpers
.
get_form_data
()
,
name
=
op
.
basename
(
path
))
if
helpers
.
validate_form_on_submit
(
form
):
try
:
dir_base
=
op
.
dirname
(
full_path
)
filename
=
secure_filename
(
form
.
name
.
data
)
...
...
@@ -627,10 +627,10 @@ class FileAdmin(BaseView, ActionsMixin):
dir_url
=
self
.
_get_dir_url
(
'.index'
,
os
.
path
.
dirname
(
path
))
next_url
=
next_url
or
dir_url
form
=
EditForm
()
form
=
EditForm
(
helpers
.
get_form_data
()
)
error
=
False
if
request
.
method
==
'POST'
:
if
helpers
.
validate_form_on_submit
(
form
)
:
form
.
process
(
request
.
form
,
content
=
''
)
if
form
.
validate
():
try
:
...
...
flask_admin/form.py
View file @
f6894398
...
...
@@ -7,30 +7,9 @@ from flask.ext.admin.babel import gettext, ngettext
from
flask.ext.admin
import
helpers
as
h
# TODO: Use flask.ext.wtf if possible
class
BaseForm
(
form
.
Form
):
"""
Customized form class.
"""
def
__init__
(
self
,
formdata
=
None
,
obj
=
None
,
prefix
=
''
,
**
kwargs
):
if
formdata
:
super
(
BaseForm
,
self
)
.
__init__
(
formdata
,
obj
,
prefix
,
**
kwargs
)
else
:
super
(
BaseForm
,
self
)
.
__init__
(
obj
=
obj
,
prefix
=
prefix
,
**
kwargs
)
self
.
_obj
=
obj
@
property
def
has_file_field
(
self
):
"""
Return True if form contains at least one FileField.
Does not check for child form fields.
"""
# TODO: Optimize me
for
f
in
self
:
if
isinstance
(
f
,
fields
.
FileField
):
return
True
return
False
pass
class
TimeField
(
fields
.
Field
):
...
...
flask_admin/helpers.py
View file @
f6894398
from
flask
import
g
from
flask
import
g
,
request
from
wtforms.validators
import
DataRequired
,
InputRequired
...
...
@@ -7,11 +7,49 @@ def set_current_view(view):
def
get_current_view
():
"""
Get current administrative view.
"""
return
getattr
(
g
,
'_admin_view'
,
None
)
def
is_required_form_field
(
field
):
"""
Check if form field has `DataRequired` or `InputRequired` validators.
:param field:
WTForms field to check
"""
for
validator
in
field
.
validators
:
if
isinstance
(
validator
,
(
DataRequired
,
InputRequired
)):
return
True
return
False
def
is_form_submitted
():
"""
Check if current method is PUT or POST
"""
return
request
and
request
.
method
in
(
"PUT"
,
"POST"
)
def
validate_form_on_submit
(
form
):
"""
If current method is PUT or POST, validate form and return validation status.
"""
return
is_form_submitted
()
and
form
.
validate
()
def
get_form_data
():
"""
If current method is PUT or POST, return concatenated `request.form` with
`request.files` or `None` otherwise.
"""
if
is_form_submitted
():
formdata
=
request
.
form
if
request
.
files
:
formdata
=
formdata
.
copy
()
formdata
.
update
(
request
.
files
)
return
formdata
return
None
flask_admin/model/base.py
View file @
f6894398
...
...
@@ -10,6 +10,7 @@ from flask.ext.admin.base import BaseView, expose
from
flask.ext.admin.tools
import
rec_getattr
,
ObsoleteAttr
from
flask.ext.admin.model
import
filters
,
typefmt
from
flask.ext.admin.actions
import
ActionsMixin
from
flask.ext.admin
import
get_form_data
,
validate_form_on_submit
class
BaseModelView
(
BaseView
,
ActionsMixin
):
...
...
@@ -607,7 +608,7 @@ class BaseModelView(BaseView, ActionsMixin):
Override to implement custom behavior.
"""
return
self
.
_create_form_class
(
obj
=
obj
)
return
self
.
_create_form_class
(
get_form_data
(),
obj
=
obj
)
def
edit_form
(
self
,
obj
=
None
):
"""
...
...
@@ -615,7 +616,7 @@ class BaseModelView(BaseView, ActionsMixin):
Override to implement custom behavior.
"""
return
self
.
_edit_form_class
(
obj
=
obj
)
return
self
.
_edit_form_class
(
get_form_data
(),
obj
=
obj
)
# Helpers
def
is_sortable
(
self
,
name
):
...
...
@@ -1028,7 +1029,7 @@ class BaseModelView(BaseView, ActionsMixin):
form
=
self
.
create_form
()
if
form
.
validate_on_submit
(
):
if
validate_form_on_submit
(
form
):
if
self
.
create_model
(
form
):
if
'_add_another'
in
request
.
form
:
flash
(
gettext
(
'Model was successfully created.'
))
...
...
@@ -1062,7 +1063,7 @@ class BaseModelView(BaseView, ActionsMixin):
form
=
self
.
edit_form
(
obj
=
model
)
if
form
.
validate_on_submit
(
):
if
validate_form_on_submit
(
form
):
if
self
.
update_model
(
form
,
model
):
return
redirect
(
return_url
)
...
...
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