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
2313bb05
Commit
2313bb05
authored
Oct 27, 2016
by
Serge S. Koval
Committed by
GitHub
Oct 27, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1382 from vToMy/feature/enum34_filter
Added support for sqlalchemy_enum34 filters
parents
23cd4631
593d2567
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
62 additions
and
2 deletions
+62
-2
filters.py
flask_admin/contrib/sqla/filters.py
+62
-2
No files found.
flask_admin/contrib/sqla/filters.py
View file @
2313bb05
...
...
@@ -287,6 +287,58 @@ class TimeNotBetweenFilter(TimeBetweenFilter):
return
lazy_gettext
(
'not between'
)
class
EnumEqualFilter
(
FilterEqual
):
def
__init__
(
self
,
column
,
name
,
options
=
None
,
enum_class
=
None
,
**
kwargs
):
self
.
enum_class
=
enum_class
super
(
EnumEqualFilter
,
self
)
.
__init__
(
column
,
name
,
options
,
**
kwargs
)
def
clean
(
self
,
value
):
if
self
.
enum_class
is
None
:
return
super
(
EnumEqualFilter
,
self
)
.
clean
(
value
)
return
self
.
enum_class
(
value
)
class
EnumFilterNotEqual
(
FilterNotEqual
):
def
__init__
(
self
,
column
,
name
,
options
=
None
,
enum_class
=
None
,
**
kwargs
):
self
.
enum_class
=
enum_class
super
(
EnumFilterNotEqual
,
self
)
.
__init__
(
column
,
name
,
options
,
**
kwargs
)
def
clean
(
self
,
value
):
if
self
.
enum_class
is
None
:
return
super
(
EnumFilterNotEqual
,
self
)
.
clean
(
value
)
return
self
.
enum_class
(
value
)
class
EnumFilterEmpty
(
FilterEmpty
):
def
__init__
(
self
,
column
,
name
,
options
=
None
,
enum_class
=
None
,
**
kwargs
):
self
.
enum_class
=
enum_class
super
(
EnumFilterEmpty
,
self
)
.
__init__
(
column
,
name
,
options
,
**
kwargs
)
class
EnumFilterInList
(
FilterInList
):
def
__init__
(
self
,
column
,
name
,
options
=
None
,
enum_class
=
None
,
**
kwargs
):
self
.
enum_class
=
enum_class
super
(
EnumFilterInList
,
self
)
.
__init__
(
column
,
name
,
options
,
**
kwargs
)
def
clean
(
self
,
value
):
values
=
super
(
EnumFilterInList
,
self
)
.
clean
(
value
)
if
self
.
enum_class
is
not
None
:
values
=
[
self
.
enum_class
(
value
)
for
value
in
values
]
return
values
class
EnumFilterNotInList
(
FilterNotInList
):
def
__init__
(
self
,
column
,
name
,
options
=
None
,
enum_class
=
None
,
**
kwargs
):
self
.
enum_class
=
enum_class
super
(
EnumFilterNotInList
,
self
)
.
__init__
(
column
,
name
,
options
,
**
kwargs
)
def
clean
(
self
,
value
):
values
=
super
(
EnumFilterNotInList
,
self
)
.
clean
(
value
)
if
self
.
enum_class
is
not
None
:
values
=
[
self
.
enum_class
(
value
)
for
value
in
values
]
return
values
# Base SQLA filter field converter
class
FilterConverter
(
filters
.
BaseFilterConverter
):
strings
=
(
FilterLike
,
FilterNotLike
,
FilterEqual
,
FilterNotEqual
,
...
...
@@ -298,8 +350,8 @@ class FilterConverter(filters.BaseFilterConverter):
FloatSmallerFilter
,
FilterEmpty
,
FloatInListFilter
,
FloatNotInListFilter
)
bool_filters
=
(
BooleanEqualFilter
,
BooleanNotEqualFilter
)
enum
=
(
FilterEqual
,
FilterNotEqual
,
FilterEmpty
,
FilterInList
,
FilterNotInList
)
enum
=
(
EnumEqualFilter
,
EnumFilterNotEqual
,
EnumFilterEmpty
,
Enum
FilterInList
,
Enum
FilterNotInList
)
date_filters
=
(
DateEqualFilter
,
DateNotEqualFilter
,
DateGreaterFilter
,
DateSmallerFilter
,
DateBetweenFilter
,
DateNotBetweenFilter
,
FilterEmpty
)
...
...
@@ -357,4 +409,12 @@ class FilterConverter(filters.BaseFilterConverter):
(
v
,
v
)
for
v
in
column
.
type
.
enums
]
try
:
from
sqlalchemy_enum34
import
EnumType
except
ImportError
:
pass
else
:
if
isinstance
(
column
.
type
,
EnumType
):
kwargs
[
'enum_class'
]
=
column
.
type
.
_enum_class
return
[
f
(
column
,
name
,
options
,
**
kwargs
)
for
f
in
self
.
enum
]
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