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
Beispiel #2
0
 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 _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
Beispiel #5
0
    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
Beispiel #6
0
    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