def remove(self, *objs): """Removes the provided instances from the reference set. :raises: - `TypeError`: if any given object is not an instance of referenced model """ self.__check(*objs) from kalapy.db.engines import database database.delete_records(*objs)
def delete(self): """Deletes the instance from the database. :raises: - :class:`TypeError`: if instance is not saved - :class:`DatabaseError`: if instance could not be deleted. """ if not self.is_saved: raise TypeError(_("Can't delete, instance doesn't exists.")) from kalapy.db.engines import database database.delete_records(self) self._key = None
def clear(self): """Removes all referenced instances from the reference set. """ if not self.__obj.is_saved: return from kalapy.db.engines import database # instead of removing records at once remove them in bunches l = 100 q = self.all() result = q.fetch(l) while result: database.delete_records(*result) result = q.fetch(l)
def remove(self, *objs): """Removes the provided instances from the reference set. :raises: - `FieldError`: if referenced instance field is required field. - `TypeError`: if any given object is not an instance of referenced model """ if self.__ref_field.is_required: raise FieldError( _("objects can't be removed from %(name)r, delete the objects instead.", name=self.__field.name)) self.__check(*objs) from kalapy.db.engines import database database.delete_records(*objs)
def clear(self): """Removes all referenced instances from the reference set. :raises: - `FieldError`: if referenced instance field is required field. - `TypeError`: if any given object is not an instance of referenced model """ if not self.__obj.is_saved: return if self.__ref_field.is_required: raise FieldError( _("objects can't be removed from %(name)r, delete the objects instead.", name=self.__field.name)) from kalapy.db.engines import database # instead of removing records at once remove them in bunches l = 100 q = self.all() result = q.fetch(l) while result: database.delete_records(*result) result = q.fetch(l)
def test_delete_records(self): a1 = Article(title='sometitle') k1 = a1.save() a2 = Article(title='sometitle2') k2 = a2.save() keys = database.delete_records(a1, a2) self.assertEqual(keys, [k1, k2]) a = Article.get(k1) self.assertTrue(a is None) self.assertTrue(a1.key is None) self.assertTrue(a2.key is None) self.assertTrue(a1.is_dirty and a2.is_dirty)