pass
@abstractmethod
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Converts value to database value.
This should return a MessageElement or None, where None means
the field will be unset on the next save.
+ :param ldb: Ldb connection
:param value: Input value from Python field
:param flags: MessageElement flags
:returns: MessageElement or None
else:
return int(value[0])
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert int or list of int to MessageElement."""
if value is None:
return
else:
return bytes(value[0])
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert bytes or list of bytes to MessageElement."""
if value is None:
return
else:
return str(value)
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert str or list of str to MessageElement."""
if value is None:
return
else:
return self.enum_from_value(value)
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert enum or list of enum to MessageElement."""
if value is None:
return
else:
return datetime.fromtimestamp(string_to_time(str(value)))
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert datetime or list of datetime to MessageElement."""
if value is None:
return
else:
return self.model.get(ldb, dn=Dn(ldb, str(value)))
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert related object or list of objects to MessageElement."""
if value is None:
return
else:
return Dn(ldb, str(value))
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert Dn object or list of Dn objects into a MessageElement."""
if value is None:
return
else:
return str(ndr_unpack(GUID, value[0]))
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert str with GUID into MessageElement."""
if value is None:
return
else:
return str(value) == "TRUE"
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert bool or list of bool into a MessageElement."""
if value is None:
return
return values
- def to_db_value(self, value, flags):
+ def to_db_value(self, ldb, value, flags):
"""Convert list of dicts back to XML as a MessageElement."""
if value is None:
return
Message, MessageElement, SCOPE_BASE, SCOPE_SUBTREE, binary_encode
from samba.sd_utils import SDUtils
-from .exceptions import DeleteError, DoesNotExist, MultipleObjectsReturned,\
- ProtectError, UnprotectError
+from .exceptions import DeleteError, DoesNotExist, ModelError,\
+ MultipleObjectsReturned, ProtectError, UnprotectError
from .fields import DateTimeField, DnField, Field, GUIDField, IntegerField,\
StringField
for attr, field in self.fields.items():
if attr != "dn":
value = getattr(self, attr)
- db_value = field.to_db_value(value, FLAG_MOD_ADD)
+ try:
+ db_value = field.to_db_value(ldb, value, FLAG_MOD_ADD)
+ except ValueError as e:
+ raise ModelError(e)
# Don't add empty fields.
if db_value is not None and len(db_value):
old_value = getattr(existing_obj, attr)
if value != old_value:
- db_value = field.to_db_value(value, FLAG_MOD_REPLACE)
+ try:
+ db_value = field.to_db_value(ldb, value,
+ FLAG_MOD_REPLACE)
+ except ValueError as e:
+ raise ModelError(e)
# When a field returns None or empty list, delete attr.
if db_value in (None, []):