From 600c8b3e65e552113df330b0436999e54a437ff9 Mon Sep 17 00:00:00 2001 From: Denis Ledoux Date: Mon, 4 Feb 2019 14:01:22 +0000 Subject: [PATCH] [IMP] fields: faster `record.id` access This is a partial backport of revision ed32700925132943fc4957ae2f43deaeeec7a278 to speed up the access of browse record id field. --- odoo/fields.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/odoo/fields.py b/odoo/fields.py index 326b3dc15a3..271e779c47c 100644 --- a/odoo/fields.py +++ b/odoo/fields.py @@ -2528,9 +2528,15 @@ class Id(Field): def __get__(self, record, owner): if record is None: return self # the field is accessed through the class owner - if not record: + + # the code below is written to make record.id as quick as possible + ids = record._ids + size = len(ids) + if size is 0: return False - return record.ensure_one()._ids[0] + elif size is 1: + return ids[0] + raise ValueError("Expected singleton: %s" % record) def __set__(self, record, value): raise TypeError("field 'id' cannot be assigned")