model.py 1.1 KB

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