def test_update_book_position_sets_position_for_single_chapter_file_correctly( ): from cozy.model.database_importer import DatabaseImporter from cozy.db.book import Book from cozy.db.track import Track database_importer = DatabaseImporter() book = Book.get_by_id(2) database_importer._update_book_position(book, 4251) book = Book.get_by_id(2) desired_chapter_position = 4251000000000.0 - ( (Track.get_by_id(198).length + Track.get_by_id(197).length) * 10**9) assert book.position == 194 assert Track.get_by_id(194).position == desired_chapter_position
def test_setting_length_updates_in_track_object_and_database(peewee_database): from cozy.db.track import Track as TrackModel from cozy.model.track import Track track = Track(peewee_database, 1) track.length = 42.42 assert track.length == 42.42 assert TrackModel.get_by_id(1).length == 42.42
def test_setting_file_updates_in_track_object_and_database(peewee_database): from cozy.db.track import Track as TrackModel from cozy.model.track import Track track = Track(peewee_database, 1) track.file = "altered.mp3" assert track.file == "altered.mp3" assert TrackModel.get_by_id(1).file == "altered.mp3"
def test_setting_disk_updates_in_track_object_and_database(peewee_database): from cozy.db.track import Track as TrackModel from cozy.model.track import Track track = Track(peewee_database, 1) track.disk = 2 assert track.disk == 2 assert TrackModel.get_by_id(1).disk == 2
def add_book(self, book: Book): book_tracks = [ TrackModel.get_by_id(chapter.id) for chapter in book.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()
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 test_update_book_position_sets_position_for_multi_chapter_file_correctly(): from cozy.model.database_importer import DatabaseImporter from cozy.db.book import Book from cozy.db.track import Track database_importer = DatabaseImporter() book = Book.get_by_id(11) database_importer._update_book_position(book, 4251) book = Book.get_by_id(11) assert book.position == 232 assert Track.get_by_id(232).position == 4251000000000
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 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 ] track_to_files = TrackToFile.select().join(TrackModel).where( TrackToFile.track << book_tracks) for track in track_to_files: try: track.file.delete_instance(recursive=True) except DoesNotExist: track.delete_instance() for track in book_tracks: track.delete_instance(recursive=True) self._db_object.delete_instance(recursive=True) self.destroy_listeners() self._destroy_observers()