base_form.py 1.2 KB

123456789101112131415161718192021222324252627282930
  1. # coding=utf-8
  2. """
  3. @project: maxkb
  4. @Author:虎
  5. @file: base_form.py
  6. @date:2023/11/1 16:04
  7. @desc:
  8. """
  9. from typing import Dict
  10. from common.forms import BaseField
  11. class BaseForm:
  12. def to_form_list(self, **kwargs):
  13. return [{**self.__getattribute__(key).to_dict(**kwargs), 'field': key} for key in
  14. list(filter(lambda key: isinstance(self.__getattribute__(key), BaseField),
  15. [attr for attr in vars(self.__class__) if not attr.startswith("__")]))]
  16. def valid_form(self, form_data):
  17. field_keys = list(filter(lambda key: isinstance(self.__getattribute__(key), BaseField),
  18. [attr for attr in vars(self.__class__) if not attr.startswith("__")]))
  19. for field_key in field_keys:
  20. self.__getattribute__(field_key).is_valid(form_data.get(field_key))
  21. def get_default_form_data(self):
  22. return {key: self.__getattribute__(key).default_value for key in
  23. [attr for attr in vars(self.__class__) if not attr.startswith("__")] if
  24. isinstance(self.__getattribute__(key), BaseField) and self.__getattribute__(
  25. key).default_value is not None}