diff --git a/wcs/fields.py b/wcs/fields.py
index 2467ac158..2df218771 100644
--- a/wcs/fields.py
+++ b/wcs/fields.py
@@ -21,6 +21,7 @@ import datetime
import time
import random
import re
+import sys
import base64
import xml.etree.ElementTree as ET
import collections
@@ -2262,8 +2263,8 @@ class RankedItemsField(WidgetField):
def get_view_value(self, value):
r = TemplateIO(html=True)
r += htmltext('
')
- items = value.items()
- items.sort(lambda x,y: cmp(x[1], y[1]))
+ items = list(value.items())
+ items.sort(key=lambda x: x[1] or sys.maxsize)
counter = 0
last_it = None
for it in items:
@@ -2276,8 +2277,8 @@ class RankedItemsField(WidgetField):
return r.getvalue()
def get_rst_view_value(self, value, indent=''):
- items = value.items()
- items.sort(lambda x,y: cmp(x[1], y[1]))
+ items = list(value.items())
+ items.sort(key=lambda x: x[1] or sys.maxsize)
counter = 0
last_it = None
values = []
diff --git a/wcs/qommon/form.py b/wcs/qommon/form.py
index 2400ac094..6afed9f04 100644
--- a/wcs/qommon/form.py
+++ b/wcs/qommon/form.py
@@ -22,6 +22,7 @@ import mimetypes
import os
import re
import socket
+import sys
import tempfile
import time
import random
@@ -1836,15 +1837,7 @@ class RankedItemsWidget(CompositeWidget):
random.shuffle(self.widgets)
if self.readonly:
- def cmp_w(x, y):
- if x.value is None and y.value is None:
- return 0
- if x.value is None:
- return 1
- if y.value is None:
- return -1
- return cmp(x.value, y.value)
- self.widgets.sort(cmp_w)
+ self.widgets.sort(key=lambda x: x.value or sys.maxsize)
if value:
# in readonly mode, we mark all fields as already parsed, to