Source code for ska_tmc_cdm.schemas.central_node.common

"""
The schemas.central_node module defines Marshmallow schemas that map TMC
Central Node message classes to/from a JSON representation.
"""
from marshmallow import Schema, fields, post_load

from ska_tmc_cdm.messages.central_node.common import DishAllocation
from ska_tmc_cdm.schemas import CODEC

__all__ = ["DishAllocationSchema", "DishAllocationResponseSchema"]


[docs]@CODEC.register_mapping(DishAllocation) class DishAllocationSchema(Schema): # pylint: disable=too-few-public-methods """ Marshmallow schema for the DishAllocation class. """ receptor_ids = fields.List( fields.String, data_key="receptor_ids", many=True, required=True )
[docs] @post_load def create(self, data, **_): # pylint: disable=no-self-use """ Convert parsed JSON back into a DishAllocation object. :param data: Marshmallow-provided dict containing parsed JSON values :param _: kwargs passed by Marshmallow :return: DishAllocation object populated from data """ receptor_ids = data["receptor_ids"] return DishAllocation(receptor_ids=receptor_ids)
[docs]@CODEC.register_mapping(DishAllocation) class DishAllocationResponseSchema(Schema): # pylint: disable=too-few-public-methods """ Marshmallow schema for the DishAllocation class when received in the response. """ receptor_ids = fields.List( fields.String, data_key="receptor_ids_allocated", many=True, required=True )
[docs] @post_load def create(self, data, **_): # pylint: disable=no-self-use """ Convert parsed JSON from an AssignResources response back into a DishAllocation object. This 'duplicate' schema is required as the DishAllocation is found under a different JSON key in the response as compared to the request. :param data: Marshmallow-provided dict containing parsed JSON values :param _: kwargs passed by Marshmallow :return: DishAllocation object populated from data """ receptor_ids = data["receptor_ids"] return DishAllocation(receptor_ids=receptor_ids)