Add validate test for required and size
Handle many2one with id = 0
This commit is contained in:
1 parent
f820d707f5
commit
af9ad2664b
3 files changed
+31
-2
No files matched your search
@@ -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>
|
||||
|
||||
@@ -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__
|
||||
|
||||
|
||||
@@ -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 = {}
|
||||
|
||||
Reference in new issue
Block a user