def is_correct(self):
        valid = True
        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
        for timeperiod in list(self.items.values()):
            del timeperiod.rec_tag
            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
        for timeperiod in self:
            valid = timeperiod.is_correct() and valid
        return valid