From d621d2651689f3e67f00c020d0df23bb7a5e42d5 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Fri, 19 Apr 2013 16:54:17 +0200 Subject: [PATCH] [FIX] orm, _generate_order_by(): allow to order by LOG_ACCESS_COLUMNS even if the column is not defined again in self._columns. Raising an error instead of silently skipping the order_by bzr revid: qdp-launchpad@openerp.com-20130419145417-2tix8ynmx51qiqkf --- openerp/osv/orm.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 1296472fd95..870efd3dd8b 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -4792,8 +4792,8 @@ class BaseModel(object): order_field = order_split[0].strip() order_direction = order_split[1].strip() if len(order_split) == 2 else '' inner_clause = None - if order_field == 'id': - order_by_elements.append('"%s"."id" %s' % (self._table, order_direction)) + if order_field == 'id' or (self._log_access and order_field in LOG_ACCESS_COLUMNS.keys()): + order_by_elements.append('"%s"."%s" %s' % (self._table, order_field, order_direction)) elif order_field in self._columns: order_column = self._columns[order_field] if order_column._classic_read: @@ -4811,6 +4811,8 @@ class BaseModel(object): inner_clause = self._generate_m2o_order_by(order_field, query) else: continue # ignore non-readable or "non-joinable" fields + else: + raise ValueError( _("Sorting field %s not found on model %s") %( order_field, self._name)) if inner_clause: if isinstance(inner_clause, list): for clause in inner_clause: