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)
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)
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]