def is_eligible(self, timestamp, status, notif_number, in_notif_time, interval, escal_period):
        # pylint: disable=too-many-return-statements
        """Check if the escalation is eligible (notification is escalated or not)

        Escalation is NOT eligible in ONE of the following condition is fulfilled::

        * escalation is not time based and notification number not in range
          [first_notification;last_notification] (if last_notif == 0, it's infinity)
        * escalation is time based and notification time not in range
          [first_notification_time;last_notification_time] (if last_notif_time == 0, it's infinity)
        * status does not matches escalation_options ('WARNING' <=> 'w' ...)
        * escalation_period is not legit for this time (now usually)

        :param timestamp: timestamp to check if timeperiod is valid
        :type timestamp: int
        :param status: item status (one of the small_states key)
        :type status: str
        :param notif_number: current notification number
        :type notif_number: int
        :param in_notif_time: current notification time
        :type in_notif_time: int
        :param interval: time interval length
        :type interval: int
        :return: True if no condition has been fulfilled, otherwise False
        :rtype: bool
        """
        short_states = {
            u'WARNING': 'w', u'UNKNOWN': 'u', u'CRITICAL': 'c',
            u'RECOVERY': 'r', u'FLAPPING': 'f', u'DOWNTIME': 's',
            u'DOWN': 'd', u'UNREACHABLE': 'x', u'OK': 'o', u'UP': 'o'
        }

        # If we are not time based, we check notification numbers:
        if not self.time_based:
            # Begin with the easy cases
            if notif_number < self.first_notification:
                return False

            # self.last_notification = 0 mean no end
            if self.last_notification and notif_number > self.last_notification:
                return False
        # Else we are time based, we must check for the good value
        else:
            # Begin with the easy cases
            if in_notif_time < self.first_notification_time * interval:
                return False

            if self.last_notification_time and \
                    in_notif_time > self.last_notification_time * interval:
                return False

        # If our status is not good, we bail out too
        if status in short_states and short_states[status] not in self.escalation_options:
            return False

        # Maybe the time is not in our escalation_period
        if escal_period is not None and not escal_period.is_time_valid(timestamp):
            return False

        # Ok, I do not see why not escalade. So it's True :)
        return True
Check if the escalation is eligible (notification is escalated or not)

        Escalation is NOT eligible in ONE of the following condition is fulfilled::

        * escalation is not time based and notification number not in range
          [first_notification;last_notification] (if last_notif == 0, it's infinity)
        * escalation is time based and notification time not in range
          [first_notification_time;last_notification_time] (if last_notif_time == 0, it's infinity)
        * status does not matches escalation_options ('WARNING' <=> 'w' ...)
        * escalation_period is not legit for this time (now usually)

        :param timestamp: timestamp to check if timeperiod is valid
        :type timestamp: int
        :param status: item status (one of the small_states key)
        :type status: str
        :param notif_number: current notification number
        :type notif_number: int
        :param in_notif_time: current notification time
        :type in_notif_time: int
        :param interval: time interval length
        :type interval: int
        :return: True if no condition has been fulfilled, otherwise False
        :rtype: bool