def test_delete_keeps_file_object_if_used_elsewhere(peewee_database): from cozy.db.file import File from cozy.model.track import Track track = Track(peewee_database, 230) file_id = track.file_id track.delete() assert File.get_or_none(file_id)
def test_delete_does_not_delete_book(peewee_database): from cozy.db.track import Track as TrackModel from cozy.db.book import Book from cozy.model.track import Track track = Track(peewee_database, 1) book_id = TrackModel.get(1).book.id track.delete() assert Book.get_or_none(book_id) is not None
def test_delete_deletes_track_from_db(peewee_database, mocker): from cozy.db.track import Track as TrackModel from cozy.model.track import Track track = Track(peewee_database, 1) spy = mocker.spy(track, "emit_event") track.delete() assert TrackModel.select().where(TrackModel.id == 1).count() < 1 spy.assert_called_once_with("chapter-deleted", track) assert len(track._listeners) < 1
def remove(self): if self._settings.last_played_book and self._settings.last_played_book.id == self._db_object.id: self._settings.last_played_book = None book_tracks = [ TrackModel.get_by_id(chapter.id) for chapter in self.chapters ] ids = list(t.id for t in book_tracks) TrackModel.delete().where(TrackModel.id << ids).execute() self._db_object.delete_instance(recursive=True) self.destroy_listeners() self._destroy_observers()
def blacklist_book(book): """ Removes a book from the library and adds the path(s) to the track list. """ book_tracks = get_tracks(book) data = list((t.file, ) for t in book_tracks) chunks = [data[x:x + 500] for x in range(0, len(data), 500)] for chunk in chunks: StorageBlackList.insert_many(chunk, fields=[StorageBlackList.path]).execute() ids = list(t.id for t in book_tracks) Track.delete().where(Track.id << ids).execute() book.delete_instance()
def blacklist(self): with self._db: book_tracks = [ TrackModel.get_by_id(chapter.id) for chapter in self._chapters ] data = list((t.file, ) for t in book_tracks) chunks = [data[x:x + 500] for x in range(0, len(data), 500)] for chunk in chunks: StorageBlackList.insert_many(chunk, fields=[StorageBlackList.path ]).execute() ids = list(t.id for t in book_tracks) TrackModel.delete().where(TrackModel.id << ids).execute() self._db_object.delete_instance()
def remove(self): if self._settings.last_played_book and self._settings.last_played_book.id == self._db_object.id: self._settings.last_played_book = None book_tracks = [ TrackModel.get_by_id(chapter.id) for chapter in self.chapters ] data = list((t.file, ) for t in book_tracks) chunks = [data[x:x + 500] for x in range(0, len(data), 500)] for chunk in chunks: StorageBlackList.insert_many(chunk, fields=[StorageBlackList.path ]).execute() ids = list(t.id for t in book_tracks) TrackModel.delete().where(TrackModel.id << ids).execute() self._db_object.delete_instance(recursive=True)
def clean_db(): """ Delete everything from the database except settings. """ q = Track.delete() q.execute() q = Book.delete() q.execute() q = ArtworkCache.delete() q.execute()