Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion openerp/addons/base/res/res_currency.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ def init(self, cr):
@api.one
@api.depends('rate_ids.name')
def compute_date(self):
self.date = self.rate_ids.name
self.date = self.rate_ids[0].name if self.rate_ids else False

def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100):
if not args:
Expand Down
22 changes: 21 additions & 1 deletion openerp/addons/test_new_api/tests/test_new_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from collections import defaultdict

from openerp.tests import common

from openerp.exceptions import Warning

class TestNewFields(common.TransactionCase):

Expand All @@ -23,6 +23,26 @@ def test_00_basics(self):
values = discussion.read(['name'])[0]
self.assertEqual(values['name'], discussion.name)

def test_01_basic_set_assertion(self):
""" test item setter """
record = self.env.ref('test_new_api.message_0_0')
self.assertEqual(len(record), 1)
record.body = 'OK'
records = self.env['test_new_api.message'].search([])
assert len(records) > 1
with self.assertRaises(Warning):
records.body = 'Faulty'

def test_01_basic_get_assertion(self):
""" test item getter """
record = self.env.ref('test_new_api.message_0_0')
self.assertEqual(len(record), 1)
ok = record.body
records = self.env['test_new_api.message'].search([])
assert len(records) > 1
with self.assertRaises(Warning):
faulty = records.body

def test_10_computed(self):
""" check definition of computed fields """
# by default function fields are not stored and readonly
Expand Down
10 changes: 6 additions & 4 deletions openerp/osv/fields2.py
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,8 @@ def __get__(self, record, owner):
""" return the value of field `self` on `record` """
if record is None:
return self # the field is accessed through the owner class

if len(record) > 1:
raise Warning("Multiple records properties %s may not be accessed" % record)
try:
return record._cache[self]
except KeyError:
Expand All @@ -453,8 +454,9 @@ def __get__(self, record, owner):
def __set__(self, record, value):
""" set the value of field `self` on `record` """
if not record:
raise Warning("Null record %s may not be assigned" % record)

raise Warning('Null record %s may not be assigned' % record)
if len(record) > 1:
raise Warning('Multiple records %s may not be assigned' % record)
# only one record is updated
env = record.env
record = record[0]
Expand Down Expand Up @@ -713,7 +715,7 @@ def context_today(record, timestamp=None):
:param datetime timestamp: optional datetime value to use instead of
the current date and time (must be a datetime, regular dates
can't be converted between timezones.)
:rtype: str
:rtype: str
"""
today = timestamp or datetime.now()
context_today = None
Expand Down