From 09fe39c0b61e0ffa5f2a98f913e9770770bbc4db Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 31 Jul 2012 13:08:45 +0200 Subject: [PATCH 01/11] [IMP] rec_name assertion and fallback bzr revid: al@openerp.com-20120731110845-nt11isvr96tuc207 --- openerp/osv/orm.py | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index a62561fc95d..a18c4195dc2 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -657,7 +657,7 @@ class BaseModel(object): _columns = {} _constraints = [] _defaults = {} - _rec_name = 'name' + _rec_name = False _parent_name = 'parent_id' _parent_store = False _parent_order = False @@ -1054,6 +1054,13 @@ class BaseModel(object): assert self._log_access, "TransientModels must have log_access turned on, "\ "in order to implement their access rights policy" + # Validate rec_name + if self._rec_name: + assert self.rec_name in self._columns + else: + self._rec_name = 'name' + + def __export_row(self, cr, uid, row, fields, context=None): if context is None: context = {} @@ -1567,6 +1574,12 @@ class BaseModel(object): res.extend(self.pool.get(parent).fields_get_keys(cr, user, context)) return res + def _rec_name_fallback(self, cr, uid, context=None): + rec_name = self._rec_name + if rec_name not in self._columns: + rec_name = self._columns.keys()[0] if len(self._columns.keys()) > 0 else "id" + return rec_name + # # Overload this method if you need a window title which depends on the context # @@ -1859,8 +1872,7 @@ class BaseModel(object): return view def _get_default_search_view(self, cr, user, context=None): - """ Generates a single-field tree view, using _rec_name if - it's one of the columns or the first column it finds otherwise + """ Generates a single-field search view, based on _rec_name. :param cr: database cursor :param int user: user id @@ -1868,17 +1880,12 @@ class BaseModel(object): :returns: a tree view as an lxml document :rtype: etree._Element """ - _rec_name = self._rec_name - if _rec_name not in self._columns: - _rec_name = self._columns.keys()[0] if len(self._columns.keys()) > 0 else "id" - view = etree.Element('search', string=self._description) - etree.SubElement(view, 'field', name=_rec_name) + etree.SubElement(view, 'field', name=self._rec_name_fallback(cr,uid,context)) return view def _get_default_tree_view(self, cr, user, context=None): - """ Generates a single-field tree view, using _rec_name if - it's one of the columns or the first column it finds otherwise + """ Generates a single-field tree view, based on _rec_name. :param cr: database cursor :param int user: user id @@ -1886,12 +1893,8 @@ class BaseModel(object): :returns: a tree view as an lxml document :rtype: etree._Element """ - _rec_name = self._rec_name - if _rec_name not in self._columns: - _rec_name = self._columns.keys()[0] if len(self._columns.keys()) > 0 else "id" - view = etree.Element('tree', string=self._description) - etree.SubElement(view, 'field', name=_rec_name) + etree.SubElement(view, 'field', name=self._rec_name_fallback(cr,uid,context)) return view def _get_default_calendar_view(self, cr, user, context=None): @@ -1918,7 +1921,7 @@ class BaseModel(object): return False view = etree.Element('calendar', string=self._description) - etree.SubElement(view, 'field', name=self._rec_name) + etree.SubElement(view, 'field', self._rec_name_get(cr,uid,context)) if (self._date_name not in self._columns): date_found = False @@ -2276,8 +2279,13 @@ class BaseModel(object): return [] if isinstance(ids, (int, long)): ids = [ids] - return [(r['id'], tools.ustr(r[self._rec_name])) for r in self.read(cr, user, ids, - [self._rec_name], context, load='_classic_write')] + + rec_name = self._rec_name + if rec_name not in self._columns: + res = [(r['id'], "%s,%s"%(self._name,r['id'])) for r in self.read(cr, user, ids, ['id'], context, load='_classic_write')] + else: + res = [(r['id'], tools.ustr(r[rec_name])) for r in self.read(cr, user, ids, [rec_name], context, load='_classic_write')] + return res def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100): """Search for records that have a display name matching the given ``name`` pattern if compared From d375ee272e55d071920cec9f5092143d67b2ea4d Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 31 Jul 2012 14:06:21 +0200 Subject: [PATCH 02/11] [FIX] rec_name assertion and fallback bzr revid: al@openerp.com-20120731120621-11j7k7965d9sclp2 --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index a18c4195dc2..7570cb3d690 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1056,7 +1056,7 @@ class BaseModel(object): # Validate rec_name if self._rec_name: - assert self.rec_name in self._columns + assert self._rec_name in self._columns else: self._rec_name = 'name' From 8540dcf017fd21efca71dbc175127779cdcb78be Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 31 Jul 2012 14:25:57 +0200 Subject: [PATCH 03/11] [FIX] assertion message bzr revid: al@openerp.com-20120731122557-9ka14pw09x2fhmos --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 7570cb3d690..c5490a6a99c 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1056,7 +1056,7 @@ class BaseModel(object): # Validate rec_name if self._rec_name: - assert self._rec_name in self._columns + assert self._rec_name in self._columns.keys() + ['id'], "Invalid rec_name %s for model %s" % (self.rec_name, self._name) else: self._rec_name = 'name' From 4811011c7617101d840bcdcc2c965b45972b0ce1 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 31 Jul 2012 17:17:18 +0200 Subject: [PATCH 04/11] [FIX] typo bzr revid: al@openerp.com-20120731151718-g0fk33ycoapob13j --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index c5490a6a99c..5d2399309e0 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1056,7 +1056,7 @@ class BaseModel(object): # Validate rec_name if self._rec_name: - assert self._rec_name in self._columns.keys() + ['id'], "Invalid rec_name %s for model %s" % (self.rec_name, self._name) + assert self._rec_name in self._columns.keys() + ['id'], "Invalid rec_name %s for model %s" % (self._rec_name, self._name) else: self._rec_name = 'name' From 42859212faae2624cfe8eeb592d4836f50aa5ed2 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 31 Jul 2012 17:26:49 +0200 Subject: [PATCH 05/11] [FIX] typos and vmt review bzr revid: al@openerp.com-20120731152649-4mxph7d0cnlaqtef --- openerp/osv/orm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 5d2399309e0..2c73e811eeb 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -657,7 +657,7 @@ class BaseModel(object): _columns = {} _constraints = [] _defaults = {} - _rec_name = False + _rec_name = None _parent_name = 'parent_id' _parent_store = False _parent_order = False @@ -1055,7 +1055,7 @@ class BaseModel(object): "in order to implement their access rights policy" # Validate rec_name - if self._rec_name: + if self._rec_name is None: assert self._rec_name in self._columns.keys() + ['id'], "Invalid rec_name %s for model %s" % (self._rec_name, self._name) else: self._rec_name = 'name' @@ -1921,7 +1921,7 @@ class BaseModel(object): return False view = etree.Element('calendar', string=self._description) - etree.SubElement(view, 'field', self._rec_name_get(cr,uid,context)) + etree.SubElement(view, 'field', self._rec_name_fallback(cr,uid,context)) if (self._date_name not in self._columns): date_found = False From 171500f171eb78524cb2d4977b6b9f98682f266d Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 1 Aug 2012 09:50:24 +0200 Subject: [PATCH 06/11] [MAOW] lolcat ninja fix in the branch, yaoh! bzr revid: vmt@openerp.com-20120801075024-mpc4seluumaa33ph --- openerp/osv/orm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 2c73e811eeb..4233fc2de2d 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1055,7 +1055,7 @@ class BaseModel(object): "in order to implement their access rights policy" # Validate rec_name - if self._rec_name is None: + if self._rec_name is not None: assert self._rec_name in self._columns.keys() + ['id'], "Invalid rec_name %s for model %s" % (self._rec_name, self._name) else: self._rec_name = 'name' From 6aef95b5c28647c4b165ba8dcd0e31908a671a0a Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 1 Aug 2012 10:01:55 +0200 Subject: [PATCH 07/11] [MEOW] lolcat crazy ninja fix in the branch, take two! bzr revid: vmt@openerp.com-20120801080155-8qhg3aqkay2rrmbt --- openerp/osv/orm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 4233fc2de2d..a1a267bd552 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -1881,7 +1881,7 @@ class BaseModel(object): :rtype: etree._Element """ view = etree.Element('search', string=self._description) - etree.SubElement(view, 'field', name=self._rec_name_fallback(cr,uid,context)) + etree.SubElement(view, 'field', name=self._rec_name_fallback(cr, user, context)) return view def _get_default_tree_view(self, cr, user, context=None): @@ -1894,7 +1894,7 @@ class BaseModel(object): :rtype: etree._Element """ view = etree.Element('tree', string=self._description) - etree.SubElement(view, 'field', name=self._rec_name_fallback(cr,uid,context)) + etree.SubElement(view, 'field', name=self._rec_name_fallback(cr, user, context)) return view def _get_default_calendar_view(self, cr, user, context=None): @@ -1921,7 +1921,7 @@ class BaseModel(object): return False view = etree.Element('calendar', string=self._description) - etree.SubElement(view, 'field', self._rec_name_fallback(cr,uid,context)) + etree.SubElement(view, 'field', self._rec_name_fallback(cr, user, context)) if (self._date_name not in self._columns): date_found = False From 74582aea7e36bbe805fb395bbb0f11fa768ead14 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 1 Aug 2012 10:16:30 +0200 Subject: [PATCH 08/11] [FIX] event: removed invalid _rec_name. bzr revid: vmt@openerp.com-20120801081630-2wtg0rnwoa97zacg --- addons/event/report/report_event_registration.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/event/report/report_event_registration.py b/addons/event/report/report_event_registration.py index 17472e0cc95..060b1ef7556 100644 --- a/addons/event/report/report_event_registration.py +++ b/addons/event/report/report_event_registration.py @@ -27,7 +27,6 @@ class report_event_registration(osv.osv): _name = "report.event.registration" _description = "Events Analysis" _auto = False - _rec_name = 'date' _columns = { 'event_date': fields.char('Event Start Date', size=64, readonly=True), 'year': fields.char('Year', size=4, readonly=True), From ee1018a24280975e30375361292305b56031af5d Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 1 Aug 2012 10:38:23 +0200 Subject: [PATCH 09/11] [FIX] hr_evaluation: removed invalid _rec_name. bzr revid: vmt@openerp.com-20120801083823-m1mr5n32vuhiofzj --- addons/hr_evaluation/report/hr_evaluation_report.py | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/hr_evaluation/report/hr_evaluation_report.py b/addons/hr_evaluation/report/hr_evaluation_report.py index ac32133186c..bc2e50629c3 100644 --- a/addons/hr_evaluation/report/hr_evaluation_report.py +++ b/addons/hr_evaluation/report/hr_evaluation_report.py @@ -26,7 +26,6 @@ class hr_evaluation_report(osv.osv): _name = "hr.evaluation.report" _description = "Evaluations Statistics" _auto = False - _rec_name = 'date' _columns = { 'create_date': fields.date('Create Date', readonly=True), 'delay_date':fields.float('Delay to Start', digits=(16,2),readonly=True), From 3f3b2e0286ff050e7940c1c0d384e92505961f63 Mon Sep 17 00:00:00 2001 From: "Sanjay Gohel (Open ERP)" Date: Wed, 1 Aug 2012 14:13:19 +0530 Subject: [PATCH 10/11] [IMP]improve view of genral settings bzr revid: sgo@tinyerp.com-20120801084319-z8u5qotjzj4w6aud --- addons/base_setup/res_config_view.xml | 4 ++-- addons/signup/res_config.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/base_setup/res_config_view.xml b/addons/base_setup/res_config_view.xml index febe155e795..95b740632e0 100644 --- a/addons/base_setup/res_config_view.xml +++ b/addons/base_setup/res_config_view.xml @@ -22,7 +22,7 @@