|
@@ -0,0 +1,91 @@
|
|
|
|
+from models.measurement_unit_model import measurement_unit_model
|
|
|
|
+from models.nomenclature_model import nomenclature_model
|
|
|
|
+from src.models.abstract_reference import abstract_reference
|
|
|
|
+from validation.validator import validator
|
|
|
|
+
|
|
|
|
+class ingredient_model (abstract_reference):
|
|
|
|
+ # Номенклатура ингредиента
|
|
|
|
+ __nomenclature = None
|
|
|
|
+
|
|
|
|
+ # Количество ингредиента в единицах измерения
|
|
|
|
+ __amount = 0
|
|
|
|
+
|
|
|
|
+ # Единица измерения количества ингредиента
|
|
|
|
+ __measurement_unit = None
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ # Валидатор
|
|
|
|
+ __vtor = validator()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ def __init__(self, name, nomenclature:nomenclature_model, amount:int, unit:measurement_unit_model):
|
|
|
|
+ self.__vtor.check_type(nomenclature, nomenclature_model)
|
|
|
|
+ self.__vtor.check_number(amount)
|
|
|
|
+ self.__vtor.check_type(unit, measurement_unit_model)
|
|
|
|
+ self.__nomenclature = nomenclature
|
|
|
|
+ self.__amount = amount
|
|
|
|
+ self.__measurement_unit = unit
|
|
|
|
+ super().__init__(name)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @property
|
|
|
|
+ def nomenclature(self):
|
|
|
|
+ """Номенклатура ингредиента"""
|
|
|
|
+
|
|
|
|
+ return self.__nomenclature
|
|
|
|
+
|
|
|
|
+ @nomenclature.setter
|
|
|
|
+ def nomenclature(self, value: nomenclature_model):
|
|
|
|
+ """
|
|
|
|
+ Номенклатура ингредиента
|
|
|
|
+ Args:
|
|
|
|
+ value (nomenclature_model): номенклатура ингредиента
|
|
|
|
+ Raises:
|
|
|
|
+ argument_exception: Несоответствие типа аргумента
|
|
|
|
+ """
|
|
|
|
+
|
|
|
|
+ self.__vtor.check_type(value, nomenclature_model)
|
|
|
|
+
|
|
|
|
+ self.__nomenclature = value
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @property
|
|
|
|
+ def amount(self):
|
|
|
|
+ """Количество ингредиента"""
|
|
|
|
+
|
|
|
|
+ return self.__amount
|
|
|
|
+
|
|
|
|
+ @amount.setter
|
|
|
|
+ def amount(self, value):
|
|
|
|
+ """
|
|
|
|
+ Количество ингредиента в его единице измерения
|
|
|
|
+ Args:
|
|
|
|
+ value (Number): количество ингредиента в его единице измерения
|
|
|
|
+ Raises:
|
|
|
|
+ argument_exception: Значение не является числом
|
|
|
|
+ """
|
|
|
|
+
|
|
|
|
+ self.__vtor.check_number(value)
|
|
|
|
+
|
|
|
|
+ self.__amount = value
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @property
|
|
|
|
+ def measurement_unit(self):
|
|
|
|
+ """Единица измерения количества ингредиента"""
|
|
|
|
+
|
|
|
|
+ return self.__measurement_unit
|
|
|
|
+
|
|
|
|
+ @measurement_unit.setter
|
|
|
|
+ def measurement_unit(self, value: measurement_unit_model):
|
|
|
|
+ """
|
|
|
|
+ Единица измерения количества ингредиента
|
|
|
|
+ Args:
|
|
|
|
+ value (measurement_unit_model): единица измерения количества ингредиента
|
|
|
|
+ Raises:
|
|
|
|
+ argument_exception: Несоответствие типа аргумента
|
|
|
|
+ """
|
|
|
|
+
|
|
|
|
+ self.__vtor.check_type(value, measurement_unit_model)
|
|
|
|
+
|
|
|
|
+ self.__measurement_unit = value
|