diff options
| author | Rob van der Linde <rob@catalyst.net.nz> | 2024-02-02 09:54:41 +1300 |
|---|---|---|
| committer | Andrew Bartlett <abartlet@samba.org> | 2024-02-08 02:48:44 +0000 |
| commit | 37855511f636f7bd0082d60d97db2a6113c3cd80 (patch) | |
| tree | 5ac8d78b95396696f3079915afedcd6555102643 /python/samba | |
| parent | 4c08b420ddf8ce9b3ee28142ad32543eecd5d832 (diff) | |
| download | samba-37855511f636f7bd0082d60d97db2a6113c3cd80.tar.gz samba-37855511f636f7bd0082d60d97db2a6113c3cd80.tar.bz2 samba-37855511f636f7bd0082d60d97db2a6113c3cd80.zip | |
netcmd: models: add new NtTimeField model field
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>
Diffstat (limited to 'python/samba')
| -rw-r--r-- | python/samba/netcmd/domain/models/fields.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/python/samba/netcmd/domain/models/fields.py b/python/samba/netcmd/domain/models/fields.py index 1a4d9d7f034..89bbe76734d 100644 --- a/python/samba/netcmd/domain/models/fields.py +++ b/python/samba/netcmd/domain/models/fields.py @@ -30,6 +30,7 @@ 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 +from samba.nt_time import datetime_from_nt_time, nt_time_from_datetime class Field(metaclass=ABCMeta): @@ -240,6 +241,31 @@ class DateTimeField(Field): flags, self.name) +class NtTimeField(Field): + """18-digit Active Directory timestamps.""" + + def from_db_value(self, ldb, value): + """Convert MessageElement to datetime or list of datetime.""" + if value is None: + return + elif len(value) > 1 or self.many: + return [datetime_from_nt_time(int(item)) for item in value] + else: + return datetime_from_nt_time(int(value[0])) + + def to_db_value(self, ldb, value, flags): + """Convert datetime or list of datetime to MessageElement.""" + if value is None: + return + elif isinstance(value, list): + return MessageElement( + [str(nt_time_from_datetime(item)) for item in value], + flags, self.name) + else: + return MessageElement(str(nt_time_from_datetime(value)), + flags, self.name) + + class RelatedField(Field): """A field that automatically fetches the related objects. |
