Skip to content

Commit 00a920f

Browse files
committed
Fix sort_by_order crash when order is None
Fix sort_by_order crashing if order is None Add a test for this No refs
1 parent 5a3eb52 commit 00a920f

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

django_sorting_field/utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@
66
def clean_order_json(value):
77
value = "[]" if value is None else value
88

9+
if not isinstance(value, six.string_types):
10+
return value
11+
912
try:
1013
return json.loads(value)
1114
except ValueError:
1215
return []
1316

1417

1518
def iterate_in_order(items, order):
16-
# In case our order is still in json format
17-
if isinstance(order, six.string_types):
18-
order = clean_order_json(order)
19-
19+
order = clean_order_json(order)
2020
items_by_id = {item.id: item for item in items}
2121

2222
# Return items that are ordered first
@@ -26,7 +26,7 @@ def iterate_in_order(items, order):
2626
yield items_by_id.pop(entry)
2727

2828
# Return the rest
29-
for identifier, item in items_by_id.iteritems():
29+
for identifier, item in items_by_id.items():
3030
yield item
3131

3232

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from django_sorting_field.utils import sort_by_order
2+
3+
4+
class DummyItem(object):
5+
6+
def __init__(self, item_id):
7+
self.id = item_id
8+
9+
10+
def test_sort_by_order_none():
11+
items = [
12+
DummyItem(0),
13+
DummyItem(1),
14+
DummyItem(2),
15+
]
16+
sorted_items = sort_by_order(items, None)
17+
assert sorted_items[0].id == 0
18+
assert sorted_items[1].id == 1
19+
assert sorted_items[2].id == 2

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ include_package_data = True
1212
packages = find:
1313
install_requires =
1414
django
15+
six
1516

1617
[bdist_wheel]
1718
universal = 1

0 commit comments

Comments
 (0)