def post(self, product_id=None, **kwargs): """Handle submitted form data""" # validate form if self.form.validate(): name = self.form.name.data description = self.form.description.data price = self.form.price.data unit = self.form.unit.data live = self.form.live.data tags = self.form.tags.data language = self.form.language.data if tags is not None: tags = [tag.strip() for tag in tags.split(',') if tag != ''] # save edit form if product_id: product = Product.get_by_id(product_id) product.name = name product.description = description product.price = price product.unit = unit product.live = live product.tags = tags product.language = language # save new form else: product = Product(name=name, description=description, price=price, unit=unit, live=live, tags=tags, language=language) if product.put(): return redirect('/admin/shop/products/') return self.get(**kwargs)
def create(self, validated_data): category = validated_data.pop('category') subcategories = validated_data.pop('subcategories') photos = validated_data.pop('photos', []) store = self.context['request'].user.seller.store with transaction.atomic(): category = self._get_or_create_category(category) validated_data.update({"category": category, "store": store}) product = Product(**validated_data) product.save() self._get_or_create_subcategories(product, subcategories) self._get_or_create_photos(product, photos) return product