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
bff64010
Commit
bff64010
authored
Nov 01, 2012
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed peewee inline model views
parent
c4a63e75
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
55 additions
and
16 deletions
+55
-16
form.py
flask_admin/contrib/peeweemodel/form.py
+28
-1
form.py
flask_admin/contrib/sqlamodel/form.py
+26
-2
form.py
flask_admin/model/form.py
+1
-13
No files found.
flask_admin/contrib/peeweemodel/form.py
View file @
bff64010
from
wtforms
import
fields
from
peewee
import
DateTimeField
,
DateField
,
TimeField
,
BaseModel
,
ForeignKeyField
from
peewee
import
(
DateTimeField
,
DateField
,
TimeField
,
PrimaryKeyField
,
ForeignKeyField
,
BaseModel
)
from
wtfpeewee.orm
import
ModelConverter
,
model_form
...
...
@@ -71,10 +72,15 @@ class InlineModelFormList(fields.FieldList):
class
CustomModelConverter
(
ModelConverter
):
def
__init__
(
self
,
additional
=
None
):
super
(
CustomModelConverter
,
self
)
.
__init__
(
additional
)
self
.
converters
[
PrimaryKeyField
]
=
self
.
handle_pk
self
.
converters
[
DateTimeField
]
=
self
.
handle_datetime
self
.
converters
[
DateField
]
=
self
.
handle_date
self
.
converters
[
TimeField
]
=
self
.
handle_time
def
handle_pk
(
self
,
model
,
field
,
**
kwargs
):
kwargs
[
'validators'
]
=
[]
return
field
.
name
,
fields
.
HiddenField
(
**
kwargs
)
def
handle_date
(
self
,
model
,
field
,
**
kwargs
):
kwargs
[
'widget'
]
=
form
.
DatePickerWidget
()
return
field
.
name
,
fields
.
DateField
(
**
kwargs
)
...
...
@@ -88,6 +94,27 @@ class CustomModelConverter(ModelConverter):
class
InlineModelConverter
(
InlineModelConverterBase
):
def
get_info
(
self
,
p
):
info
=
super
(
InlineModelConverter
,
self
)
.
get_info
(
p
)
if
info
is
None
:
if
isinstance
(
p
,
BaseModel
):
info
=
InlineFormAdmin
(
p
)
else
:
model
=
getattr
(
p
,
'model'
,
None
)
if
model
is
None
:
raise
Exception
(
'Unknown inline model admin:
%
s'
%
repr
(
p
))
attrs
=
dict
()
for
attr
in
dir
(
p
):
if
not
attr
.
startswith
(
'_'
)
and
attr
!=
model
:
attrs
[
attr
]
=
getattr
(
p
,
attr
)
info
=
InlineFormAdmin
(
model
,
**
attrs
)
return
info
def
contribute
(
self
,
converter
,
model
,
form_class
,
inline_model
):
# Find property from target model to current model
reverse_field
=
None
...
...
flask_admin/contrib/sqlamodel/form.py
View file @
bff64010
...
...
@@ -2,7 +2,8 @@ from wtforms import fields, validators
from
sqlalchemy
import
Boolean
,
Column
from
flask.ext.admin
import
form
from
flask.ext.admin.model.form
import
converts
,
ModelConverterBase
,
InlineModelConverterBase
from
flask.ext.admin.model.form
import
(
converts
,
ModelConverterBase
,
InlineFormAdmin
,
InlineModelConverterBase
)
from
.validators
import
Unique
from
.fields
import
QuerySelectField
,
QuerySelectMultipleField
,
InlineModelFormList
...
...
@@ -327,6 +328,30 @@ class InlineModelConverter(InlineModelConverterBase):
def
__init__
(
self
,
session
):
self
.
session
=
session
def
get_info
(
self
,
p
):
info
=
super
(
InlineModelConverter
,
self
)
.
get_info
(
p
)
# Special case for model instances
if
info
is
None
:
if
hasattr
(
p
,
'_sa_class_manager'
):
return
InlineFormAdmin
(
p
)
else
:
model
=
getattr
(
p
,
'model'
,
None
)
if
model
is
None
:
raise
Exception
(
'Unknown inline model admin:
%
s'
%
repr
(
p
))
attrs
=
dict
()
for
attr
in
dir
(
p
):
if
not
attr
.
startswith
(
'_'
)
and
attr
!=
'model'
:
attrs
[
attr
]
=
getattr
(
p
,
attr
)
return
InlineFormAdmin
(
model
,
**
attrs
)
info
=
InlineFormAdmin
(
model
,
**
attrs
)
return
info
def
contribute
(
self
,
converter
,
model
,
form_class
,
inline_model
):
"""
Generate form fields for inline forms and contribute them to
...
...
@@ -396,7 +421,6 @@ class InlineModelConverter(InlineModelConverterBase):
hidden_pk
=
True
)
# Post-process form
print
info
,
info
.
postprocess_form
child_form
=
info
.
postprocess_form
(
child_form
)
# Contribute field
...
...
flask_admin/model/form.py
View file @
bff64010
...
...
@@ -115,17 +115,5 @@ class InlineModelConverterBase(object):
return
InlineFormAdmin
(
p
[
0
],
**
p
[
1
])
elif
isinstance
(
p
,
InlineFormAdmin
):
return
p
elif
hasattr
(
p
,
'_sa_class_manager'
):
return
InlineFormAdmin
(
p
)
else
:
model
=
getattr
(
p
,
'model'
,
None
)
if
model
is
None
:
raise
Exception
(
'Unknown inline model admin:
%
s'
%
repr
(
p
))
attrs
=
dict
()
for
attr
in
dir
(
p
):
if
not
attr
.
startswith
(
'_'
)
and
attr
!=
'model'
:
attrs
[
attr
]
=
getattr
(
p
,
attr
)
return
InlineFormAdmin
(
model
,
**
attrs
)
return
None
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