Source code for contentful_management.content_type

from .resource import Resource, PublishResource, EnvironmentAwareResource
from .content_type_field import ContentTypeField
from .content_type_entries_proxy import ContentTypeEntriesProxy
from .content_type_snapshots_proxy import ContentTypeSnapshotsProxy
from .content_type_editor_interfaces_proxy import ContentTypeEditorInterfacesProxy


"""
contentful_management.content_type
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module implements the ContentType class.

API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/content-types

:copyright: (c) 2018 by Contentful GmbH.
:license: MIT, see LICENSE for more details.
"""


[docs]class ContentType(Resource, PublishResource, EnvironmentAwareResource): """ API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/content-types """ def __init__(self, item, **kwargs): super(ContentType, self).__init__(item, **kwargs) self.name = item.get('name', '') self.description = item.get('description', '') self.display_field = item.get('displayField', '') self.fields = [ContentTypeField(field) for field in item.get('fields', [])]
[docs] @classmethod def base_url(klass, space_id, resource_id=None, public=False, environment_id=None, **kwargs): """ Returns the URI for the content type. """ if public: environment_slug = "" if environment_id is not None: environment_slug = "/environments/{0}".format(environment_id) return "spaces/{0}{1}/public/content_types".format(space_id, environment_slug) return super(ContentType, klass).base_url( space_id, resource_id=resource_id, environment_id=environment_id, **kwargs )
[docs] @classmethod def create_attributes(klass, attributes, previous_object=None): """ Attributes for content type creation. """ result = super(ContentType, klass).create_attributes(attributes, previous_object) if 'fields' not in result: result['fields'] = [] return result
[docs] @classmethod def update_attributes_map(klass): """ Attributes for object mapping. """ return { 'name': '', 'description': '', 'display_field': '', 'fields': [] }
[docs] def to_json(self): """ Returns the JSON representation of the content type. """ result = super(ContentType, self).to_json() result.update({ 'name': self.name, 'description': self.description, 'displayField': self.display_field, 'fields': [f.to_json() for f in self.fields] }) return result
[docs] def entries(self): """ Provides access to entry management methods for the given content type. API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/entries :return: :class:`ContentTypeEntriesProxy <contentful_management.content_type_entries_proxy.ContentTypeEntriesProxy>` object. :rtype: contentful.content_type_entries_proxy.ContentTypeEntriesProxy Usage: >>> content_type_entries_proxy = content_type.entries() <ContentTypeEntriesProxy space_id="cfexampleapi" environment_id="master" content_type_id="cat"> """ return ContentTypeEntriesProxy(self._client, self.space.id, self._environment_id, self.id)
[docs] def editor_interfaces(self): """ Provides access to editor interface management methods for the given content type. API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/editor-interface :return: :class:`ContentTypeEditorInterfacesProxy <contentful_management.content_type_editor_interfaces_proxy.ContentTypeEditorInterfacesProxy>` object. :rtype: contentful.content_type_editor_interfaces_proxy.ContentTypeEditorInterfacesProxy Usage: >>> content_type_editor_interfaces_proxy = content_type.editor_interfaces() <ContentTypeEditorInterfacesProxy space_id="cfexampleapi" environment_id="master" content_type_id="cat"> """ return ContentTypeEditorInterfacesProxy(self._client, self.space.id, self._environment_id, self.id)
[docs] def snapshots(self): """ Provides access to snapshot management methods for the given content type. API reference: https://www.contentful.com/developers/docs/references/content-management-api/#/reference/snapshots/content-type-snapshots-collection :return: :class:`ContentTypeSnapshotsProxy <contentful_management.content_type_snapshots_proxy.ContentTypeSnapshotsProxy>` object. :rtype: contentful.content_type_snapshots_proxy.ContentTypeSnapshotsProxy Usage: >>> content_type_snapshots_proxy = content_type.entries() <ContentTypeSnapshotsProxy space_id="cfexampleapi" environment_id="master" content_type_id="cat"> """ return ContentTypeSnapshotsProxy(self._client, self.space.id, self._environment_id, self.id)
def __repr__(self): return "<ContentType[{0}] id='{1}'>".format( self.name, self.sys.get('id', '') )