Skip to content

serializer

django_spire.contrib.sync.django.serializer

SyncFieldSerializer

Source code in django_spire/contrib/sync/django/serializer.py
def __init__(self, model: type) -> None:
    self._concrete: dict[str, tuple[str, Any, Any]] = {}

    for field in model._meta.concrete_fields:
        attr_name = field.attname if field.is_relation else field.name
        serialize, deserialize = _get_serializer(field)
        self._concrete[attr_name] = (field.name, serialize, deserialize)

serialize

Source code in django_spire/contrib/sync/django/serializer.py
def serialize(self, instance: Any) -> dict[str, Any]:
    data: dict[str, Any] = {}

    for attr_name, (_name, serialize, _) in self._concrete.items():
        value = getattr(instance, attr_name)

        if value is not None:
            value = serialize(value)

        data[attr_name] = value

    return data

deserialize

Source code in django_spire/contrib/sync/django/serializer.py
def deserialize(self, field_data: dict[str, Any]) -> dict[str, Any]:
    result: dict[str, Any] = {}

    for key, value in field_data.items():
        entry = self._concrete.get(key)

        if entry is None:
            result[key] = value
            continue

        _, _, deserialize = entry

        if value is not None:
            value = deserialize(value)

        result[key] = value

    return result