示例#1
0
    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
示例#2
0
    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
示例#3
0
 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