Merge pull request #5225 from nsoranzo/fix_sort_sorted

Python3: fix list.sort() and sorted() to use `key` parameter instead of `cmp`
This commit is contained in:
John Chilton
2017-12-15 13:22:41 -05:00
committed by GitHub
3 changed files with 17 additions and 13 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ class HistoryQuery(object):
# (until we expose it to the user) will default to providing tool as much
# data as possible. So a list:list:paired mapped to a tool that takes
# list,paired,list:paired - will map over list:paired and create a flat list.
collection_type_descriptions = sorted(collection_type_descriptions, lambda t: t.dimension, reverse=True)
collection_type_descriptions = sorted(collection_type_descriptions, key=lambda t: t.dimension, reverse=True)
else:
collection_type_descriptions = None
@@ -54,6 +54,7 @@ class History(BaseUIController):
sort_by = kwd.get('sorting', 'User')
sorting = 0 if sort_by == 'User' else 1 if sort_by == "HSort" else 2 if sort_by == "DSort" else 3
descending = 1 if kwd.get('descending', 'desc') == 'desc' else -1
reverse = descending == 1
# select count (h.id) as history, u.email as email
# from history h, galaxy_user u
@@ -94,18 +95,18 @@ class History(BaseUIController):
datasets = dict([(_.email if _.email is not None else "Unknown", (int(_.dataset), int(_.size)))
for _ in datasets.execute()])
sorting_functions = [
lambda first, second: descending if first[0].lower() > second[0].lower() else -descending,
lambda first, second: descending if histories.get(first, 0) < histories.get(second, 0) else -descending,
lambda first, second: descending if datasets.get(first, [0])[0] < datasets.get(second, [0])[0] else -descending,
lambda first, second: descending if datasets.get(first, [0, 0])[1] < datasets.get(second, [0, 0])[1] else -descending
]
sort_keys = (
lambda v: v[0].lower(),
lambda v: histories.get(v, 0),
lambda v: datasets.get(v, [0])[0],
lambda v: datasets.get(v, [0][0])[1]
)
# fetch all users
users = list(set(histories.keys()) | set(datasets.keys()))
# sort users depending on sort function, defined by user choices
users.sort(sorting_functions[sorting])
users.sort(key=sort_keys[sorting], reverse=reverse)
if user_cutoff > 0:
users = users[:user_cutoff]
@@ -133,6 +134,7 @@ class History(BaseUIController):
message = escape(util.restore_text(kwd.get('message', '')))
user_cutoff = int(kwd.get('user_cutoff', 60))
descending = 1 if kwd.get('descending', 'desc') == 'desc' else -1
reverse = descending == 1
user_selection = kwd.get('user_selection', None)
# select d.state, h.name
@@ -159,7 +161,7 @@ class History(BaseUIController):
for _ in histories.execute()]
# sort by names descending or ascending
data.sort(lambda first, second: descending if first[0].lower() > second[0].lower() else -descending)
data.sort(key=lambda v: v[0].lower(), reverse=reverse)
# fetch names in the first list and status in the second
if data:
@@ -195,9 +195,11 @@ class Users(BaseUIController, ReportQueryBuilder):
user_cutoff = int(kwd.get('user_cutoff', 60))
sorting = 0 if kwd.get('sorting', 'User') == 'User' else 1
descending = 1 if kwd.get('descending', 'desc') == 'desc' else -1
sorting_functions = [
lambda first, second: descending if first[0].lower() > second[0].lower() else -descending,
lambda first, second: descending if first[1] < second[1] else -descending]
reverse = descending == 1
sort_keys = (
lambda v: v[0].lower(),
lambda v: v[1]
)
req = sa.select(
(sa.func.count(galaxy.model.History.table.c.id).label('history'),
@@ -208,7 +210,7 @@ class Users(BaseUIController, ReportQueryBuilder):
order_by=[sa.desc('username'), 'history'])
histories = [(_.username if _.username is not None else "Unknown", _.history) for _ in req.execute()]
histories.sort(sorting_functions[sorting])
histories.sort(key=sort_keys[sorting], reverse=reverse)
if user_cutoff != 0:
histories = histories[:user_cutoff]