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
94c417a9
Commit
94c417a9
authored
May 18, 2012
by
Mihail Krivushin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed sorting, search, M2M
parent
41714663
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
9 deletions
+11
-9
form.py
flask_admin/contrib/sqlamodel/form.py
+1
-1
view.py
flask_admin/contrib/sqlamodel/view.py
+10
-8
No files found.
flask_admin/contrib/sqlamodel/form.py
View file @
94c417a9
...
@@ -83,7 +83,7 @@ class AdminModelConverter(ModelConverter):
...
@@ -83,7 +83,7 @@ class AdminModelConverter(ModelConverter):
'query_factory'
:
lambda
:
self
.
view
.
session
.
query
(
remote_model
)
'query_factory'
:
lambda
:
self
.
view
.
session
.
query
(
remote_model
)
})
})
if
local_column
.
nullable
:
if
local_column
.
nullable
or
prop
.
direction
.
name
==
'MANYTOMANY'
:
kwargs
[
'validators'
]
.
append
(
validators
.
Optional
())
kwargs
[
'validators'
]
.
append
(
validators
.
Optional
())
elif
prop
.
direction
.
name
!=
'MANYTOMANY'
:
elif
prop
.
direction
.
name
!=
'MANYTOMANY'
:
kwargs
[
'validators'
]
.
append
(
validators
.
Required
())
kwargs
[
'validators'
]
.
append
(
validators
.
Required
())
...
...
flask_admin/contrib/sqlamodel/view.py
View file @
94c417a9
from
sqlalchemy.orm.attributes
import
InstrumentedAttribute
from
sqlalchemy.orm.attributes
import
InstrumentedAttribute
from
sqlalchemy.orm
import
subqueryload
from
sqlalchemy.orm
import
subqueryload
from
sqlalchemy.sql.expression
import
desc
from
sqlalchemy.sql.expression
import
desc
from
sqlalchemy
import
or_
from
sqlalchemy
import
or_
,
Column
from
wtforms.ext.sqlalchemy.orm
import
model_form
from
wtforms.ext.sqlalchemy.orm
import
model_form
from
flask
import
flash
from
flask
import
flash
...
@@ -229,7 +229,7 @@ class ModelView(BaseModelView):
...
@@ -229,7 +229,7 @@ class ModelView(BaseModelView):
if
column
.
foreign_keys
or
column
.
primary_key
:
if
column
.
foreign_keys
or
column
.
primary_key
:
continue
continue
columns
[
p
.
key
]
=
p
.
key
columns
[
p
.
key
]
=
column
return
columns
return
columns
...
@@ -260,7 +260,7 @@ class ModelView(BaseModelView):
...
@@ -260,7 +260,7 @@ class ModelView(BaseModelView):
"""
"""
if
self
.
searchable_columns
:
if
self
.
searchable_columns
:
self
.
_search_fields
=
[]
self
.
_search_fields
=
[]
self
.
_search_joins
_names
=
set
()
self
.
_search_joins
=
set
()
for
p
in
self
.
searchable_columns
:
for
p
in
self
.
searchable_columns
:
for
column
in
self
.
_get_columns_for_field
(
p
):
for
column
in
self
.
_get_columns_for_field
(
p
):
...
@@ -274,7 +274,7 @@ class ModelView(BaseModelView):
...
@@ -274,7 +274,7 @@ class ModelView(BaseModelView):
# If it belongs to different table - add a join
# If it belongs to different table - add a join
if
column
.
table
!=
self
.
model
.
__table__
:
if
column
.
table
!=
self
.
model
.
__table__
:
self
.
_search_joins
_names
.
add
(
column
.
table
.
nam
e
)
self
.
_search_joins
.
add
(
column
.
tabl
e
)
return
bool
(
self
.
searchable_columns
)
return
bool
(
self
.
searchable_columns
)
...
@@ -413,9 +413,9 @@ class ModelView(BaseModelView):
...
@@ -413,9 +413,9 @@ class ModelView(BaseModelView):
# Apply search criteria
# Apply search criteria
if
self
.
_search_supported
and
search
:
if
self
.
_search_supported
and
search
:
# Apply search-related joins
# Apply search-related joins
if
self
.
_search_joins
_names
:
if
self
.
_search_joins
:
query
=
query
.
join
(
*
self
.
_search_joins
_names
)
query
=
query
.
join
(
*
self
.
_search_joins
)
joins
|=
self
.
_search_joins
_names
joins
|=
self
.
_search_joins
# Apply terms
# Apply terms
terms
=
search
.
split
(
' '
)
terms
=
search
.
split
(
' '
)
...
@@ -470,8 +470,10 @@ class ModelView(BaseModelView):
...
@@ -470,8 +470,10 @@ class ModelView(BaseModelView):
if
table
.
name
not
in
joins
:
if
table
.
name
not
in
joins
:
query
=
query
.
join
(
table
)
query
=
query
.
join
(
table
)
joins
.
add
(
table
.
name
)
joins
.
add
(
table
.
name
)
elif
isinstance
(
sort_field
,
Column
):
pass
else
:
else
:
sort_field
=
None
raise
TypeError
(
'Wrong argument type'
)
if
sort_field
is
not
None
:
if
sort_field
is
not
None
:
if
sort_desc
:
if
sort_desc
:
...
...
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