]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
netcmd: models: move expression code to Field class
authorRob van der Linde <rob@catalyst.net.nz>
Thu, 1 Feb 2024 03:01:21 +0000 (16:01 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 8 Feb 2024 02:48:44 +0000 (02:48 +0000)
This is necessary to deal with edge cases for specific fields.

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
python/samba/netcmd/domain/models/model.py

index ceec981911993e14195559013407d3c54164a35f..36ebc9fdb4f99447eb27a64eb59d0519c312532d 100644 (file)
@@ -27,7 +27,7 @@ from abc import ABCMeta, abstractmethod
 from datetime import datetime
 from xml.etree import ElementTree
 
-from ldb import Dn, MessageElement, string_to_time, timestring
+from ldb import Dn, MessageElement, binary_encode, string_to_time, timestring
 from samba.dcerpc import security
 from samba.dcerpc.misc import GUID
 from samba.ndr import ndr_pack, ndr_unpack
@@ -91,6 +91,10 @@ class Field(metaclass=ABCMeta):
         """
         pass
 
+    def expression(self, value):
+        """Returns the ldb search expression for this field."""
+        return f"({self.name}={binary_encode(value)})"
+
 
 class IntegerField(Field):
     """A simple integer field, can be an int or list of int."""
index 2c63392caa83cc6465364c83b943223626abea8b..3809d441ccb70777fd8c67ac3f6f2631e37db94d 100644 (file)
@@ -25,7 +25,7 @@ from abc import ABCMeta, abstractmethod
 
 from ldb import (ERR_NO_SUCH_OBJECT, FLAG_MOD_ADD, FLAG_MOD_REPLACE,
                  LdbError, Message, MessageElement, SCOPE_BASE,
-                 SCOPE_SUBTREE, binary_encode)
+                 SCOPE_SUBTREE)
 from samba.sd_utils import SDUtils
 
 from .exceptions import (DeleteError, DoesNotExist, FieldError,
@@ -221,7 +221,7 @@ class Model(metaclass=ModelMeta):
             field = cls.fields.get(field_name)
             if field is None:
                 raise ValueError(f"Unknown field '{field_name}'")
-            expression += f"({field.name}={binary_encode(value)})"
+            expression += field.expression(value)
 
         if num_fields > 1:
             expression += ")"