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
5e5b5736
Commit
5e5b5736
authored
Aug 05, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved inline model handling for SQLa backend
parent
4783dc9b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
11 deletions
+34
-11
form.py
flask_admin/contrib/sqla/form.py
+17
-5
view.py
flask_admin/contrib/sqla/view.py
+4
-4
base.py
flask_admin/model/base.py
+3
-2
helpers.py
flask_admin/model/helpers.py
+10
-0
No files found.
flask_admin/contrib/sqla/form.py
View file @
5e5b5736
...
@@ -6,6 +6,7 @@ from flask.ext.admin.form import Select2Field
...
@@ -6,6 +6,7 @@ from flask.ext.admin.form import Select2Field
from
flask.ext.admin.model.form
import
(
converts
,
ModelConverterBase
,
from
flask.ext.admin.model.form
import
(
converts
,
ModelConverterBase
,
InlineFormAdmin
,
InlineModelConverterBase
,
InlineFormAdmin
,
InlineModelConverterBase
,
FieldPlaceholder
)
FieldPlaceholder
)
from
flask.ext.admin.model.helpers
import
prettify_name
from
flask.ext.admin._backwards
import
get_property
from
flask.ext.admin._backwards
import
get_property
from
flask.ext.admin._compat
import
iteritems
from
flask.ext.admin._compat
import
iteritems
...
@@ -45,13 +46,20 @@ class AdminModelConverter(ModelConverterBase):
...
@@ -45,13 +46,20 @@ class AdminModelConverter(ModelConverterBase):
if
column_labels
:
if
column_labels
:
return
column_labels
.
get
(
name
)
return
column_labels
.
get
(
name
)
return
self
.
view
.
prettify_name
(
name
)
prettify_override
=
getattr
(
self
.
view
,
'prettify_name'
,
None
)
if
prettify_override
:
return
prettify_override
(
name
)
return
prettify_name
(
name
)
def
_get_description
(
self
,
name
,
field_args
):
def
_get_description
(
self
,
name
,
field_args
):
if
'description'
in
field_args
:
if
'description'
in
field_args
:
return
field_args
[
'description'
]
return
field_args
[
'description'
]
if
self
.
view
.
column_descriptions
:
return
self
.
view
.
column_descriptions
.
get
(
name
)
column_descriptions
=
getattr
(
self
.
view
,
'column_descriptions'
,
None
)
if
column_descriptions
:
return
column_descriptions
.
get
(
name
)
def
_get_field_override
(
self
,
name
):
def
_get_field_override
(
self
,
name
):
form_overrides
=
getattr
(
self
.
view
,
'form_overrides'
,
None
)
form_overrides
=
getattr
(
self
.
view
,
'form_overrides'
,
None
)
...
@@ -409,9 +417,10 @@ class InlineModelConverter(InlineModelConverterBase):
...
@@ -409,9 +417,10 @@ class InlineModelConverter(InlineModelConverterBase):
you can create your own wtforms field and use it instead
you can create your own wtforms field and use it instead
"""
"""
def
__init__
(
self
,
session
,
view
):
def
__init__
(
self
,
session
,
view
,
model_converter
):
super
(
InlineModelConverter
,
self
)
.
__init__
(
view
)
super
(
InlineModelConverter
,
self
)
.
__init__
(
view
)
self
.
session
=
session
self
.
session
=
session
self
.
model_converter
=
model_converter
def
get_info
(
self
,
p
):
def
get_info
(
self
,
p
):
info
=
super
(
InlineModelConverter
,
self
)
.
get_info
(
p
)
info
=
super
(
InlineModelConverter
,
self
)
.
get_info
(
p
)
...
@@ -437,7 +446,7 @@ class InlineModelConverter(InlineModelConverterBase):
...
@@ -437,7 +446,7 @@ class InlineModelConverter(InlineModelConverterBase):
return
info
return
info
def
contribute
(
self
,
converter
,
model
,
form_class
,
inline_model
):
def
contribute
(
self
,
model
,
form_class
,
inline_model
):
"""
"""
Generate form fields for inline forms and contribute them to
Generate form fields for inline forms and contribute them to
the `form_class`
the `form_class`
...
@@ -497,6 +506,9 @@ class InlineModelConverter(InlineModelConverterBase):
...
@@ -497,6 +506,9 @@ class InlineModelConverter(InlineModelConverterBase):
else
:
else
:
exclude
=
ignore
exclude
=
ignore
# Create converter
converter
=
self
.
model_converter
(
self
.
session
,
info
)
# Create form
# Create form
child_form
=
info
.
get_form
()
child_form
=
info
.
get_form
()
...
...
flask_admin/contrib/sqla/view.py
View file @
5e5b5736
...
@@ -530,12 +530,12 @@ class ModelView(BaseModelView):
...
@@ -530,12 +530,12 @@ class ModelView(BaseModelView):
:param form_class:
:param form_class:
Form class
Form class
"""
"""
converter
=
self
.
model_form_converter
(
self
.
session
,
self
)
inline_converter
=
self
.
inline_model_form_converter
(
self
.
session
,
inline_converter
=
self
.
inline_model_form_converter
(
self
.
session
,
self
)
self
,
self
.
model_form_converter
)
for
m
in
self
.
inline_models
:
for
m
in
self
.
inline_models
:
form_class
=
inline_converter
.
contribute
(
converter
,
form_class
=
inline_converter
.
contribute
(
self
.
model
,
self
.
model
,
form_class
,
form_class
,
m
)
m
)
...
...
flask_admin/model/base.py
View file @
5e5b5736
...
@@ -13,6 +13,7 @@ from flask.ext.admin.helpers import get_form_data, validate_form_on_submit
...
@@ -13,6 +13,7 @@ from flask.ext.admin.helpers import get_form_data, validate_form_on_submit
from
flask.ext.admin.tools
import
rec_getattr
from
flask.ext.admin.tools
import
rec_getattr
from
flask.ext.admin._backwards
import
ObsoleteAttr
from
flask.ext.admin._backwards
import
ObsoleteAttr
from
flask.ext.admin._compat
import
iteritems
,
as_unicode
from
flask.ext.admin._compat
import
iteritems
,
as_unicode
from
.helpers
import
prettify_name
class
BaseModelView
(
BaseView
,
ActionsMixin
):
class
BaseModelView
(
BaseView
,
ActionsMixin
):
...
@@ -380,7 +381,7 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -380,7 +381,7 @@ class BaseModelView(BaseView, ActionsMixin):
# If name not provided, it is model name
# If name not provided, it is model name
if
name
is
None
:
if
name
is
None
:
name
=
'
%
s'
%
self
.
_
prettify_name
(
model
.
__name__
)
name
=
'
%
s'
%
self
.
prettify_name
(
model
.
__name__
)
# If endpoint not provided, it is model name + 'view'
# If endpoint not provided, it is model name + 'view'
if
endpoint
is
None
:
if
endpoint
is
None
:
...
@@ -818,7 +819,7 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -818,7 +819,7 @@ class BaseModelView(BaseView, ActionsMixin):
:param name:
:param name:
Name to prettify
Name to prettify
"""
"""
return
name
.
replace
(
'_'
,
' '
)
.
title
(
)
return
prettify_name
(
name
)
# URL generation helper
# URL generation helper
def
_get_extra_args
(
self
):
def
_get_extra_args
(
self
):
...
...
flask_admin/model/helpers.py
0 → 100644
View file @
5e5b5736
def
prettify_name
(
name
):
"""
Prettify pythonic variable name.
For example, 'hello_world' will be converted to 'Hello World'
:param name:
Name to prettify
"""
return
name
.
replace
(
'_'
,
' '
)
.
title
()
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