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
"""
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."""
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,
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 += ")"