]> git.droids-corp.org - imapami.git/commitdiff
fix not ?
authorOlivier Matz <olivier.matz@6wind.com>
Mon, 28 Nov 2016 10:07:57 +0000 (11:07 +0100)
committerOlivier Matz <olivier.matz@6wind.com>
Mon, 28 Nov 2016 10:07:57 +0000 (11:07 +0100)
imapami/conditions.py
imapami/rules.py

index 600a2c697ad5d03b75fef76179a8010bdd59f5a2..6b455104d38c3d1b8da94ccacadfe5b867aef302 100644 (file)
@@ -102,9 +102,9 @@ class ImapamiCond(object):
         :arg ImapamiMail mail:
           The mail data
         :returns:
-          True if the condition matches, else False.
+          None if nothing to check, True if the condition matches, else False.
         """
-        return True
+        return None
 
     def get_criteria(self):
         """
@@ -133,7 +133,10 @@ class ImapamiCondNot(ImapamiCond):
         self.cond = cond
 
     def check(self, ami, mail):
-        return not self.cond.check(ami, mail)
+        ret = self.cond.check(ami, mail)
+        if ret is None:
+            return None
+        return not ret
 register(ImapamiCondNot)
 
 class ImapamiCondUnseen(ImapamiCond):
@@ -642,10 +645,14 @@ class ImapamiCondAnd(ImapamiCond):
         self.cond_list = cond_list
 
     def check(self, ami, mail):
+        ret = None
         for c in self.cond_list:
-            if c.check(ami, mail) == False:
+            val = c.check(ami, mail)
+            if val is False:
                 return False
-        return True
+            if val is True:
+                ret = True
+        return ret
 register(ImapamiCondAnd)
 
 class ImapamiCondOr(ImapamiCond):
@@ -683,10 +690,14 @@ class ImapamiCondOr(ImapamiCond):
         self.cond_list = cond_list
 
     def check(self, ami, mail):
+        ret = None
         for c in self.cond_list:
-            if c.check(ami, mail) == True:
+            val = c.check(ami, mail)
+            if val is True:
                 return True
-        return False
+            if val is False:
+                ret = False
+        return ret
 register(ImapamiCondOr)
 
 class ImapamiCondEq(ImapamiCond):
index 3adff91ccccbef00c3bffaf5762086b97baca501..d5b1f9f4d4f8fb144547e25abddaa75a1cd0928f 100644 (file)
@@ -246,7 +246,7 @@ class ImapamiRule(object):
                     mail_data['internal_date'])
 
             mail = imapami.mail.ImapamiMail(**mail_data)
-            if self.condition.check(ami, mail) == True:
+            if self.condition.check(ami, mail) in [None, True]:
                 ami.logger.debug("item %s matches conditions", item)
                 success = self.match_action.process(ami, mail)
             else: