meta.py 638 B

12345678910111213141516171819202122232425
  1. from typing import Any
  2. from sqlmodel.main import SQLModelMetaclass
  3. from sqlmodel_serializers.base import BaseMeta
  4. from sqlmodel_serializers.filters import AllFilterSet
  5. Attrs = dict[str, Any]
  6. ALL = '__all__'
  7. class SQLModelSerializerMetaclass(SQLModelMetaclass):
  8. def __new__(cls, name: str, parents: tuple[type], attrs: dict[str, Any], **kwargs) -> Any:
  9. meta = attrs.get('Meta')
  10. if meta and not (meta is BaseMeta):
  11. filter_set = AllFilterSet(attrs, meta)
  12. attrs = filter_set.filter()
  13. new_cls = super().__new__(cls, name, parents, attrs, **kwargs)
  14. return new_cls