# coding: utf-8

"""
    eLabFTW REST API v2 Documentation

    This document describes all available endpoints and methods for eLabFTW's API version 2.   # noqa: E501

    OpenAPI spec version: 2.0.0
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class ExperimentTemplate(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 = {
        'id': 'int',
        'title': 'str',
        'body': 'str',
        'userid': 'int',
        'canread': 'str',
        'canwrite': 'str',
        'locked': 'int',
        'lockedby': 'int',
        'lockedwhen': 'str',
        'fullname': 'str',
        'metadata': 'str',
        'teams_id': 'int',
        'is_pinned': 'int',
        'tags': 'str',
        'tags_id': 'str'
    }

    attribute_map = {
        'id': 'id',
        'title': 'title',
        'body': 'body',
        'userid': 'userid',
        'canread': 'canread',
        'canwrite': 'canwrite',
        'locked': 'locked',
        'lockedby': 'lockedby',
        'lockedwhen': 'lockedwhen',
        'fullname': 'fullname',
        'metadata': 'metadata',
        'teams_id': 'teams_id',
        'is_pinned': 'is_pinned',
        'tags': 'tags',
        'tags_id': 'tags_id'
    }

    def __init__(self, id=None, title=None, body=None, userid=None, canread=None, canwrite=None, locked=None, lockedby=None, lockedwhen=None, fullname=None, metadata=None, teams_id=None, is_pinned=None, tags=None, tags_id=None):  # noqa: E501
        """ExperimentTemplate - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._title = None
        self._body = None
        self._userid = None
        self._canread = None
        self._canwrite = None
        self._locked = None
        self._lockedby = None
        self._lockedwhen = None
        self._fullname = None
        self._metadata = None
        self._teams_id = None
        self._is_pinned = None
        self._tags = None
        self._tags_id = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if title is not None:
            self.title = title
        if body is not None:
            self.body = body
        if userid is not None:
            self.userid = userid
        if canread is not None:
            self.canread = canread
        if canwrite is not None:
            self.canwrite = canwrite
        if locked is not None:
            self.locked = locked
        if lockedby is not None:
            self.lockedby = lockedby
        if lockedwhen is not None:
            self.lockedwhen = lockedwhen
        if fullname is not None:
            self.fullname = fullname
        if metadata is not None:
            self.metadata = metadata
        if teams_id is not None:
            self.teams_id = teams_id
        if is_pinned is not None:
            self.is_pinned = is_pinned
        if tags is not None:
            self.tags = tags
        if tags_id is not None:
            self.tags_id = tags_id

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


        :return: The id of this ExperimentTemplate.  # noqa: E501
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this ExperimentTemplate.


        :param id: The id of this ExperimentTemplate.  # noqa: E501
        :type: int
        """

        self._id = id

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


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

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


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

        self._title = title

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


        :return: The body of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._body

    @body.setter
    def body(self, body):
        """Sets the body of this ExperimentTemplate.


        :param body: The body of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._body = body

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


        :return: The userid of this ExperimentTemplate.  # noqa: E501
        :rtype: int
        """
        return self._userid

    @userid.setter
    def userid(self, userid):
        """Sets the userid of this ExperimentTemplate.


        :param userid: The userid of this ExperimentTemplate.  # noqa: E501
        :type: int
        """

        self._userid = userid

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


        :return: The canread of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._canread

    @canread.setter
    def canread(self, canread):
        """Sets the canread of this ExperimentTemplate.


        :param canread: The canread of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._canread = canread

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


        :return: The canwrite of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._canwrite

    @canwrite.setter
    def canwrite(self, canwrite):
        """Sets the canwrite of this ExperimentTemplate.


        :param canwrite: The canwrite of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._canwrite = canwrite

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


        :return: The locked of this ExperimentTemplate.  # noqa: E501
        :rtype: int
        """
        return self._locked

    @locked.setter
    def locked(self, locked):
        """Sets the locked of this ExperimentTemplate.


        :param locked: The locked of this ExperimentTemplate.  # noqa: E501
        :type: int
        """

        self._locked = locked

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


        :return: The lockedby of this ExperimentTemplate.  # noqa: E501
        :rtype: int
        """
        return self._lockedby

    @lockedby.setter
    def lockedby(self, lockedby):
        """Sets the lockedby of this ExperimentTemplate.


        :param lockedby: The lockedby of this ExperimentTemplate.  # noqa: E501
        :type: int
        """

        self._lockedby = lockedby

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


        :return: The lockedwhen of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._lockedwhen

    @lockedwhen.setter
    def lockedwhen(self, lockedwhen):
        """Sets the lockedwhen of this ExperimentTemplate.


        :param lockedwhen: The lockedwhen of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._lockedwhen = lockedwhen

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


        :return: The fullname of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._fullname

    @fullname.setter
    def fullname(self, fullname):
        """Sets the fullname of this ExperimentTemplate.


        :param fullname: The fullname of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._fullname = fullname

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


        :return: The metadata of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this ExperimentTemplate.


        :param metadata: The metadata of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._metadata = metadata

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


        :return: The teams_id of this ExperimentTemplate.  # noqa: E501
        :rtype: int
        """
        return self._teams_id

    @teams_id.setter
    def teams_id(self, teams_id):
        """Sets the teams_id of this ExperimentTemplate.


        :param teams_id: The teams_id of this ExperimentTemplate.  # noqa: E501
        :type: int
        """

        self._teams_id = teams_id

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


        :return: The is_pinned of this ExperimentTemplate.  # noqa: E501
        :rtype: int
        """
        return self._is_pinned

    @is_pinned.setter
    def is_pinned(self, is_pinned):
        """Sets the is_pinned of this ExperimentTemplate.


        :param is_pinned: The is_pinned of this ExperimentTemplate.  # noqa: E501
        :type: int
        """

        self._is_pinned = is_pinned

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


        :return: The tags of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._tags

    @tags.setter
    def tags(self, tags):
        """Sets the tags of this ExperimentTemplate.


        :param tags: The tags of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._tags = tags

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


        :return: The tags_id of this ExperimentTemplate.  # noqa: E501
        :rtype: str
        """
        return self._tags_id

    @tags_id.setter
    def tags_id(self, tags_id):
        """Sets the tags_id of this ExperimentTemplate.


        :param tags_id: The tags_id of this ExperimentTemplate.  # noqa: E501
        :type: str
        """

        self._tags_id = tags_id

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

        return self.__dict__ == other.__dict__

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