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
53690bfb
Commit
53690bfb
authored
Jun 19, 2015
by
Paul Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #901 from pawl/fix_editable_pk2
Allow primary keys with special characters in editable list view
parents
53cc248f
2648dec9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
9 deletions
+42
-9
fields.py
flask_admin/model/fields.py
+5
-5
test_basic.py
flask_admin/tests/sqla/test_basic.py
+37
-4
No files found.
flask_admin/model/fields.py
View file @
53690bfb
...
...
@@ -141,11 +141,11 @@ class ListEditableFieldList(FieldList):
def
_extract_indices
(
self
,
prefix
,
formdata
):
offset
=
len
(
prefix
)
+
1
for
k
in
formdata
:
if
k
.
startswith
(
prefix
):
k
=
k
[
offset
:]
.
split
(
'-'
,
1
)[
0
]
#
removed "if k.isdigit():"
yield
k
for
name
in
formdata
:
# selects only relevant field (not CSRF, other fields, etc)
if
name
.
startswith
(
prefix
):
#
exclude offset (prefix-), remaining text is the index
yield
name
[
offset
:]
def
_add_entry
(
self
,
formdata
=
None
,
data
=
unset_value
,
index
=
None
):
assert
not
self
.
max_entries
or
len
(
self
.
entries
)
<
self
.
max_entries
,
\
...
...
flask_admin/tests/sqla/test_basic.py
View file @
53690bfb
...
...
@@ -118,7 +118,6 @@ def fill_db(db, Model1, Model2):
def
test_model
():
app
,
db
,
admin
=
setup
()
Model1
,
Model2
=
create_models
(
db
)
db
.
create_all
()
view
=
CustomModelView
(
Model1
,
db
.
session
)
admin
.
add_view
(
view
)
...
...
@@ -408,6 +407,43 @@ def test_column_editable_list():
ok_
(
'test1_val_3'
in
data
)
def
test_editable_list_special_pks
():
''' Tests editable list view + a primary key with special characters
'''
app
,
db
,
admin
=
setup
()
class
Model1
(
db
.
Model
):
def
__init__
(
self
,
id
=
None
,
val1
=
None
):
self
.
id
=
id
self
.
val1
=
val1
id
=
db
.
Column
(
db
.
String
(
20
),
primary_key
=
True
)
val1
=
db
.
Column
(
db
.
String
(
20
))
db
.
create_all
()
view
=
CustomModelView
(
Model1
,
db
.
session
,
column_editable_list
=
[
'val1'
])
admin
.
add_view
(
view
)
db
.
session
.
add
(
Model1
(
'1-1'
,
'test1'
))
db
.
session
.
add
(
Model1
(
'1-5'
,
'test2'
))
db
.
session
.
commit
()
client
=
app
.
test_client
()
# Form - Test basic in-line edit functionality
rv
=
client
.
post
(
'/admin/model1/ajax/update/'
,
data
=
{
'val1-1-1'
:
'change-success-1'
,
})
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'Record was successfully saved.'
==
data
)
# ensure the value has changed
rv
=
client
.
get
(
'/admin/model1/'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'change-success-1'
in
data
)
def
test_column_filters
():
app
,
db
,
admin
=
setup
()
...
...
@@ -1301,7 +1337,6 @@ def test_relations():
def
test_on_model_change_delete
():
app
,
db
,
admin
=
setup
()
Model1
,
_
=
create_models
(
db
)
db
.
create_all
()
class
ModelView
(
CustomModelView
):
def
on_model_change
(
self
,
form
,
model
,
is_created
):
...
...
@@ -1666,7 +1701,6 @@ def test_ajax_fk_multi():
def
test_safe_redirect
():
app
,
db
,
admin
=
setup
()
Model1
,
_
=
create_models
(
db
)
db
.
create_all
()
view
=
CustomModelView
(
Model1
,
db
.
session
)
admin
.
add_view
(
view
)
...
...
@@ -1693,7 +1727,6 @@ def test_safe_redirect():
def
test_simple_list_pager
():
app
,
db
,
admin
=
setup
()
Model1
,
_
=
create_models
(
db
)
db
.
create_all
()
class
TestModelView
(
CustomModelView
):
simple_list_pager
=
True
...
...
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