I am trying to add attributes to a product using XMLRPC, but I am quite struggling with how it all fits together.
My goal is as follows:
In the backend, I can use the "Add a line" on a product in the "Attributes & Variants" tab.
And I can then easily create both the attribute, and the value.
I want to do all that using XMLRPC, where of course I want to check if a certain attribute already exists on the product, or in general.
I have this code to check if an product.template.attribute.line
exists, and try to create it, if not. However, it complains that I must set at least one value (but how?):
``` def get_attribute_line_id(self, product_template_id, attribute_id, value_id, create = True):
existing_line_ids = self.models.execute_kw(
self.database, self.uid, self.apikey, 'product.template.attribute.line', 'search', [[["value_ids.id", "=", value_id], ["attribute_id", "=", attribute_id], ["product_tmpl_id", "=", product_template_id]]])
def get_attribute_line_id(self, product_template_id, attribute_id, value_id, create = True):
existing_line_ids = self.models.execute_kw(
self.database, self.uid, self.apikey, 'product.template.attribute.line', 'search', [[["value_ids.id", "=", value_id], ["attribute_id", "=", attribute_id], ["product_tmpl_id", "=", product_template_id]]])
if create == True and len(existing_line_ids) == 0:
line_id = self.models.execute_kw(self.database, self.uid, self.apikey, 'product.template.attribute.line', 'create', [{'attribute_id': attribute_id, 'value_ids': [value_id], 'product_tmpl_id': product_template_id}])
existing_line_ids = [line_id]
return existing_line_ids
The value_id
was created in this method:
def get_attribute_line_id(self, product_template_id, attribute_id, value_id, create = True):
existing_line_ids = self.models.execute_kw(
self.database, self.uid, self.apikey, 'product.template.attribute.line', 'search', [[["value_ids.id", "=", value_id], ["attribute_id", "=", attribute_id], ["product_tmpl_id", "=", product_template_id]]])
if create == True and len(existing_line_ids) == 0:
line_id = self.models.execute_kw(self.database, self.uid, self.apikey, 'product.template.attribute.line', 'create', [{'attribute_id': attribute_id, 'value_ids': [value_id], 'product_tmpl_id': product_template_id}])
existing_line_ids = [line_id]
return existing_line_ids