From 067fd2f342486e6b9bec3201af38fece9bcf42e7 Mon Sep 17 00:00:00 2001 From: andreparames Date: Fri, 3 Jul 2015 15:20:01 +0100 Subject: [PATCH] [FIX] models: don't assume ids are ints in sorted() Some models (e.g. calendar.event), use "virtual" ids which are not represented as integers. It was not possible to use sorted method on those models as calling int() is failing. This commit fixes the method, making it agnostic to the type of the 'id' member variable. Fixes #7454 --- openerp/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openerp/models.py b/openerp/models.py index bb37f13fc3d..7cba1cf3d7e 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -50,6 +50,7 @@ import re import time from collections import defaultdict, MutableMapping from inspect import getmembers, currentframe +from operator import itemgetter import babel.dates import dateutil.relativedelta @@ -5391,7 +5392,7 @@ class BaseModel(object): recs = self.search([('id', 'in', self.ids)]) return self.browse(reversed(recs._ids)) if reverse else recs else: - return self.browse(map(int, sorted(self, key=key, reverse=reverse))) + return self.browse(map(itemgetter('id'), sorted(self, key=key, reverse=reverse))) def update(self, values): """ Update record `self[0]` with ``values``. """