|  | @@ -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
 |