import tortoise.models from .field_generator import field_generator class model(tortoise.models.Model): id = field_generator.primary_key() def _validators(self) -> dict: return dict() def __validate_item(self, validator: callable, key: str) -> None: try: if validator(self.__get(key)) == self.__get(key): return raise ValueError("Validated value is not same.") except Exception as error: value = self.__get(key) model_name = type(self).__name__ info = "Model \"" + model_name + "\" contain invalid " info = info + "data in field \"" + key + "\". Content of " info = info + "field is \"" + value + "\". Found error \"" info = info + str(error) + "\"." raise ValueError(info) def __get(self, key: str) -> any: return self.__getattribute__(key) def validate(self) -> object: for key, validator in self._validators().items(): self.__validate_item(validator, key) return self class Meta: app = "class"