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
81555678
Commit
81555678
authored
Aug 26, 2012
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code cleanup
parent
33b47153
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
26 additions
and
53 deletions
+26
-53
fields.py
flask_admin/contrib/sqlamodel/fields.py
+7
-35
form.py
flask_admin/contrib/sqlamodel/form.py
+2
-1
form.py
flask_admin/form.py
+16
-0
widgets.py
flask_admin/model/widgets.py
+1
-17
No files found.
flask_admin/contrib/sqlamodel/fields.py
View file @
81555678
...
...
@@ -4,14 +4,13 @@
import
operator
from
wtforms
import
widgets
from
wtforms.fields
import
SelectFieldBase
,
F
ormField
,
F
ieldList
from
wtforms.fields
import
SelectFieldBase
,
FieldList
from
wtforms.validators
import
ValidationError
from
.tools
import
get_primary_key
from
flask.ext.admin.model.fields
import
InlineModelFormField
from
flask.ext.admin.model.widgets
import
InlineFormListWidget
from
flask
import
request
try
:
from
sqlalchemy.orm.util
import
identity_key
has_identity_key
=
True
...
...
@@ -181,46 +180,18 @@ class QuerySelectMultipleField(QuerySelectField):
raise
ValidationError
(
self
.
gettext
(
'Not a valid choice'
))
class
InlineModelFormField
(
FormField
):
def
__init__
(
self
,
form
,
model
,
**
kwargs
):
super
(
InlineModelFormField
,
self
)
.
__init__
(
form
,
**
kwargs
)
self
.
model
=
model
self
.
_pk
=
get_primary_key
(
model
)
self
.
_should_delete
=
False
def
process
(
self
,
formdata
,
data
=
None
):
super
(
InlineModelFormField
,
self
)
.
process
(
formdata
,
data
)
# Grab delete key
key
=
'del-
%
s'
%
self
.
id
if
key
in
request
.
form
:
self
.
_should_delete
=
True
def
should_delete
(
self
):
return
self
.
_should_delete
def
get_pk
(
self
):
return
getattr
(
self
.
form
,
self
.
_pk
)
.
data
def
populate_obj
(
self
,
obj
,
name
):
for
name
,
field
in
self
.
form
.
_fields
.
iteritems
():
if
name
!=
self
.
_pk
:
field
.
populate_obj
(
obj
,
name
)
class
InlineModelFormList
(
FieldList
):
widget
=
InlineFormListWidget
()
def
__init__
(
self
,
form
,
session
,
model
,
**
kwargs
):
def
__init__
(
self
,
form
,
session
,
model
,
prop
,
**
kwargs
):
self
.
form
=
form
self
.
session
=
session
self
.
model
=
model
self
.
prop
=
prop
self
.
_pk
=
get_primary_key
(
model
)
super
(
InlineModelFormList
,
self
)
.
__init__
(
InlineModelFormField
(
form
,
model
),
**
kwargs
)
super
(
InlineModelFormList
,
self
)
.
__init__
(
InlineModelFormField
(
form
,
self
.
_pk
),
**
kwargs
)
def
__call__
(
self
,
**
kwargs
):
return
self
.
widget
(
self
,
template
=
self
.
form
(),
**
kwargs
)
...
...
@@ -251,9 +222,10 @@ class InlineModelFormList(FieldList):
field
.
populate_obj
(
model
,
None
)
# Force relation
model
.
user
=
obj
setattr
(
self
.
model
,
self
.
prop
,
obj
)
def
get_pk_from_identity
(
obj
):
# TODO: Remove me
cls
,
key
=
identity_key
(
instance
=
obj
)
return
u':'
.
join
(
unicode
(
x
)
for
x
in
key
)
flask_admin/contrib/sqlamodel/form.py
View file @
81555678
...
...
@@ -311,6 +311,7 @@ def contribute_inline(session, model, form_class, inline_models):
exclude
=
exclude
,
hidden_pk
=
True
)
setattr
(
form_class
,
p
,
InlineModelFormList
(
child_form
,
session
,
remote_model
))
setattr
(
form_class
,
p
,
InlineModelFormList
(
child_form
,
session
,
remote_model
,
p
))
return
form_class
flask_admin/form.py
View file @
81555678
import
time
import
datetime
from
flask.globals
import
_request_ctx_stack
from
flask.ext
import
wtf
from
wtforms
import
fields
,
widgets
...
...
@@ -125,3 +127,17 @@ class DateTimePickerWidget(widgets.TextInput):
def
__call__
(
self
,
field
,
**
kwargs
):
kwargs
[
'data-role'
]
=
u'datetimepicker'
return
super
(
DateTimePickerWidget
,
self
)
.
__call__
(
field
,
**
kwargs
)
class
RenderTemplateWidget
(
object
):
def
__init__
(
self
,
template
):
self
.
template
=
template
def
__call__
(
self
,
field
,
**
kwargs
):
ctx
=
_request_ctx_stack
.
top
jinja_env
=
ctx
.
app
.
jinja_env
kwargs
[
'field'
]
=
field
template
=
jinja_env
.
get_template
(
self
.
template
)
return
template
.
render
(
kwargs
)
flask_admin/model/widgets.py
View file @
81555678
from
flask.globals
import
_request_ctx_stack
class
RenderTemplateWidget
(
object
):
def
__init__
(
self
,
template
):
self
.
template
=
template
def
__call__
(
self
,
field
,
**
kwargs
):
ctx
=
_request_ctx_stack
.
top
jinja_env
=
ctx
.
app
.
jinja_env
print
kwargs
kwargs
[
'field'
]
=
field
template
=
jinja_env
.
get_template
(
self
.
template
)
return
template
.
render
(
kwargs
)
from
flask.ext.admin.form
import
RenderTemplateWidget
class
InlineFormListWidget
(
RenderTemplateWidget
):
...
...
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