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
c19ace83
Commit
c19ace83
authored
Dec 07, 2012
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed #123. Now it is possible to customize label for inline forms
parent
fb73033e
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
86 additions
and
31 deletions
+86
-31
doc.py
examples/doc.py
+0
-26
form.py
flask_admin/contrib/peeweemodel/form.py
+4
-1
view.py
flask_admin/contrib/peeweemodel/view.py
+22
-1
form.py
flask_admin/contrib/sqlamodel/form.py
+10
-2
view.py
flask_admin/contrib/sqlamodel/view.py
+21
-1
form.py
flask_admin/model/form.py
+29
-0
No files found.
examples/doc.py
deleted
100644 → 0
View file @
fb73033e
from
flask
import
Flask
from
flask.ext.sqlalchemy
import
SQLAlchemy
from
flask.ext.admin
import
Admin
from
flask.ext.admin.contrib.sqlamodel
import
ModelView
app
=
Flask
(
__name__
)
app
.
config
[
'SECRET_KEY'
]
=
'123456790'
app
.
config
[
'SQLALCHEMY_DATABASE_URI'
]
=
'sqlite://'
app
.
config
[
'SQLALCHEMY_ECHO'
]
=
True
# .. read settings
db
=
SQLAlchemy
(
app
)
# .. model declarations here
class
User
(
db
.
Model
):
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
)
name
=
db
.
Column
(
db
.
String
(
64
),
unique
=
True
)
email
=
db
.
Column
(
db
.
String
(
128
))
if
__name__
==
'__main__'
:
admin
=
Admin
(
app
)
admin
.
add_view
(
ModelView
(
User
,
db
.
session
))
db
.
create_all
()
app
.
run
(
'0.0.0.0'
,
8000
)
flask_admin/contrib/peeweemodel/form.py
View file @
c19ace83
...
...
@@ -146,12 +146,15 @@ class InlineModelConverter(InlineModelConverterBase):
converter
=
converter
)
prop_name
=
'fa_
%
s'
%
model
.
__name__
label
=
self
.
get_label
(
info
,
prop_name
)
setattr
(
form_class
,
prop_name
,
InlineModelFormList
(
child_form
,
info
.
model
,
reverse_field
.
name
,
label
=
info
.
model
.
__name__
))
label
=
label
or
info
.
model
.
__name__
))
setattr
(
field
.
rel_model
,
prop_name
,
...
...
flask_admin/contrib/peeweemodel/view.py
View file @
c19ace83
...
...
@@ -104,6 +104,27 @@ class ModelView(BaseModelView):
class MyModelView(ModelView):
inline_models = (MyInlineModelForm(MyInlineModel),)
You can customize generated field name by:
1. Using `form_name` property as option:
class MyModelView(ModelView):
inline_models = ((Post, dict(form_label='Hello')))
2. Using target model name with `fa_` prefis:
class Model1(Base):
# ...
pass
class Model2(Base):
# ...
pass
class MyModel1View(Base):
inline_models = (Model2,)
column_labels = {'fa_Model2': 'Hello'}
"""
def
__init__
(
self
,
model
,
name
=
None
,
...
...
@@ -211,7 +232,7 @@ class ModelView(BaseModelView):
def
scaffold_inline_form_models
(
self
,
form_class
):
converter
=
self
.
model_form_converter
()
inline_converter
=
self
.
inline_model_form_converter
()
inline_converter
=
self
.
inline_model_form_converter
(
self
)
for
m
in
self
.
inline_models
:
form_class
=
inline_converter
.
contribute
(
converter
,
...
...
flask_admin/contrib/sqlamodel/form.py
View file @
c19ace83
...
...
@@ -330,7 +330,8 @@ class InlineModelConverter(InlineModelConverterBase):
"""
Inline model form helper.
"""
def
__init__
(
self
,
session
):
def
__init__
(
self
,
session
,
view
):
super
(
InlineModelConverter
,
self
)
.
__init__
(
view
)
self
.
session
=
session
def
get_info
(
self
,
p
):
...
...
@@ -428,12 +429,19 @@ class InlineModelConverter(InlineModelConverterBase):
# Post-process form
child_form
=
info
.
postprocess_form
(
child_form
)
kwargs
=
dict
()
label
=
self
.
get_label
(
info
,
forward_prop
.
key
)
if
label
:
kwargs
[
'label'
]
=
label
# Contribute field
setattr
(
form_class
,
forward_prop
.
key
,
InlineModelFormList
(
child_form
,
self
.
session
,
info
.
model
,
forward_prop
.
key
))
forward_prop
.
key
,
**
kwargs
))
return
form_class
flask_admin/contrib/sqlamodel/view.py
View file @
c19ace83
...
...
@@ -193,6 +193,26 @@ class ModelView(BaseModelView):
class MyModelView(ModelView):
inline_models = (MyInlineModelForm(MyInlineModel),)
You can customize generated field name by:
1. Using `form_name` property as option:
class MyModelView(ModelView):
inline_models = ((Post, dict(form_label='Hello')))
2. Using forward relation name and `column_labels` property:
class Model1(Base):
pass
class Model2(Base):
# ...
model1 = relation(Model1, backref='models')
class MyModel1View(Base):
inline_models = (Model2,)
column_labels = {'models': 'Hello'}
"""
def
__init__
(
self
,
model
,
session
,
...
...
@@ -464,7 +484,7 @@ class ModelView(BaseModelView):
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
)
for
m
in
self
.
inline_models
:
form_class
=
inline_converter
.
contribute
(
converter
,
...
...
flask_admin/model/form.py
View file @
c19ace83
...
...
@@ -99,6 +99,35 @@ class ModelConverterBase(object):
class
InlineModelConverterBase
(
object
):
def
__init__
(
self
,
view
):
"""
Base constructor
:param view:
View class
"""
self
.
view
=
view
def
get_label
(
self
,
info
,
name
):
"""
Get inline model field label
:param info:
Inline model info
:param name:
Field name
"""
form_name
=
getattr
(
info
,
'form_label'
,
None
)
if
form_name
:
return
form_name
column_labels
=
getattr
(
self
.
view
,
'column_labels'
,
None
)
if
column_labels
and
name
in
column_labels
:
return
column_labels
[
name
]
return
None
def
get_info
(
self
,
p
):
"""
Figure out InlineFormAdmin information.
...
...
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