Skip to content

preservation_serializers#

ContractModelSerializer#

Bases: CommonModelSerializer

Model serializer for Contract

Source code in src/apps/core/serializers/preservation_serializers.py
class ContractModelSerializer(CommonModelSerializer):
    """Model serializer for Contract"""

    class Meta:
        model = Contract
        fields = ("id", "title", "description", "quota", "valid_until")

PreservationModelSerializer#

Bases: CommonModelSerializer

Model serializer for Preservation

Source code in src/apps/core/serializers/preservation_serializers.py
class PreservationModelSerializer(CommonModelSerializer):
    """Model serializer for Preservation"""

    class Meta:
        model = Preservation
        fields = (
            "contract",
            "id",
            "state",
            "description",
            "reason_description",
        )

    def validate(self, attrs):
        preservation = None
        if self.instance:
            preservation = self.instance

        # If preservation state is other than NONE, dataset must have a
        # contract.
        if "state" in attrs or "contract" in attrs:
            state = Preservation.PreservationState.NONE  # Default
            if preservation:
                state = preservation.state  # Existing database value
            if "state" in attrs:
                state = attrs["state"]  # User-provided new value

            contract = None
            if preservation:
                contract = preservation.contract
            if "contract" in attrs:
                contract = attrs["contract"]

            if contract is None and state > -1:
                raise serializers.ValidationError(
                    {"contract": _(f"Dataset in preservation process must have a contract.")}
                )

        return super().validate(attrs)