Просмотр исходного кода

Cache checks results so they can be performed repeatedly. #37

Rafał Pitoń 11 лет назад
Родитель
Сommit
9c49ffbe6c
1 измененных файлов с 8 добавлено и 0 удалено
  1. 8 0
      misago/apps/profiles/warnings/warningstracker.py

+ 8 - 0
misago/apps/profiles/warnings/warningstracker.py

@@ -1,8 +1,16 @@
 class WarningsTracker(object):
     def __init__(self, warning_level):
         self.warning_level = warning_level
+        self._checked = {}
 
     def is_warning_active(self, warning):
+        try:
+            return self._checked[warning.pk]
+        except KeyError:
+            self._checked[warning.pk] = self.check_warning(warning)
+            return self._checked[warning.pk]
+
+    def check_warning(self, warning):
         if self.warning_level > 0 and not warning.canceled:
             self.warning_level -= 1
             return True