def append(self, hcont, value, score=None): if self.field.owned: assert value.oid is None self.element_writer.create(value) assert value.oid is not None value = value.handle() ContainerWriter.append(self, hcont, value, score)
def __init__(self, field, element_writer=None): assert (not field.owned and element_writer is None) or (field.owned and element_writer is not None) self.field = field self.element_writer = element_writer index_key = None if field.indexed: index_key = "u:" if field.unique else "i:" index_key += field.model.__name__ + ":" + field.name ContainerWriter.__init__(self, field.target_type, index_key, field.unique)
def remove(self, hcont, value): assert (not self.field.owned) or isinstance(value, Model) removed = ContainerWriter.remove(self, hcont, value) if self.field.owned: if not removed: raise NotFoundError("{0} in {1}".format(value.handle(), hcont)) assert value.oid is not None self.element_writer.delete(value) assert value.oid is None