Add property value in default_get function as it is a default value
authorced <>
Wed, 12 Dec 2007 13:24:37 +0000 (13:24 +0000)
committerced <>
Wed, 12 Dec 2007 13:24:37 +0000 (13:24 +0000)
bzr revid: ced-749c0bf0b658df3acbae76aaef27627cda2a5ec4

bin/osv/orm.py

index 665d3de..1dceab1 100644 (file)
@@ -880,25 +880,39 @@ class orm(object):
                        cr.rollback()
                        raise except_orm('ValidateError', ('\n'.join(field_err_str), ','.join(field_error)))
 
-       def default_get(self, cr, uid, fields, context=None):
+       def default_get(self, cr, uid, fields_list, context=None):
                if not context:
                        context={}
                value = {}
                # get the default values for the inherited fields
                for t in self._inherits.keys():
-                       value.update(self.pool.get(t).default_get(cr, uid, fields, context))
+                       value.update(self.pool.get(t).default_get(cr, uid, fields_list,
+                               context))
 
                # get the default values defined in the object
-               for f in fields:
+               for f in fields_list:
                        if f in self._defaults:
                                value[f] = self._defaults[f](self, cr, uid, context)
+                       fld_def = ((f in self._columns) and self._columns[f]) \
+                                       or ((f in self._inherit_fields ) and self._inherit_fields[f][2]) \
+                                       or False
+                       if isinstance(fld_def, fields.property):
+                               property_obj = self.pool.get('ir.property')
+                               definition_id = fld_def._field_get(cr, uid, self._name, f)
+                               nid = property_obj.search(cr, uid, [('fields_id', '=',
+                                       definition_id), ('res_id', '=', False)])
+                               if nid:
+                                       prop_value = property_obj.browse(cr, uid, nid[0],
+                                                       context=context).value
+                                       value[f] = (prop_value and int(prop_value.split(',')[1])) \
+                                                       or False
 
                # get the default values set by the user and override the default
                # values defined in the object
                ir_values_obj = self.pool.get('ir.values')
                res = ir_values_obj.get(cr, uid, 'default', False, [self._name])
                for id, field, field_value in res:
-                       if field in fields:
+                       if field in fields_list:
                                fld_def = (field in self._columns) and self._columns[field] or self._inherit_fields[field][2]
                                if fld_def._type in ('many2one', 'one2one'):
                                        obj = self.pool.get(fld_def._obj)