Source code for contentful.content_type_field
from .utils import snake_case
from .content_type_field_types import * # noqa: F401, F403
"""
contentful.content_type_field
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This module implements the ContentTypeField class.
API Reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/content-types
:copyright: (c) 2016 by Contentful GmbH.
:license: MIT, see LICENSE for more details.
"""
[docs]class ContentTypeField(object):
"""
API Reference: https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/content-types
"""
def __init__(self, field_data):
self.raw = field_data
self.id = snake_case(field_data.get('id', ''))
self.name = field_data.get('name', '')
self.type = field_data.get('type', '')
self.items = field_data.get('items', {})
self.localized = field_data.get('localized', False)
self.omitted = field_data.get('omitted', False)
self.required = field_data.get('required', False)
self.disabled = field_data.get('disabled', False)
self._coercion = self._get_coercion()
[docs] def coerce(self, value, **kwargs):
"""Coerces the value to the proper type."""
if value is None:
return None
return self._coercion.coerce(value, **kwargs)
def _get_coercion(self):
"""Gets the proper coercion type"""
return globals()["{0}Field".format(self.type)](self.items)
def __repr__(self):
return "<ContentTypeField[{0}] id='{1}' type='{2}'>".format(
self.name,
self.id,
self.type
)