Exemplo n.º 1
0
    def process_attribute_mapping(self,
                                  mapping,
                                  line_mapping,
                                  attributes_list,
                                  ATTRIBUTE_PREFIX,
                                  path,
                                  import_args,
                                  id_gen_fun=None,
                                  null_values=['NULL']):
        """
            Mapping : name is mandatory vat_att(attribute_list)
        """
        def add_value_line(values_out, line):
            for att in attributes_list:
                value_name = line[mapping.keys().index('name')].get(att)
                if value_name:
                    line_value = [
                        ele[att] if isinstance(ele, dict) else ele
                        for ele in line
                    ]
                    values_out.add(tuple(line_value))

        id_gen_fun = id_gen_fun or (lambda template_id, values: mapper.to_m2o(
            template_id.split('.')[0] + '_LINE', template_id))

        values_header = mapping.keys()
        values_data = set()

        self.__generate_attribute_data(attributes_list, ATTRIBUTE_PREFIX)
        att_data = AttributeLineDict(self.attr_data, id_gen_fun)
        for line in self.data:
            line = [
                s.strip() if s.strip() not in null_values else '' for s in line
            ]
            line_dict = dict(zip(self.header, line))
            line_out = [mapping[k](line_dict) for k in mapping.keys()]

            add_value_line(values_data, line_out)
            values_lines = [
                line_mapping[k](line_dict) for k in line_mapping.keys()
            ]
            att_data.add_line(values_lines, line_mapping.keys())

        line_header, line_data = att_data.generate_line()
        context = import_args.get('context', {})
        context['create_product_variant'] = True
        import_args['context'] = context
        self._add_data(self.attr_header, self.attr_data,
                       path + 'product.attribute.csv', import_args)
        self._add_data(values_header, values_data,
                       path + 'product.attribute.value.csv', import_args)
        import_args = dict(import_args, groupby='product_tmpl_id/id')
        self._add_data(line_header, line_data,
                       path + 'product.attribute.line.csv', import_args)
Exemplo n.º 2
0
 def process_attribute_data(self, attributes_list, ATTRIBUTE_PREFIX,
                            filename_out, import_args):
     attr_header = ['id', 'name']
     attr_data = [[mapper.to_m2o(ATTRIBUTE_PREFIX, att), att]
                  for att in attributes_list]
     self._add_data(attr_header, attr_data, filename_out, import_args)
Exemplo n.º 3
0
 def __generate_attribute_data(self, attributes_list, ATTRIBUTE_PREFIX):
     self.attr_header = ['id', 'name']
     self.attr_data = [[mapper.to_m2o(ATTRIBUTE_PREFIX, att), att]
                       for att in attributes_list]