netcmd: models: fix BooleanField filtering didn't work on FALSE value
authorRob van der Linde <rob@catalyst.net.nz>
Thu, 1 Feb 2024 03:16:11 +0000 (16:16 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 8 Feb 2024 02:48:44 +0000 (02:48 +0000)
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/netcmd/domain/models/fields.py

index 36ebc9fdb4f99447eb27a64eb59d0519c312532d..e9f0529680079b4e913629e63bee266752a84367 100644 (file)
@@ -412,6 +412,14 @@ class BooleanField(Field):
         else:
             return MessageElement(str(bool(value)).upper(), flags, self.name)
 
+    def expression(self, value):
+        """Returns the ldb search expression for this field."""
+        # BooleanField edge case: query by TRUE works but not by FALSE.
+        if value is False:
+            return f"(!({self.name}=TRUE))"
+        else:
+            return super().expression(str(value))
+
 
 class PossibleClaimValuesField(Field):
     """Field for parsing possible values XML for claim types.