# coding: utf-8

"""
    Dokumenty CITES

    API pro datový řadič dokumentů CITES ### Verze 1.0.0    - public   - developers  ### Verze 1.1.0    - admins   - additional   - statement   - attachments   - registration_cards   - permit   # noqa: E501

    OpenAPI spec version: 1.1.0
    Contact: info@sysnet.cz
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class MetadataType(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 = {
        'title': 'str',
        'authorized': 'bool',
        'deleted': 'bool',
        'date_created': 'datetime',
        'date_modified': 'datetime',
        'id_no': 'str',
        'id_no_local': 'str',
        'id_no_list': 'list[str]',
        'unid': 'str',
        'pid': 'str',
        'uuid': 'str',
        'form': 'str',
        'creator': 'str',
        'created_by_official': 'bool',
        'contributor': 'UserType'
    }

    attribute_map = {
        'title': 'title',
        'authorized': 'authorized',
        'deleted': 'deleted',
        'date_created': 'date_created',
        'date_modified': 'date_modified',
        'id_no': 'id_no',
        'id_no_local': 'id_no_local',
        'id_no_list': 'id_no_list',
        'unid': 'unid',
        'pid': 'pid',
        'uuid': 'uuid',
        'form': 'form',
        'creator': 'creator',
        'created_by_official': 'created_by_official',
        'contributor': 'contributor'
    }

    def __init__(self, title=None, authorized=False, deleted=False, date_created=None, date_modified=None, id_no=None, id_no_local=None, id_no_list=None, unid=None, pid=None, uuid=None, form=None, creator=None, created_by_official=False, contributor=None):  # noqa: E501
        """MetadataType - a model defined in Swagger"""  # noqa: E501
        self._title = None
        self._authorized = None
        self._deleted = None
        self._date_created = None
        self._date_modified = None
        self._id_no = None
        self._id_no_local = None
        self._id_no_list = None
        self._unid = None
        self._pid = None
        self._uuid = None
        self._form = None
        self._creator = None
        self._created_by_official = None
        self._contributor = None
        self.discriminator = None
        if title is not None:
            self.title = title
        if authorized is not None:
            self.authorized = authorized
        if deleted is not None:
            self.deleted = deleted
        if date_created is not None:
            self.date_created = date_created
        if date_modified is not None:
            self.date_modified = date_modified
        if id_no is not None:
            self.id_no = id_no
        if id_no_local is not None:
            self.id_no_local = id_no_local
        if id_no_list is not None:
            self.id_no_list = id_no_list
        if unid is not None:
            self.unid = unid
        if pid is not None:
            self.pid = pid
        if uuid is not None:
            self.uuid = uuid
        if form is not None:
            self.form = form
        if creator is not None:
            self.creator = creator
        if created_by_official is not None:
            self.created_by_official = created_by_official
        if contributor is not None:
            self.contributor = contributor

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

        Název dokumentu  # noqa: E501

        :return: The title of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title):
        """Sets the title of this MetadataType.

        Název dokumentu  # noqa: E501

        :param title: The title of this MetadataType.  # noqa: E501
        :type: str
        """

        self._title = title

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

        Indikuje, zda je dokument autorizován a připraven pro publikaci  # noqa: E501

        :return: The authorized of this MetadataType.  # noqa: E501
        :rtype: bool
        """
        return self._authorized

    @authorized.setter
    def authorized(self, authorized):
        """Sets the authorized of this MetadataType.

        Indikuje, zda je dokument autorizován a připraven pro publikaci  # noqa: E501

        :param authorized: The authorized of this MetadataType.  # noqa: E501
        :type: bool
        """

        self._authorized = authorized

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

        Indikuje, zda je dokument vyřazen z dalšího používání  # noqa: E501

        :return: The deleted of this MetadataType.  # noqa: E501
        :rtype: bool
        """
        return self._deleted

    @deleted.setter
    def deleted(self, deleted):
        """Sets the deleted of this MetadataType.

        Indikuje, zda je dokument vyřazen z dalšího používání  # noqa: E501

        :param deleted: The deleted of this MetadataType.  # noqa: E501
        :type: bool
        """

        self._deleted = deleted

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

        Datum a čas vytvoření dokumentu  # noqa: E501

        :return: The date_created of this MetadataType.  # noqa: E501
        :rtype: datetime
        """
        return self._date_created

    @date_created.setter
    def date_created(self, date_created):
        """Sets the date_created of this MetadataType.

        Datum a čas vytvoření dokumentu  # noqa: E501

        :param date_created: The date_created of this MetadataType.  # noqa: E501
        :type: datetime
        """

        self._date_created = date_created

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

        Datum a čas poslední úpravy dokumentu  # noqa: E501

        :return: The date_modified of this MetadataType.  # noqa: E501
        :rtype: datetime
        """
        return self._date_modified

    @date_modified.setter
    def date_modified(self, date_modified):
        """Sets the date_modified of this MetadataType.

        Datum a čas poslední úpravy dokumentu  # noqa: E501

        :param date_modified: The date_modified of this MetadataType.  # noqa: E501
        :type: datetime
        """

        self._date_modified = date_modified

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

        Číslo dokumentu  # noqa: E501

        :return: The id_no of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._id_no

    @id_no.setter
    def id_no(self, id_no):
        """Sets the id_no of this MetadataType.

        Číslo dokumentu  # noqa: E501

        :param id_no: The id_no of this MetadataType.  # noqa: E501
        :type: str
        """

        self._id_no = id_no

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

        Lokální číslo dokumentu  # noqa: E501

        :return: The id_no_local of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._id_no_local

    @id_no_local.setter
    def id_no_local(self, id_no_local):
        """Sets the id_no_local of this MetadataType.

        Lokální číslo dokumentu  # noqa: E501

        :param id_no_local: The id_no_local of this MetadataType.  # noqa: E501
        :type: str
        """

        self._id_no_local = id_no_local

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

        Seznam všech čísel dokumentu  # noqa: E501

        :return: The id_no_list of this MetadataType.  # noqa: E501
        :rtype: list[str]
        """
        return self._id_no_list

    @id_no_list.setter
    def id_no_list(self, id_no_list):
        """Sets the id_no_list of this MetadataType.

        Seznam všech čísel dokumentu  # noqa: E501

        :param id_no_list: The id_no_list of this MetadataType.  # noqa: E501
        :type: list[str]
        """

        self._id_no_list = id_no_list

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

        Domino universal ID  # noqa: E501

        :return: The unid of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._unid

    @unid.setter
    def unid(self, unid):
        """Sets the unid of this MetadataType.

        Domino universal ID  # noqa: E501

        :param unid: The unid of this MetadataType.  # noqa: E501
        :type: str
        """

        self._unid = unid

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

        Unique identifier  # noqa: E501

        :return: The pid of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._pid

    @pid.setter
    def pid(self, pid):
        """Sets the pid of this MetadataType.

        Unique identifier  # noqa: E501

        :param pid: The pid of this MetadataType.  # noqa: E501
        :type: str
        """

        self._pid = pid

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

        Unique identifier  # noqa: E501

        :return: The uuid of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._uuid

    @uuid.setter
    def uuid(self, uuid):
        """Sets the uuid of this MetadataType.

        Unique identifier  # noqa: E501

        :param uuid: The uuid of this MetadataType.  # noqa: E501
        :type: str
        """

        self._uuid = uuid

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

        Formulář  # noqa: E501

        :return: The form of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._form

    @form.setter
    def form(self, form):
        """Sets the form of this MetadataType.

        Formulář  # noqa: E501

        :param form: The form of this MetadataType.  # noqa: E501
        :type: str
        """

        self._form = form

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

        Tvůrce dokumentu - Subjekt primárně odpovědný za vytvoření dokument.  # noqa: E501

        :return: The creator of this MetadataType.  # noqa: E501
        :rtype: str
        """
        return self._creator

    @creator.setter
    def creator(self, creator):
        """Sets the creator of this MetadataType.

        Tvůrce dokumentu - Subjekt primárně odpovědný za vytvoření dokument.  # noqa: E501

        :param creator: The creator of this MetadataType.  # noqa: E501
        :type: str
        """

        self._creator = creator

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

        Vytvořeno úředníkem  # noqa: E501

        :return: The created_by_official of this MetadataType.  # noqa: E501
        :rtype: bool
        """
        return self._created_by_official

    @created_by_official.setter
    def created_by_official(self, created_by_official):
        """Sets the created_by_official of this MetadataType.

        Vytvořeno úředníkem  # noqa: E501

        :param created_by_official: The created_by_official of this MetadataType.  # noqa: E501
        :type: bool
        """

        self._created_by_official = created_by_official

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


        :return: The contributor of this MetadataType.  # noqa: E501
        :rtype: UserType
        """
        return self._contributor

    @contributor.setter
    def contributor(self, contributor):
        """Sets the contributor of this MetadataType.


        :param contributor: The contributor of this MetadataType.  # noqa: E501
        :type: UserType
        """

        self._contributor = contributor

    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(MetadataType, 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, MetadataType):
            return False

        return self.__dict__ == other.__dict__

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