def save(self, *args, **kwargs): if not self.id: if not self.slug or self.slug == "": self.slug = slugify(squish_string(self.name)) if not self.description or self.description == "": self.description = self.name super(Product, self).save()
def create_sub_products(self): existing_configurations = self.get_existing_configurations() for option_configuration in self.get_possible_configurations(): if option_configuration not in existing_configurations: log.debug("creating ConfigurableSubProduct for {}".format(option_configuration)) sub_product = ConfigurableSubProduct() sub_product.parent_product = self option_name_string = " - ".join(option.name for option in option_configuration) option_slug_string = "-".join(option.value for option in option_configuration) sub_product.name = self.name + " - " + option_name_string sub_product.slug = slugify(squish_string(self.name) + "-" + option_slug_string) sub_product.product_class = self.product_class log.debug("saving ConfigurableSubProduct {}".format(sub_product)) sub_product.save() for option in option_configuration: sub_product.options.add(option) self.child_products.add(sub_product) sub_product.save()