warningstracker.py 672 B

123456789101112131415161718192021
  1. class WarningsTracker(object):
  2. def __init__(self, warning_level):
  3. self.warning_level = warning_level
  4. self._checked = {}
  5. def is_warning_active(self, warning):
  6. try:
  7. return self._checked[warning.pk]
  8. except KeyError:
  9. self._checked[warning.pk] = self.check_warning(warning)
  10. return self._checked[warning.pk]
  11. def check_warning(self, warning):
  12. if self.warning_level > 0 and not warning.canceled:
  13. self.warning_level -= 1
  14. return True
  15. else:
  16. return False
  17. def is_warning_expired(self, warning):
  18. return not self.is_warning_active(warning)