def add(self, record, key = None): """ Insert a new entry in the database. New entries MUST be added with this method, not via an update with a hand-made Key. key is only useful for importing an existing database, by proposing a key choice. """ self._id, key = Tools.id_make (self._id, key) key = Store.Key (key) assert not self.has_key (key), \ _("a duplicate key has been generated: %d") % key record = copy.copy (record) record.key = key record = self.validate (record) self._dict [key] = record if self._indexed: self._idxadd(key, record) self.emit ('add-item', key) return key
def testIdMake (self): """ Check the id generator """ # No proposal k = Tools.id_make (1, None) assert k == (2, 1) # The proposed id is smaller than the latest k = Tools.id_make (2, 1) assert k == (2, 1) # The proposed id is larget than the latest k = Tools.id_make (2, 4) assert k == (5, 4) return
def new(self, rsid=None): """ Create an empty result set """ db = self._db() assert db is not None (self._id, rsid) = Tools.id_make(self._id, rsid) # a result set keeps a strong reference on the database, as it # accesses its content pretty naturally rs = resultset.ResultSet(rsid, db) return rs