diff --git a/StockSeeker/models.py b/StockSeeker/models.py index 1c58442..34d9444 100644 --- a/StockSeeker/models.py +++ b/StockSeeker/models.py @@ -11,8 +11,7 @@ class Product(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="products") stock_limit = models.IntegerField(null=True, blank=True) alert_enabled = models.BooleanField(default=False) - alert_message = models.CharField(max_length=200, null=True, blank=True,help_text="Message d'alerte") - + @property def is_stock_low(self): return self.alert_enabled and self.stock_limit is not None and self.quantity < self.stock_limit diff --git a/StockSeeker/serializers.py b/StockSeeker/serializers.py index 8c00baf..b015ace 100644 --- a/StockSeeker/serializers.py +++ b/StockSeeker/serializers.py @@ -33,8 +33,20 @@ class UserSerializer(serializers.ModelSerializer): class ProductSerializer(serializers.ModelSerializer): user = serializers.PrimaryKeyRelatedField(read_only=True) - is_stock_low = serializers.BooleanField(read_only=True) + is_stock_low = serializers.SerializerMethodField() + def validate(self, data): + if data.get('alert_enabled') and data.get('stock_limit') is None: + raise serializers.ValidationError({ + 'product_stock_limit': "Ce champ est obligatoire si une alerte est activée." + }) + return data + class Meta: model = Product - fields = ["id", "name", "description", "quantity", "creation_date", "modification_date", "user","stock_limit","alert_enabled","alert_message","is_stock_low"] \ No newline at end of file + fields = ["id", "name", "description", "quantity", "creation_date", "modification_date", "user","stock_limit","alert_enabled","is_stock_low"] + + def get_is_stock_low(self, obj): + if not isinstance(obj, Product): + return None + return obj.is_stock_low \ No newline at end of file