code: def is_correct(self):
          
          valid = True
          # We do not want a same hg to be explode again and again
          # so we tag it
          for timeperiod in list(self.items.values()):
              timeperiod.rec_tag = False
  
          for timeperiod in list(self.items.values()):
              for tmp_tp in list(self.items.values()):
                  tmp_tp.rec_tag = False
              valid = timeperiod.check_exclude_rec() and valid
  
          # We clean the tags and collect the warning/erro messages
          for timeperiod in list(self.items.values()):
              del timeperiod.rec_tag
  
              # Now other checks
              if not timeperiod.is_correct():
                  valid = False
                  source = getattr(timeperiod, 'imported_from', "unknown source")
                  msg = "Configuration in %s::%s is incorrect; from: %s" % (
                      timeperiod.my_type, timeperiod.get_name(), source
                  )
                  self.add_error(msg)
  
              self.configuration_errors += timeperiod.configuration_errors
              self.configuration_warnings += timeperiod.configuration_warnings
  
          # And check all timeperiods for correct (sunday is false)
          for timeperiod in self:
              valid = timeperiod.is_correct() and valid
  
          return valid
docs: check if each properties of timeperiods are valid
  
          :return: True if is correct, otherwise False
          :rtype: bool