From 0a6544db1403d8c17a1b2f32f1ab8996a6e634f3 Mon Sep 17 00:00:00 2001 From: mtyton Date: Tue, 1 Aug 2023 22:41:10 +0200 Subject: [PATCH] smaller changes --- artel/store/loader.py | 16 +++++++++++++++- artel/store/models.py | 6 +++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/artel/store/loader.py b/artel/store/loader.py index 8933774..b4e2b6c 100644 --- a/artel/store/loader.py +++ b/artel/store/loader.py @@ -17,10 +17,20 @@ class BaseLoader: def load_data(self): return pd.read_csv(self.path) - + + +class TemplateLoader(BaseLoader): + ... + class ProductLoader(BaseLoader): + def _get_images(self, row): + urls = row["images"] + for url in urls: + ... + return None + def _process_row(self, row): template = ProductTemplate.objects.get(code=row["template"]) price = float(row["price"]) @@ -35,6 +45,10 @@ class ProductLoader(BaseLoader): product.price = price product.name = name product.available = available + + images = self._get_images(row) + for image in images: + product.images.add(image) product.save() return product diff --git a/artel/store/models.py b/artel/store/models.py index c38c31a..2919cf9 100644 --- a/artel/store/models.py +++ b/artel/store/models.py @@ -142,6 +142,7 @@ class ProductTemplate(ClusterableModel): title = models.CharField(max_length=255) code = models.CharField(max_length=255) description = models.TextField(blank=True) + # TODO - add mechanism for enabling params tags = TaggableManager() @@ -207,7 +208,8 @@ class Product(ClusterableModel): name = models.CharField(max_length=255, blank=True) template = models.ForeignKey(ProductTemplate, on_delete=models.CASCADE, related_name="products") params = models.ManyToManyField( - ProductCategoryParamValue, blank=True, through="ProductParam" + ProductCategoryParamValue, blank=True, through="ProductParam", + limit_choices_to=models.Q(param__category=models.F("product__template__category")) ) price = models.FloatField() available = models.BooleanField(default=True) @@ -296,6 +298,8 @@ class ProductListPage(Page): tags = TaggableManager(blank=True) def _get_items(self): + if not self.pk: + return ProductTemplate.objects.all() if self.tags.all(): return ProductTemplate.objects.filter(tags__in=self.tags.all()) return ProductTemplate.objects.all()