Przeglądaj źródła

Relayed validation from measurement_unit_model to validator

Vsevolod Levitan 1 rok temu
rodzic
commit
6b3b494441
1 zmienionych plików z 12 dodań i 15 usunięć
  1. 12 15
      src/models/measurement_unit_model.py

+ 12 - 15
src/models/measurement_unit_model.py

@@ -1,5 +1,6 @@
 from src.models.abstract_reference import abstract_reference
 from src.errors.argument_exception import argument_exception
+from src.validation.validator import validator
 
 class measurement_unit_model (abstract_reference):
     # Базовая единица измерения
@@ -7,26 +8,19 @@ class measurement_unit_model (abstract_reference):
     # Базовый коэффициент
     __base_coefficient = None
 
-    def __init__(self, base_coefficient, base_measurement=None):
+    def __init__(self, base_coefficient = 1, base_measurement=None):
         """
         Args:
             base_measurement (measurement_unit_model): Базовая единица измерения
             base_coefficint (number): Базовый коэффициент
         """
-        # Проверяем чтоды base_measurement был типа measurement_unit_model либо None (self-ref)
-        if not isinstance(base_measurement, measurement_unit_model)\
-            and base_measurement is not None:
-            raise argument_exception(
-                "Базовая единица измерения должна быть типа measurement_unit_model")
-        # Присваиваем self-ref когда не передан base_measurement
-        if base_measurement is None:
-            self.__base_measurement_unit = self
-        else: self.__base_measurement_unit = base_measurement
-        try:
-        # Пробуем конвертировать коэффициент во float
-            self.__base_coefficient = float(base_coefficient)
-        except TypeError as e:
-            raise argument_exception("Несоответствие типа базового коэффициента")
+
+        validator.check_type_any(base_measurement, measurement_unit_model, None)
+        validator.check_number(base_measurement)
+
+        self.__base_measurement_unit = base_measurement
+        self.__base_coefficient = base_coefficient
+        
 
     @property
     def base_measurement_unit(self):
@@ -34,6 +28,9 @@ class measurement_unit_model (abstract_reference):
             Базовая единица измерения
         """
 
+        if self.__base_measurement_unit is None:
+            return self
+
         return self.__base_measurement_unit
     
     @property