def data_transform(self, pool_src, pool_dest, obj, data, action=None): if action is None: action = {} # self.meta.setdefault(pool_src, {}) # if not obj in self.meta[pool_src]: fields = pool_src.get(obj).fields_get(self._cr, self.user_id.id) # fields = self.meta[pool_src][obj] columns = pool_dest.get(obj)._columns for f in fields: if 'related' in fields.get(f, {}): data.pop(f, False) if columns.get(f) and isinstance(columns.get(f), related): data.pop(f, False) if f not in data: continue ftype = fields[f]['type'] if ftype in ('function', 'one2many', 'one2one'): del data[f] elif ftype == 'many2one': if (isinstance(data[f], list)) and data[f]: fdata = data[f][0] else: fdata = data[f] df = self.relation_transform(pool_src, pool_dest, fields[f]['relation'], fdata, action) data[f] = df if not data[f]: del data[f] elif ftype == 'many2many': res = map(lambda x: self.relation_transform(pool_src, pool_dest, fields[f]['relation'], x, action), data[f]) data[f] = [(6, 0, [x for x in res if x])] del data['id'] return data
def _default_get_mobile(self, cr, uid, fields, context=None): if context is None: context = {} partner_pool = self.pool.get('res.partner') active_ids = fields.get('active_ids') res = {} i = 0 for partner in partner_pool.browse(cr, uid, active_ids, context=context): i += 1 res = partner.mobile if i > 1: raise except_orm(_('Error'), _('You can only select one partner')) return res
def data_transform(self, pool_src, pool_dest, obj, data, action=None): if action is None: action = {} # self.meta.setdefault(pool_src, {}) # if not obj in self.meta[pool_src]: fields = pool_src.get(obj).fields_get(self._cr, self.user_id.id) # fields = self.meta[pool_src][obj] columns = pool_dest.get(obj)._columns for f in fields: if 'related' in fields.get(f, {}): data.pop(f, False) if columns.get(f) and isinstance(columns.get(f), related): data.pop(f, False) if f not in data: continue ftype = fields[f]['type'] if ftype in ('function', 'one2many', 'one2one'): del data[f] elif ftype == 'many2one': if (isinstance(data[f], list)) and data[f]: fdata = data[f][0] else: fdata = data[f] df = self.relation_transform(pool_src, pool_dest, fields[f]['relation'], fdata, action) data[f] = df if not data[f]: del data[f] elif ftype == 'many2many': res = map( lambda x: self.relation_transform( pool_src, pool_dest, fields[f]['relation'], x, action), data[f]) data[f] = [(6, 0, [x for x in res if x])] del data['id'] return data
def _get_param_lines(self, ref_id, values, prefix): parameter_pool = self.env['cenit.parameter'] url = [] header = [] template = [] params = { 'parameters': url, 'headers': header, 'template_parameters': template, } fields = { 'parameters': '%s_url_id' % (prefix, ), 'headers': '%s_header_id' % (prefix, ), 'template_parameters': '%s_template_id' % (prefix, ), } for key in ('parameters', 'headers', 'template_parameters'): vals = values.get(key, []) field = fields.get(key) param = params.get(key) strict_keys = [] for entry in vals: if not entry.get('key'): continue domain = [ ('key', '=', entry.get('key')), (field, '=', ref_id), ] candidates = parameter_pool.search(domain) param_data = { 'key': entry.get('key'), 'value': entry.get('value') } if not candidates: param.append([0, False, param_data]) else: p = candidates[0] param.append([1, p.id, param_data]) strict_keys.append(param_data.get('key')) domain = [ ('key', 'not in', strict_keys), (field, '=', ref_id), ] left_overs = parameter_pool.search(domain) for entry in left_overs: param.append([2, entry.id, False]) rc = { 'url_parameters': params.get('parameters'), 'header_parameters': params.get('headers'), 'template_parameters': params.get('template_parameters'), } return rc
def _get_param_lines(self, ref_id, values, prefix): parameter_pool = self.env['cenit.parameter'] url = [] header = [] template = [] params = { 'parameters': url, 'headers': header, 'template_parameters': template, } fields = { 'parameters': '%s_url_id' %(prefix,), 'headers': '%s_header_id' %(prefix,), 'template_parameters': '%s_template_id' %(prefix,), } for key in ('parameters', 'headers', 'template_parameters'): vals = values.get(key, []) field = fields.get(key) param = params.get(key) strict_keys = [] for entry in vals: if not entry.get('key'): continue domain = [ ('key', '=', entry.get('key')), (field, '=', ref_id), ] candidates = parameter_pool.search(domain) param_data = { 'key': entry.get('key'), 'value': entry.get('value') } if not candidates: param.append([0, False, param_data]) else: p = candidates[0] param.append([1, p.id, param_data]) strict_keys.append(param_data.get('key')) domain = [ ('key', 'not in', strict_keys), (field, '=', ref_id), ] left_overs = parameter_pool.search(domain) for entry in left_overs: param.append([2, entry.id, False]) rc = { 'url_parameters': params.get('parameters'), 'header_parameters': params.get('headers'), 'template_parameters': params.get('template_parameters'), } return rc