# coding: utf-8

"""
    Selling Partner API for A+ Content Management

    Use the A+ Content API to build applications that help selling partners add rich marketing content to their Amazon product detail pages. Selling partners can use A+ content to share their brand and product story, which helps buyers make informed purchasing decisions. Selling partners use content modules to add images and text.

    The version of the OpenAPI document: 2020-11-01
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import pprint
import re  # noqa: F401

import six

from spapi.configuration import Configuration


class ContentModule(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'content_module_type': 'ContentModuleType',
        'standard_company_logo': 'StandardCompanyLogoModule',
        'standard_comparison_table': 'StandardComparisonTableModule',
        'standard_four_image_text': 'StandardFourImageTextModule',
        'standard_four_image_text_quadrant': 'StandardFourImageTextQuadrantModule',
        'standard_header_image_text': 'StandardHeaderImageTextModule',
        'standard_image_sidebar': 'StandardImageSidebarModule',
        'standard_image_text_overlay': 'StandardImageTextOverlayModule',
        'standard_multiple_image_text': 'StandardMultipleImageTextModule',
        'standard_product_description': 'StandardProductDescriptionModule',
        'standard_single_image_highlights': 'StandardSingleImageHighlightsModule',
        'standard_single_image_specs_detail': 'StandardSingleImageSpecsDetailModule',
        'standard_single_side_image': 'StandardSingleSideImageModule',
        'standard_tech_specs': 'StandardTechSpecsModule',
        'standard_text': 'StandardTextModule',
        'standard_three_image_text': 'StandardThreeImageTextModule',
    }

    attribute_map = {
        'content_module_type': 'contentModuleType',
        'standard_company_logo': 'standardCompanyLogo',
        'standard_comparison_table': 'standardComparisonTable',
        'standard_four_image_text': 'standardFourImageText',
        'standard_four_image_text_quadrant': 'standardFourImageTextQuadrant',
        'standard_header_image_text': 'standardHeaderImageText',
        'standard_image_sidebar': 'standardImageSidebar',
        'standard_image_text_overlay': 'standardImageTextOverlay',
        'standard_multiple_image_text': 'standardMultipleImageText',
        'standard_product_description': 'standardProductDescription',
        'standard_single_image_highlights': 'standardSingleImageHighlights',
        'standard_single_image_specs_detail': 'standardSingleImageSpecsDetail',
        'standard_single_side_image': 'standardSingleSideImage',
        'standard_tech_specs': 'standardTechSpecs',
        'standard_text': 'standardText',
        'standard_three_image_text': 'standardThreeImageText',
    }

    def __init__(self, content_module_type=None, standard_company_logo=None, standard_comparison_table=None, standard_four_image_text=None, standard_four_image_text_quadrant=None, standard_header_image_text=None, standard_image_sidebar=None, standard_image_text_overlay=None, standard_multiple_image_text=None, standard_product_description=None, standard_single_image_highlights=None, standard_single_image_specs_detail=None, standard_single_side_image=None, standard_tech_specs=None, standard_text=None, standard_three_image_text=None, _configuration=None):  # noqa: E501
        """ContentModule - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._content_module_type = None
        self._standard_company_logo = None
        self._standard_comparison_table = None
        self._standard_four_image_text = None
        self._standard_four_image_text_quadrant = None
        self._standard_header_image_text = None
        self._standard_image_sidebar = None
        self._standard_image_text_overlay = None
        self._standard_multiple_image_text = None
        self._standard_product_description = None
        self._standard_single_image_highlights = None
        self._standard_single_image_specs_detail = None
        self._standard_single_side_image = None
        self._standard_tech_specs = None
        self._standard_text = None
        self._standard_three_image_text = None
        self.discriminator = None

        self.content_module_type = content_module_type
        if standard_company_logo is not None:
            self.standard_company_logo = standard_company_logo
        if standard_comparison_table is not None:
            self.standard_comparison_table = standard_comparison_table
        if standard_four_image_text is not None:
            self.standard_four_image_text = standard_four_image_text
        if standard_four_image_text_quadrant is not None:
            self.standard_four_image_text_quadrant = standard_four_image_text_quadrant
        if standard_header_image_text is not None:
            self.standard_header_image_text = standard_header_image_text
        if standard_image_sidebar is not None:
            self.standard_image_sidebar = standard_image_sidebar
        if standard_image_text_overlay is not None:
            self.standard_image_text_overlay = standard_image_text_overlay
        if standard_multiple_image_text is not None:
            self.standard_multiple_image_text = standard_multiple_image_text
        if standard_product_description is not None:
            self.standard_product_description = standard_product_description
        if standard_single_image_highlights is not None:
            self.standard_single_image_highlights = standard_single_image_highlights
        if standard_single_image_specs_detail is not None:
            self.standard_single_image_specs_detail = standard_single_image_specs_detail
        if standard_single_side_image is not None:
            self.standard_single_side_image = standard_single_side_image
        if standard_tech_specs is not None:
            self.standard_tech_specs = standard_tech_specs
        if standard_text is not None:
            self.standard_text = standard_text
        if standard_three_image_text is not None:
            self.standard_three_image_text = standard_three_image_text

    @property
    def content_module_type(self):
        """Gets the content_module_type of this ContentModule.  # noqa: E501


        :return: The content_module_type of this ContentModule.  # noqa: E501
        :rtype: ContentModuleType
        """
        return self._content_module_type

    @content_module_type.setter
    def content_module_type(self, content_module_type):
        """Sets the content_module_type of this ContentModule.


        :param content_module_type: The content_module_type of this ContentModule.  # noqa: E501
        :type: ContentModuleType
        """
        if self._configuration.client_side_validation and content_module_type is None:
            raise ValueError("Invalid value for `content_module_type`, must not be `None`")  # noqa: E501

        self._content_module_type = content_module_type

    @property
    def standard_company_logo(self):
        """Gets the standard_company_logo of this ContentModule.  # noqa: E501


        :return: The standard_company_logo of this ContentModule.  # noqa: E501
        :rtype: StandardCompanyLogoModule
        """
        return self._standard_company_logo

    @standard_company_logo.setter
    def standard_company_logo(self, standard_company_logo):
        """Sets the standard_company_logo of this ContentModule.


        :param standard_company_logo: The standard_company_logo of this ContentModule.  # noqa: E501
        :type: StandardCompanyLogoModule
        """

        self._standard_company_logo = standard_company_logo

    @property
    def standard_comparison_table(self):
        """Gets the standard_comparison_table of this ContentModule.  # noqa: E501


        :return: The standard_comparison_table of this ContentModule.  # noqa: E501
        :rtype: StandardComparisonTableModule
        """
        return self._standard_comparison_table

    @standard_comparison_table.setter
    def standard_comparison_table(self, standard_comparison_table):
        """Sets the standard_comparison_table of this ContentModule.


        :param standard_comparison_table: The standard_comparison_table of this ContentModule.  # noqa: E501
        :type: StandardComparisonTableModule
        """

        self._standard_comparison_table = standard_comparison_table

    @property
    def standard_four_image_text(self):
        """Gets the standard_four_image_text of this ContentModule.  # noqa: E501


        :return: The standard_four_image_text of this ContentModule.  # noqa: E501
        :rtype: StandardFourImageTextModule
        """
        return self._standard_four_image_text

    @standard_four_image_text.setter
    def standard_four_image_text(self, standard_four_image_text):
        """Sets the standard_four_image_text of this ContentModule.


        :param standard_four_image_text: The standard_four_image_text of this ContentModule.  # noqa: E501
        :type: StandardFourImageTextModule
        """

        self._standard_four_image_text = standard_four_image_text

    @property
    def standard_four_image_text_quadrant(self):
        """Gets the standard_four_image_text_quadrant of this ContentModule.  # noqa: E501


        :return: The standard_four_image_text_quadrant of this ContentModule.  # noqa: E501
        :rtype: StandardFourImageTextQuadrantModule
        """
        return self._standard_four_image_text_quadrant

    @standard_four_image_text_quadrant.setter
    def standard_four_image_text_quadrant(self, standard_four_image_text_quadrant):
        """Sets the standard_four_image_text_quadrant of this ContentModule.


        :param standard_four_image_text_quadrant: The standard_four_image_text_quadrant of this ContentModule.  # noqa: E501
        :type: StandardFourImageTextQuadrantModule
        """

        self._standard_four_image_text_quadrant = standard_four_image_text_quadrant

    @property
    def standard_header_image_text(self):
        """Gets the standard_header_image_text of this ContentModule.  # noqa: E501


        :return: The standard_header_image_text of this ContentModule.  # noqa: E501
        :rtype: StandardHeaderImageTextModule
        """
        return self._standard_header_image_text

    @standard_header_image_text.setter
    def standard_header_image_text(self, standard_header_image_text):
        """Sets the standard_header_image_text of this ContentModule.


        :param standard_header_image_text: The standard_header_image_text of this ContentModule.  # noqa: E501
        :type: StandardHeaderImageTextModule
        """

        self._standard_header_image_text = standard_header_image_text

    @property
    def standard_image_sidebar(self):
        """Gets the standard_image_sidebar of this ContentModule.  # noqa: E501


        :return: The standard_image_sidebar of this ContentModule.  # noqa: E501
        :rtype: StandardImageSidebarModule
        """
        return self._standard_image_sidebar

    @standard_image_sidebar.setter
    def standard_image_sidebar(self, standard_image_sidebar):
        """Sets the standard_image_sidebar of this ContentModule.


        :param standard_image_sidebar: The standard_image_sidebar of this ContentModule.  # noqa: E501
        :type: StandardImageSidebarModule
        """

        self._standard_image_sidebar = standard_image_sidebar

    @property
    def standard_image_text_overlay(self):
        """Gets the standard_image_text_overlay of this ContentModule.  # noqa: E501


        :return: The standard_image_text_overlay of this ContentModule.  # noqa: E501
        :rtype: StandardImageTextOverlayModule
        """
        return self._standard_image_text_overlay

    @standard_image_text_overlay.setter
    def standard_image_text_overlay(self, standard_image_text_overlay):
        """Sets the standard_image_text_overlay of this ContentModule.


        :param standard_image_text_overlay: The standard_image_text_overlay of this ContentModule.  # noqa: E501
        :type: StandardImageTextOverlayModule
        """

        self._standard_image_text_overlay = standard_image_text_overlay

    @property
    def standard_multiple_image_text(self):
        """Gets the standard_multiple_image_text of this ContentModule.  # noqa: E501


        :return: The standard_multiple_image_text of this ContentModule.  # noqa: E501
        :rtype: StandardMultipleImageTextModule
        """
        return self._standard_multiple_image_text

    @standard_multiple_image_text.setter
    def standard_multiple_image_text(self, standard_multiple_image_text):
        """Sets the standard_multiple_image_text of this ContentModule.


        :param standard_multiple_image_text: The standard_multiple_image_text of this ContentModule.  # noqa: E501
        :type: StandardMultipleImageTextModule
        """

        self._standard_multiple_image_text = standard_multiple_image_text

    @property
    def standard_product_description(self):
        """Gets the standard_product_description of this ContentModule.  # noqa: E501


        :return: The standard_product_description of this ContentModule.  # noqa: E501
        :rtype: StandardProductDescriptionModule
        """
        return self._standard_product_description

    @standard_product_description.setter
    def standard_product_description(self, standard_product_description):
        """Sets the standard_product_description of this ContentModule.


        :param standard_product_description: The standard_product_description of this ContentModule.  # noqa: E501
        :type: StandardProductDescriptionModule
        """

        self._standard_product_description = standard_product_description

    @property
    def standard_single_image_highlights(self):
        """Gets the standard_single_image_highlights of this ContentModule.  # noqa: E501


        :return: The standard_single_image_highlights of this ContentModule.  # noqa: E501
        :rtype: StandardSingleImageHighlightsModule
        """
        return self._standard_single_image_highlights

    @standard_single_image_highlights.setter
    def standard_single_image_highlights(self, standard_single_image_highlights):
        """Sets the standard_single_image_highlights of this ContentModule.


        :param standard_single_image_highlights: The standard_single_image_highlights of this ContentModule.  # noqa: E501
        :type: StandardSingleImageHighlightsModule
        """

        self._standard_single_image_highlights = standard_single_image_highlights

    @property
    def standard_single_image_specs_detail(self):
        """Gets the standard_single_image_specs_detail of this ContentModule.  # noqa: E501


        :return: The standard_single_image_specs_detail of this ContentModule.  # noqa: E501
        :rtype: StandardSingleImageSpecsDetailModule
        """
        return self._standard_single_image_specs_detail

    @standard_single_image_specs_detail.setter
    def standard_single_image_specs_detail(self, standard_single_image_specs_detail):
        """Sets the standard_single_image_specs_detail of this ContentModule.


        :param standard_single_image_specs_detail: The standard_single_image_specs_detail of this ContentModule.  # noqa: E501
        :type: StandardSingleImageSpecsDetailModule
        """

        self._standard_single_image_specs_detail = standard_single_image_specs_detail

    @property
    def standard_single_side_image(self):
        """Gets the standard_single_side_image of this ContentModule.  # noqa: E501


        :return: The standard_single_side_image of this ContentModule.  # noqa: E501
        :rtype: StandardSingleSideImageModule
        """
        return self._standard_single_side_image

    @standard_single_side_image.setter
    def standard_single_side_image(self, standard_single_side_image):
        """Sets the standard_single_side_image of this ContentModule.


        :param standard_single_side_image: The standard_single_side_image of this ContentModule.  # noqa: E501
        :type: StandardSingleSideImageModule
        """

        self._standard_single_side_image = standard_single_side_image

    @property
    def standard_tech_specs(self):
        """Gets the standard_tech_specs of this ContentModule.  # noqa: E501


        :return: The standard_tech_specs of this ContentModule.  # noqa: E501
        :rtype: StandardTechSpecsModule
        """
        return self._standard_tech_specs

    @standard_tech_specs.setter
    def standard_tech_specs(self, standard_tech_specs):
        """Sets the standard_tech_specs of this ContentModule.


        :param standard_tech_specs: The standard_tech_specs of this ContentModule.  # noqa: E501
        :type: StandardTechSpecsModule
        """

        self._standard_tech_specs = standard_tech_specs

    @property
    def standard_text(self):
        """Gets the standard_text of this ContentModule.  # noqa: E501


        :return: The standard_text of this ContentModule.  # noqa: E501
        :rtype: StandardTextModule
        """
        return self._standard_text

    @standard_text.setter
    def standard_text(self, standard_text):
        """Sets the standard_text of this ContentModule.


        :param standard_text: The standard_text of this ContentModule.  # noqa: E501
        :type: StandardTextModule
        """

        self._standard_text = standard_text

    @property
    def standard_three_image_text(self):
        """Gets the standard_three_image_text of this ContentModule.  # noqa: E501


        :return: The standard_three_image_text of this ContentModule.  # noqa: E501
        :rtype: StandardThreeImageTextModule
        """
        return self._standard_three_image_text

    @standard_three_image_text.setter
    def standard_three_image_text(self, standard_three_image_text):
        """Sets the standard_three_image_text of this ContentModule.


        :param standard_three_image_text: The standard_three_image_text of this ContentModule.  # noqa: E501
        :type: StandardThreeImageTextModule
        """

        self._standard_three_image_text = standard_three_image_text

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(ContentModule, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ContentModule):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, ContentModule):
            return True

        return self.to_dict() != other.to_dict()
