示例#1
0
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
示例#2
0
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
示例#3
0
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"
示例#4
0
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
示例#5
0
    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()
示例#6
0
    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()
示例#7
0
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
示例#8
0
 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()
示例#9
0
文件: book.py 项目: foliva/cozy
    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)
示例#10
0
    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()