Add validate test for required and size

Handle many2one with id = 0
This commit is contained in:
Cédric Krier committed 2009-07-07 19:34:05 +02:00
1 parent f820d707f5
commit af9ad2664b
3 files changed
+31 -2

No files matched your search

+9
View File
@@ -124,6 +124,15 @@ this repository contains the full copyright notices and license terms. -->
<field name="module">ir</field>
<field name="fuzzy" eval="False"/>
</record>
<record model="ir.translation" id="translation_size_validation_record">
<field name="name">size_validation_record</field>
<field name="lang">en_US</field>
<field name="type">error</field>
<field name="src">The field "%s" on "%s" is too long.</field>
<field name="value">The field "%s" on "%s" is too long.</field>
<field name="module">ir</field>
<field name="fuzzy" eval="False"/>
</record>
<record model="ir.translation" id="translation_access_error">
<field name="name">access_error</field>
<field name="lang">en_US</field>
+3 -2
View File
@@ -132,7 +132,8 @@ class BrowseRecord(object):
elif hasattr(j, 'get_target'):
model = j.get_target(self._model.pool)
if j._type in ('many2one',):
if not data[i]:
if not data[i] and not (isinstance(data[i], (int, long))
and not isinstance(data[i], type(False))):
data[i] = BrowseRecordNull()
else:
ctx = self._context
@@ -184,7 +185,7 @@ class BrowseRecord(object):
return hash((self._model_name, self._id))
def __nonzero__(self):
return bool(self._id)
return True
__repr__ = __str__
+19
View File
@@ -950,6 +950,25 @@ class ModelStorage(Model):
error_args=self._get_error_args(cursor,
user, field_name, context=context),
context=context)
# validate required
if field.required:
for record in records:
if isinstance(record[field_name], (BrowseRecordNull,
type(None), type(False))) and not record[field_name]:
self.raise_user_error(cursor,
'required_validation_record',
error_args=self._get_error_args(cursor,
user, field_name, context=context),
context=context)
# validate size
if hasattr(field, 'size') and field.size:
for record in records:
if len(record[field_name]) > field.size:
self.raise_user_error(cursor,
'size_validation_record',
error_args=self._get_error_args(cursor,
user, field_name, context=context),
context=context)
def _clean_defaults(self, defaults):
vals = {}