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
ed7fe40c
Commit
ed7fe40c
authored
Jun 15, 2013
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Python 3 cleanup
parent
d72d381a
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
38 additions
and
35 deletions
+38
-35
base.py
flask_admin/base.py
+4
-3
fileadmin.py
flask_admin/contrib/fileadmin.py
+3
-2
view.py
flask_admin/contrib/mongoengine/view.py
+5
-5
form.py
flask_admin/contrib/peeweemodel/form.py
+3
-2
view.py
flask_admin/contrib/peeweemodel/view.py
+7
-7
view.py
flask_admin/contrib/pymongo/view.py
+2
-2
view.py
flask_admin/contrib/sqlamodel/view.py
+6
-6
form.py
flask_admin/form.py
+2
-2
fields.py
flask_admin/model/fields.py
+2
-2
form.py
flask_admin/model/form.py
+2
-2
test_basic.py
flask_admin/tests/peeweemodel/test_basic.py
+2
-2
No files found.
flask_admin/base.py
View file @
ed7fe40c
...
@@ -2,7 +2,8 @@ from functools import wraps
...
@@ -2,7 +2,8 @@ from functools import wraps
from
re
import
sub
from
re
import
sub
from
flask
import
Blueprint
,
render_template
,
url_for
,
abort
,
g
from
flask
import
Blueprint
,
render_template
,
url_for
,
abort
,
g
from
flask.ext.admin
import
babel
,
_compat
from
flask.ext.admin
import
babel
from
flask.ext.admin._compat
import
with_metaclass
from
flask.ext.admin
import
helpers
as
h
from
flask.ext.admin
import
helpers
as
h
...
@@ -90,11 +91,11 @@ class AdminViewMeta(type):
...
@@ -90,11 +91,11 @@ class AdminViewMeta(type):
setattr
(
cls
,
p
,
_wrap_view
(
attr
))
setattr
(
cls
,
p
,
_wrap_view
(
attr
))
class
BaseClass
(
object
):
class
Base
View
Class
(
object
):
pass
pass
class
BaseView
(
_compat
.
with_metaclass
(
AdminViewMeta
,
Base
Class
)):
class
BaseView
(
with_metaclass
(
AdminViewMeta
,
BaseView
Class
)):
"""
"""
Base administrative view.
Base administrative view.
...
...
flask_admin/contrib/fileadmin.py
View file @
ed7fe40c
...
@@ -11,7 +11,8 @@ from flask import flash, url_for, redirect, abort, request
...
@@ -11,7 +11,8 @@ from flask import flash, url_for, redirect, abort, request
from
wtforms
import
fields
,
validators
from
wtforms
import
fields
,
validators
from
flask.ext.admin
import
form
,
helpers
,
_compat
from
flask.ext.admin
import
form
,
helpers
from
flask.ext.admin._compat
import
urljoin
from
flask.ext.admin.base
import
BaseView
,
expose
from
flask.ext.admin.base
import
BaseView
,
expose
from
flask.ext.admin.actions
import
action
,
ActionsMixin
from
flask.ext.admin.actions
import
action
,
ActionsMixin
from
flask.ext.admin.babel
import
gettext
,
lazy_gettext
from
flask.ext.admin.babel
import
gettext
,
lazy_gettext
...
@@ -312,7 +313,7 @@ class FileAdmin(BaseView, ActionsMixin):
...
@@ -312,7 +313,7 @@ class FileAdmin(BaseView, ActionsMixin):
return
url_for
(
".edit"
,
path
=
path
)
return
url_for
(
".edit"
,
path
=
path
)
else
:
else
:
base_url
=
self
.
get_base_url
()
base_url
=
self
.
get_base_url
()
return
_compat
.
urljoin
(
base_url
,
path
)
return
urljoin
(
base_url
,
path
)
def
_normalize_path
(
self
,
path
):
def
_normalize_path
(
self
,
path
):
"""
"""
...
...
flask_admin/contrib/mongoengine/view.py
View file @
ed7fe40c
...
@@ -4,7 +4,7 @@ from flask import flash
...
@@ -4,7 +4,7 @@ from flask import flash
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.model
import
BaseModelView
from
flask.ext.admin.model
import
BaseModelView
from
flask.ext.admin
import
_compat
from
flask.ext.admin
._compat
import
iteritems
,
string_types
import
mongoengine
import
mongoengine
from
bson.objectid
import
ObjectId
from
bson.objectid
import
ObjectId
...
@@ -116,7 +116,7 @@ class ModelView(BaseModelView):
...
@@ -116,7 +116,7 @@ class ModelView(BaseModelView):
if
model
is
None
:
if
model
is
None
:
model
=
self
.
model
model
=
self
.
model
return
sorted
(
_compat
.
iteritems
(
model
.
_fields
),
key
=
lambda
n
:
n
[
1
]
.
creation_counter
)
return
sorted
(
iteritems
(
model
.
_fields
),
key
=
lambda
n
:
n
[
1
]
.
creation_counter
)
def
scaffold_pk
(
self
):
def
scaffold_pk
(
self
):
# MongoEngine models have predefined 'id' as a key
# MongoEngine models have predefined 'id' as a key
...
@@ -172,7 +172,7 @@ class ModelView(BaseModelView):
...
@@ -172,7 +172,7 @@ class ModelView(BaseModelView):
"""
"""
if
self
.
column_searchable_list
:
if
self
.
column_searchable_list
:
for
p
in
self
.
column_searchable_list
:
for
p
in
self
.
column_searchable_list
:
if
isinstance
(
p
,
_compat
.
string_types
):
if
isinstance
(
p
,
string_types
):
p
=
self
.
model
.
_fields
.
get
(
p
)
p
=
self
.
model
.
_fields
.
get
(
p
)
if
p
is
None
:
if
p
is
None
:
...
@@ -196,7 +196,7 @@ class ModelView(BaseModelView):
...
@@ -196,7 +196,7 @@ class ModelView(BaseModelView):
:param name:
:param name:
Either field name or field instance
Either field name or field instance
"""
"""
if
isinstance
(
name
,
_compat
.
string_types
):
if
isinstance
(
name
,
string_types
):
attr
=
self
.
model
.
_fields
.
get
(
name
)
attr
=
self
.
model
.
_fields
.
get
(
name
)
else
:
else
:
attr
=
name
attr
=
name
...
@@ -207,7 +207,7 @@ class ModelView(BaseModelView):
...
@@ -207,7 +207,7 @@ class ModelView(BaseModelView):
# Find name
# Find name
visible_name
=
None
visible_name
=
None
if
not
isinstance
(
name
,
_compat
.
string_types
):
if
not
isinstance
(
name
,
string_types
):
visible_name
=
self
.
get_column_name
(
attr
.
name
)
visible_name
=
self
.
get_column_name
(
attr
.
name
)
if
not
visible_name
:
if
not
visible_name
:
...
...
flask_admin/contrib/peeweemodel/form.py
View file @
ed7fe40c
...
@@ -5,7 +5,8 @@ from peewee import (DateTimeField, DateField, TimeField,
...
@@ -5,7 +5,8 @@ from peewee import (DateTimeField, DateField, TimeField,
from
wtfpeewee.orm
import
ModelConverter
,
model_form
from
wtfpeewee.orm
import
ModelConverter
,
model_form
from
flask.ext.admin
import
form
,
_compat
from
flask.ext.admin
import
form
from
flask.ext.admin._compat
import
itervalues
from
flask.ext.admin.model.form
import
InlineFormAdmin
,
InlineModelConverterBase
from
flask.ext.admin.model.form
import
InlineFormAdmin
,
InlineModelConverterBase
from
flask.ext.admin.model.fields
import
InlineModelFormField
,
InlineFieldList
from
flask.ext.admin.model.fields
import
InlineModelFormField
,
InlineFieldList
...
@@ -164,6 +165,6 @@ class InlineModelConverter(InlineModelConverterBase):
...
@@ -164,6 +165,6 @@ class InlineModelConverter(InlineModelConverterBase):
def
save_inline
(
form
,
model
):
def
save_inline
(
form
,
model
):
for
f
in
_compat
.
itervalues
(
form
.
_fields
):
for
f
in
itervalues
(
form
.
_fields
):
if
f
.
type
==
'InlineModelFormList'
:
if
f
.
type
==
'InlineModelFormList'
:
f
.
save_related
(
model
)
f
.
save_related
(
model
)
flask_admin/contrib/peeweemodel/view.py
View file @
ed7fe40c
...
@@ -2,7 +2,8 @@ import logging
...
@@ -2,7 +2,8 @@ import logging
from
flask
import
flash
from
flask
import
flash
from
flask.ext.admin
import
form
,
_compat
from
flask.ext.admin
import
form
from
flask.ext.admin._compat
import
string_types
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.model
import
BaseModelView
from
flask.ext.admin.model
import
BaseModelView
...
@@ -173,14 +174,13 @@ class ModelView(BaseModelView):
...
@@ -173,14 +174,13 @@ class ModelView(BaseModelView):
def
init_search
(
self
):
def
init_search
(
self
):
if
self
.
column_searchable_list
:
if
self
.
column_searchable_list
:
for
p
in
self
.
column_searchable_list
:
for
p
in
self
.
column_searchable_list
:
if
isinstance
(
p
,
_compat
.
string_types
):
if
isinstance
(
p
,
string_types
):
p
=
getattr
(
self
.
model
,
p
)
p
=
getattr
(
self
.
model
,
p
)
field_type
=
type
(
p
)
field_type
=
type
(
p
)
# Check type
# Check type
if
(
field_type
!=
CharField
and
if
(
field_type
!=
CharField
and
field_type
!=
TextField
):
field_type
!=
TextField
):
raise
Exception
(
'Can only search on text columns. '
+
raise
Exception
(
'Can only search on text columns. '
+
'Failed to setup search for "
%
s"'
%
p
)
'Failed to setup search for "
%
s"'
%
p
)
...
@@ -189,7 +189,7 @@ class ModelView(BaseModelView):
...
@@ -189,7 +189,7 @@ class ModelView(BaseModelView):
return
bool
(
self
.
_search_fields
)
return
bool
(
self
.
_search_fields
)
def
scaffold_filters
(
self
,
name
):
def
scaffold_filters
(
self
,
name
):
if
isinstance
(
name
,
_compat
.
string_types
):
if
isinstance
(
name
,
string_types
):
attr
=
getattr
(
self
.
model
,
name
,
None
)
attr
=
getattr
(
self
.
model
,
name
,
None
)
else
:
else
:
attr
=
name
attr
=
name
...
@@ -202,7 +202,7 @@ class ModelView(BaseModelView):
...
@@ -202,7 +202,7 @@ class ModelView(BaseModelView):
visible_name
=
'
%
s /
%
s'
%
(
self
.
get_column_name
(
attr
.
model_class
.
__name__
),
visible_name
=
'
%
s /
%
s'
%
(
self
.
get_column_name
(
attr
.
model_class
.
__name__
),
self
.
get_column_name
(
attr
.
name
))
self
.
get_column_name
(
attr
.
name
))
else
:
else
:
if
not
isinstance
(
name
,
_compat
.
string_types
):
if
not
isinstance
(
name
,
string_types
):
visible_name
=
self
.
get_column_name
(
attr
.
name
)
visible_name
=
self
.
get_column_name
(
attr
.
name
)
else
:
else
:
visible_name
=
self
.
get_column_name
(
name
)
visible_name
=
self
.
get_column_name
(
name
)
...
@@ -253,7 +253,7 @@ class ModelView(BaseModelView):
...
@@ -253,7 +253,7 @@ class ModelView(BaseModelView):
return
query
return
query
def
_order_by
(
self
,
query
,
joins
,
sort_field
,
sort_desc
):
def
_order_by
(
self
,
query
,
joins
,
sort_field
,
sort_desc
):
if
isinstance
(
sort_field
,
_compat
.
string_types
):
if
isinstance
(
sort_field
,
string_types
):
field
=
getattr
(
self
.
model
,
sort_field
)
field
=
getattr
(
self
.
model
,
sort_field
)
query
=
query
.
order_by
(
field
.
desc
()
if
sort_desc
else
field
.
asc
())
query
=
query
.
order_by
(
field
.
desc
()
if
sort_desc
else
field
.
asc
())
elif
isinstance
(
sort_field
,
Field
):
elif
isinstance
(
sort_field
,
Field
):
...
...
flask_admin/contrib/pymongo/view.py
View file @
ed7fe40c
...
@@ -6,7 +6,7 @@ from bson.errors import InvalidId
...
@@ -6,7 +6,7 @@ from bson.errors import InvalidId
from
flask
import
flash
from
flask
import
flash
from
flask.ext.admin
import
_compat
from
flask.ext.admin
._compat
import
string_types
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.model
import
BaseModelView
from
flask.ext.admin.model
import
BaseModelView
from
flask.ext.admin.actions
import
action
from
flask.ext.admin.actions
import
action
...
@@ -92,7 +92,7 @@ class ModelView(BaseModelView):
...
@@ -92,7 +92,7 @@ class ModelView(BaseModelView):
"""
"""
if
self
.
column_searchable_list
:
if
self
.
column_searchable_list
:
for
p
in
self
.
column_searchable_list
:
for
p
in
self
.
column_searchable_list
:
if
not
isinstance
(
p
,
_compat
.
string_types
):
if
not
isinstance
(
p
,
string_types
):
raise
ValueError
(
'Expected string'
)
raise
ValueError
(
'Expected string'
)
# TODO: Validation?
# TODO: Validation?
...
...
flask_admin/contrib/sqlamodel/view.py
View file @
ed7fe40c
...
@@ -7,7 +7,7 @@ from sqlalchemy import or_, Column, func
...
@@ -7,7 +7,7 @@ from sqlalchemy import or_, Column, func
from
flask
import
flash
from
flask
import
flash
from
flask.ext.admin
import
_compat
from
flask.ext.admin
._compat
import
string_types
from
flask.ext.admin.tools
import
ObsoleteAttr
from
flask.ext.admin.tools
import
ObsoleteAttr
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.babel
import
gettext
,
ngettext
,
lazy_gettext
from
flask.ext.admin.model
import
BaseModelView
from
flask.ext.admin.model
import
BaseModelView
...
@@ -349,7 +349,7 @@ class ModelView(BaseModelView):
...
@@ -349,7 +349,7 @@ class ModelView(BaseModelView):
return
columns
return
columns
def
_get_columns_for_field
(
self
,
field
):
def
_get_columns_for_field
(
self
,
field
):
if
isinstance
(
field
,
_compat
.
string_types
):
if
isinstance
(
field
,
string_types
):
attr
=
getattr
(
self
.
model
,
field
,
None
)
attr
=
getattr
(
self
.
model
,
field
,
None
)
if
field
is
None
:
if
field
is
None
:
...
@@ -411,7 +411,7 @@ class ModelView(BaseModelView):
...
@@ -411,7 +411,7 @@ class ModelView(BaseModelView):
"""
"""
join_tables
=
[]
join_tables
=
[]
if
isinstance
(
name
,
_compat
.
string_types
):
if
isinstance
(
name
,
string_types
):
model
=
self
.
model
model
=
self
.
model
for
attribute
in
name
.
split
(
'.'
):
for
attribute
in
name
.
split
(
'.'
):
...
@@ -475,7 +475,7 @@ class ModelView(BaseModelView):
...
@@ -475,7 +475,7 @@ class ModelView(BaseModelView):
self
.
get_column_name
(
column
.
name
)
self
.
get_column_name
(
column
.
name
)
)
)
else
:
else
:
if
not
isinstance
(
name
,
_compat
.
string_types
):
if
not
isinstance
(
name
,
string_types
):
visible_name
=
self
.
get_column_name
(
name
.
property
.
key
)
visible_name
=
self
.
get_column_name
(
name
.
property
.
key
)
else
:
else
:
visible_name
=
self
.
get_column_name
(
name
)
visible_name
=
self
.
get_column_name
(
name
)
...
@@ -597,7 +597,7 @@ class ModelView(BaseModelView):
...
@@ -597,7 +597,7 @@ class ModelView(BaseModelView):
"""
"""
# TODO: Preprocessing for joins
# TODO: Preprocessing for joins
# Try to handle it as a string
# Try to handle it as a string
if
isinstance
(
sort_field
,
_compat
.
string_types
):
if
isinstance
(
sort_field
,
string_types
):
# Create automatic join against a table if column name
# Create automatic join against a table if column name
# contains dot.
# contains dot.
if
'.'
in
sort_field
:
if
'.'
in
sort_field
:
...
@@ -638,7 +638,7 @@ class ModelView(BaseModelView):
...
@@ -638,7 +638,7 @@ class ModelView(BaseModelView):
if
order
is
not
None
:
if
order
is
not
None
:
field
,
direction
=
order
field
,
direction
=
order
if
isinstance
(
field
,
_compat
.
string_types
):
if
isinstance
(
field
,
string_types
):
field
=
getattr
(
self
.
model
,
field
)
field
=
getattr
(
self
.
model
,
field
)
return
field
,
direction
return
field
,
direction
...
...
flask_admin/form.py
View file @
ed7fe40c
...
@@ -5,7 +5,7 @@ from wtforms import form, fields, widgets
...
@@ -5,7 +5,7 @@ from wtforms import form, fields, widgets
from
flask.globals
import
_request_ctx_stack
from
flask.globals
import
_request_ctx_stack
from
flask.ext.admin.babel
import
gettext
,
ngettext
from
flask.ext.admin.babel
import
gettext
,
ngettext
from
flask.ext.admin
import
helpers
as
h
from
flask.ext.admin
import
helpers
as
h
from
flask.ext.admin
import
_compat
from
flask.ext.admin
._compat
import
text_type
# TODO: Use flask.ext.wtf if possible
# TODO: Use flask.ext.wtf if possible
...
@@ -92,7 +92,7 @@ class Select2Field(fields.SelectField):
...
@@ -92,7 +92,7 @@ class Select2Field(fields.SelectField):
"""
"""
widget
=
Select2Widget
()
widget
=
Select2Widget
()
def
__init__
(
self
,
label
=
None
,
validators
=
None
,
coerce
=
_compat
.
text_type
,
def
__init__
(
self
,
label
=
None
,
validators
=
None
,
coerce
=
text_type
,
choices
=
None
,
allow_blank
=
False
,
blank_text
=
None
,
**
kwargs
):
choices
=
None
,
allow_blank
=
False
,
blank_text
=
None
,
**
kwargs
):
super
(
Select2Field
,
self
)
.
__init__
(
super
(
Select2Field
,
self
)
.
__init__
(
label
,
validators
,
coerce
,
choices
,
**
kwargs
label
,
validators
,
coerce
,
choices
,
**
kwargs
...
...
flask_admin/model/fields.py
View file @
ed7fe40c
...
@@ -2,7 +2,7 @@ import itertools
...
@@ -2,7 +2,7 @@ import itertools
from
wtforms.fields
import
FieldList
,
FormField
from
wtforms.fields
import
FieldList
,
FormField
from
flask.ext.admin
import
_compat
from
flask.ext.admin
._compat
import
iteritems
from
.widgets
import
InlineFieldListWidget
,
InlineFormWidget
from
.widgets
import
InlineFieldListWidget
,
InlineFormWidget
...
@@ -83,7 +83,7 @@ class InlineModelFormField(FormField):
...
@@ -83,7 +83,7 @@ class InlineModelFormField(FormField):
return
getattr
(
self
.
form
,
self
.
_pk
)
.
data
return
getattr
(
self
.
form
,
self
.
_pk
)
.
data
def
populate_obj
(
self
,
obj
,
name
):
def
populate_obj
(
self
,
obj
,
name
):
for
name
,
field
in
_compat
.
iteritems
(
self
.
form
.
_fields
):
for
name
,
field
in
iteritems
(
self
.
form
.
_fields
):
if
name
!=
self
.
_pk
:
if
name
!=
self
.
_pk
:
field
.
populate_obj
(
obj
,
name
)
field
.
populate_obj
(
obj
,
name
)
...
...
flask_admin/model/form.py
View file @
ed7fe40c
import
inspect
import
inspect
from
flask.ext.admin.form
import
BaseForm
from
flask.ext.admin.form
import
BaseForm
from
flask.ext.admin
import
_compat
from
flask.ext.admin
._compat
import
iteritems
def
converts
(
*
args
):
def
converts
(
*
args
):
...
@@ -38,7 +38,7 @@ class InlineFormAdmin(object):
...
@@ -38,7 +38,7 @@ class InlineFormAdmin(object):
if
not
hasattr
(
self
,
k
):
if
not
hasattr
(
self
,
k
):
setattr
(
self
,
k
,
None
)
setattr
(
self
,
k
,
None
)
for
k
,
v
in
_compat
.
iteritems
(
kwargs
):
for
k
,
v
in
iteritems
(
kwargs
):
setattr
(
self
,
k
,
v
)
setattr
(
self
,
k
,
v
)
def
postprocess_form
(
self
,
form_class
):
def
postprocess_form
(
self
,
form_class
):
...
...
flask_admin/tests/peeweemodel/test_basic.py
View file @
ed7fe40c
...
@@ -4,7 +4,7 @@ import peewee
...
@@ -4,7 +4,7 @@ import peewee
from
wtforms
import
fields
from
wtforms
import
fields
from
flask.ext.admin
import
_compat
from
flask.ext.admin
._compat
import
iteritems
from
flask.ext.admin.contrib.peeweemodel
import
ModelView
from
flask.ext.admin.contrib.peeweemodel
import
ModelView
from
.
import
setup
from
.
import
setup
...
@@ -14,7 +14,7 @@ class CustomModelView(ModelView):
...
@@ -14,7 +14,7 @@ class CustomModelView(ModelView):
def
__init__
(
self
,
model
,
def
__init__
(
self
,
model
,
name
=
None
,
category
=
None
,
endpoint
=
None
,
url
=
None
,
name
=
None
,
category
=
None
,
endpoint
=
None
,
url
=
None
,
**
kwargs
):
**
kwargs
):
for
k
,
v
in
_compat
.
iteritems
(
kwargs
):
for
k
,
v
in
iteritems
(
kwargs
):
setattr
(
self
,
k
,
v
)
setattr
(
self
,
k
,
v
)
super
(
CustomModelView
,
self
)
.
__init__
(
model
,
super
(
CustomModelView
,
self
)
.
__init__
(
model
,
...
...
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