class FareSerializer(PbNestedSerializer): found = jsonschema.BoolField() total = CostSerializer() links = jsonschema.MethodField(schema_type=LinkSchema(many=True), attr='ticket_id', display_none=True) def get_links(self, obj): if not hasattr(obj, 'ticket_id'): return [] return [ create_internal_link(id=value, rel='tickets', _type='ticket') for value in obj.ticket_id ] # TODO check that retro compatibility is really useful def to_value(self, value): if value is None: return { 'found': False, 'links': [], 'total': { 'currency': '', 'value': '0.0' } } return super(FareSerializer, self).to_value(value)
class TicketSerializer(PbNestedSerializer): id = jsonschema.Field(schema_type=str, display_none=True, description='Identifier of the object') name = jsonschema.Field(schema_type=str, display_none=True, description='Name of the object') comment = jsonschema.Field(schema_type=str) found = jsonschema.BoolField() cost = CostSerializer() links = jsonschema.MethodField(schema_type=LinkSchema(many=True)) def get_links(self, obj): if not hasattr(obj, 'section_id'): return None return [create_internal_link(id=value, rel='sections', _type='section') for value in obj.section_id]