model.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import tortoise.models
  2. from .field_generator import field_generator
  3. from .constants import constants
  4. class model(tortoise.models.Model):
  5. id = field_generator.id()
  6. def _validators(self) -> dict:
  7. return dict()
  8. def __validate_item(self, validator: callable, key: str) -> None:
  9. try:
  10. if validator(self.__get(key)) == self.__get(key):
  11. return
  12. raise ValueError("Validated value is not same.")
  13. except Exception as error:
  14. value = self.__get(key)
  15. model_name = type(self).__name__
  16. info = "Model \"" + model_name + "\" contain invalid "
  17. info = info + "data in field \"" + key + "\". Content of "
  18. info = info + "field is \"" + value + "\". Found error \""
  19. info = info + str(error) + "\"."
  20. raise ValueError(info)
  21. def __get(self, key: str) -> any:
  22. return self.__getattribute__(key)
  23. def validate(self) -> object:
  24. for key, validator in self._validators().items():
  25. self.__validate_item(validator, key)
  26. return self
  27. class Meta:
  28. app = constants.app_name()