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
c73875b3
Commit
c73875b3
authored
Jul 17, 2016
by
Serge S. Koval
Committed by
GitHub
Jul 17, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1312 from datran/coremabu
Support form_args for appengine
parents
971ce904
5b3a64ab
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
65 additions
and
5 deletions
+65
-5
fields.py
flask_admin/contrib/appengine/fields.py
+17
-0
form.py
flask_admin/contrib/appengine/form.py
+9
-0
view.py
flask_admin/contrib/appengine/view.py
+39
-5
No files found.
flask_admin/contrib/appengine/fields.py
0 → 100644
View file @
c73875b3
from
wtforms.fields
import
TextField
from
google.appengine.ext
import
ndb
import
decimal
class
GeoPtPropertyField
(
TextField
):
def
process_formdata
(
self
,
valuelist
):
if
valuelist
:
try
:
lat
,
lon
=
valuelist
[
0
]
.
split
(
','
)
self
.
data
=
ndb
.
GeoPt
(
decimal
.
Decimal
(
lat
.
strip
()),
decimal
.
Decimal
(
lon
.
strip
())
)
except
(
decimal
.
InvalidOperation
,
ValueError
):
raise
ValueError
(
'Not a valid coordinate location'
)
flask_admin/contrib/appengine/form.py
0 → 100644
View file @
c73875b3
from
wtforms_appengine.ndb
import
ModelConverter
from
.fields
import
GeoPtPropertyField
from
flask_admin.model.form
import
converts
class
AdminModelConverter
(
ModelConverter
):
@
converts
(
'GeoPt'
)
def
convert_GeoPtProperty
(
self
,
model
,
prop
,
kwargs
):
"""Returns a form field for a ``ndb.GeoPtProperty``."""
return
GeoPtPropertyField
(
**
kwargs
)
flask_admin/contrib/appengine/view.py
View file @
c73875b3
...
@@ -9,7 +9,7 @@ from google.appengine.ext import ndb
...
@@ -9,7 +9,7 @@ from google.appengine.ext import ndb
from
flask_wtf
import
Form
from
flask_wtf
import
Form
from
flask_admin.model.form
import
create_editable_list_form
from
flask_admin.model.form
import
create_editable_list_form
from
.form
import
AdminModelConverter
class
NdbModelView
(
BaseModelView
):
class
NdbModelView
(
BaseModelView
):
"""
"""
...
@@ -35,16 +35,46 @@ class NdbModelView(BaseModelView):
...
@@ -35,16 +35,46 @@ class NdbModelView(BaseModelView):
#TODO: implement
#TODO: implement
pass
pass
form_args
=
None
model_form_converter
=
AdminModelConverter
"""
Model form conversion class. Use this to implement custom field conversion logic.
For example::
class MyModelConverter(AdminModelConverter):
pass
class MyAdminView(ModelView):
model_form_converter = MyModelConverter
"""
def
scaffold_form
(
self
):
def
scaffold_form
(
self
):
form_class
=
wt_ndb
.
model_form
(
self
.
model
())
form_class
=
wt_ndb
.
model_form
(
self
.
model
(),
base_class
=
Form
,
only
=
self
.
form_columns
,
exclude
=
self
.
form_excluded_columns
,
field_args
=
self
.
form_args
,
converter
=
self
.
model_form_converter
(),
)
return
form_class
return
form_class
def
scaffold_list_form
(
self
,
widget
=
None
,
validators
=
None
):
def
scaffold_list_form
(
self
,
widget
=
None
,
validators
=
None
):
form_class
=
wt_ndb
.
model_form
(
self
.
model
())
form_class
=
wt_ndb
.
model_form
(
self
.
model
(),
base_class
=
Form
,
only
=
self
.
column_editable_list
,
field_args
=
self
.
form_args
,
converter
=
self
.
model_form_converter
(),
)
result
=
create_editable_list_form
(
Form
,
form_class
,
widget
)
result
=
create_editable_list_form
(
Form
,
form_class
,
widget
)
return
result
return
result
def
get_list
(
self
,
page
,
sort_field
,
sort_desc
,
search
,
filters
):
def
get_list
(
self
,
page
,
sort_field
,
sort_desc
,
search
,
filters
,
page_size
=
None
):
#TODO: implement filters (don't think search can work here)
#TODO: implement filters (don't think search can work here)
q
=
self
.
model
.
query
()
q
=
self
.
model
.
query
()
...
@@ -55,7 +85,11 @@ class NdbModelView(BaseModelView):
...
@@ -55,7 +85,11 @@ class NdbModelView(BaseModelView):
order_field
=
-
order_field
order_field
=
-
order_field
q
=
q
.
order
(
order_field
)
q
=
q
.
order
(
order_field
)
results
=
q
.
fetch
(
self
.
page_size
,
offset
=
page
*
self
.
page_size
)
if
not
page_size
:
page_size
=
self
.
page_size
results
=
q
.
fetch
(
page_size
,
offset
=
page
*
page_size
)
return
q
.
count
(),
results
return
q
.
count
(),
results
def
get_one
(
self
,
urlsafe_key
):
def
get_one
(
self
,
urlsafe_key
):
...
...
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