Skip to content
16 changes: 5 additions & 11 deletions cozy/app_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ def __init__(self, gtk_app, main_window_builder, main_window):

reporter.info("main", "startup")

self.library_view: LibraryView = LibraryView(main_window_builder)
self.app_view: AppView = AppView(main_window_builder)
self.headerbar: Headerbar = Headerbar(main_window_builder)
self.media_controller: MediaController = MediaController(main_window_builder)
self.search_view: SearchView = SearchView(main_window_builder, self.headerbar)
self.library_view = LibraryView(main_window_builder)
self.app_view = AppView(main_window_builder)
self.headerbar = Headerbar(main_window_builder)
self.media_controller = MediaController(main_window_builder)
self.search_view = SearchView(main_window_builder, self.headerbar)

self.library_view_model = inject.instance(LibraryViewModel)
self.app_view_model = inject.instance(AppViewModel)
Expand All @@ -70,8 +70,6 @@ def __init__(self, gtk_app, main_window_builder, main_window):
self.headerbar_view_model.add_listener(self._on_working_event)
self.app_view_model.add_listener(self._on_app_view_event)

self.main_window.add_listener(self._on_main_window_event)

def configure_inject(self, binder):
binder.bind_to_provider(SqliteDatabase, get_db)
binder.bind("MainWindow", self.main_window)
Expand Down Expand Up @@ -140,7 +138,3 @@ def _on_working_event(self, event: str, data) -> None:
if event == "working":
self.book_detail_view_model.lock_ui = data
self.settings_view_model.lock_ui = data

def _on_main_window_event(self, event: str, data):
if event == "open_view":
self._on_open_view(data, None)
2 changes: 1 addition & 1 deletion cozy/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from cozy.ui.main_view import CozyUI
from cozy.ui.widgets.filter_list_box import FilterListBox

log = logging.getLogger("application")
log = logging.getLogger(__name__)


class Application(Adw.Application):
Expand Down
2 changes: 1 addition & 1 deletion cozy/architecture/observable.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from cozy.report import reporter

log = logging.getLogger("observable")
log = logging.getLogger(__name__)


class Observable:
Expand Down
2 changes: 1 addition & 1 deletion cozy/architecture/profiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import logging
import time

log = logging.getLogger("timing")
log = logging.getLogger(__name__)

def timing(f):
@functools.wraps(f)
Expand Down
2 changes: 1 addition & 1 deletion cozy/control/artwork_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from cozy.report import reporter
from cozy.settings import ApplicationSettings

log = logging.getLogger("artwork_cache")
log = logging.getLogger(__name__)


class ArtworkCache:
Expand Down
2 changes: 1 addition & 1 deletion cozy/control/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from cozy.db.track_to_file import TrackToFile
from cozy.report import reporter

log = logging.getLogger("db")
log = logging.getLogger(__name__)

_db = get_sqlite_database()

Expand Down
2 changes: 1 addition & 1 deletion cozy/control/db_updater.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from cozy.db.track_to_file import TrackToFile
from cozy.report import reporter

log = logging.getLogger("db_updater")
log = logging.getLogger(__name__)

get_data_dir = lambda: str(get_data_dir_path()) # i don't want to rewrite this file for pathlib

Expand Down
2 changes: 1 addition & 1 deletion cozy/control/filesystem_monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from cozy.model.storage import Storage
from cozy.report import reporter

log = logging.getLogger("fs_monitor")
log = logging.getLogger(__name__)


class StorageNotFound(Exception):
Expand Down
2 changes: 1 addition & 1 deletion cozy/control/mpris.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from cozy.report import reporter
from cozy.settings import ApplicationSettings

log = logging.getLogger("mpris")
log = logging.getLogger(__name__)

CamelCasePattern = re.compile(r"(?<!^)(?=[A-Z])")

Expand Down
78 changes: 52 additions & 26 deletions cozy/control/offline_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from cozy.report import reporter
from cozy.view_model.settings_view_model import SettingsViewModel

log = logging.getLogger("offline_cache")
log = logging.getLogger(__name__)


class OfflineCache(EventSender):
Expand Down Expand Up @@ -64,10 +64,12 @@ def add(self, book: Book):
for file_id in file_ids:
cached_file_name = str(uuid.uuid4())
files_to_cache.append((file_id, cached_file_name))
chunks = [files_to_cache[x:x + 500] for x in range(0, len(files_to_cache), 500)]

chunks = [files_to_cache[x : x + 500] for x in range(0, len(files_to_cache), 500)]
for chunk in chunks:
query = OfflineCacheModel.insert_many(chunk, fields=[OfflineCacheModel.original_file,
OfflineCacheModel.cached_file])
query = OfflineCacheModel.insert_many(
chunk, fields=[OfflineCacheModel.original_file, OfflineCacheModel.cached_file]
)
self.total_batch_count += len(chunk)
query.execute()

Expand All @@ -79,7 +81,9 @@ def remove(self, book: Book):
"""
self._stop_processing()
ids = {t.file_id for t in book.chapters}
offline_elements = OfflineCacheModel.select().join(File).where(OfflineCacheModel.original_file.id << ids)
offline_elements = (
OfflineCacheModel.select().join(File).where(OfflineCacheModel.original_file.id << ids)
)

for element in offline_elements:
file_path = os.path.join(self.cache_dir, element.cached_file)
Expand All @@ -94,7 +98,9 @@ def remove(self, book: Book):
if self.current and item.id == self.current.id:
self.filecopy_cancel.cancel()

entries_to_delete = OfflineCacheModel.select().join(File).where(OfflineCacheModel.original_file.id << ids)
entries_to_delete = (
OfflineCacheModel.select().join(File).where(OfflineCacheModel.original_file.id << ids)
)
ids_to_delete = [t.id for t in entries_to_delete]
OfflineCacheModel.delete().where(OfflineCacheModel.id << ids_to_delete).execute()
book.downloaded = False
Expand All @@ -104,8 +110,11 @@ def remove(self, book: Book):
self._start_processing()

def remove_all_for_storage(self, storage):
for element in OfflineCacheModel.select().join(File).where(
storage.path in OfflineCacheModel.original_file.path):
for element in (
OfflineCacheModel.select()
.join(File)
.where(storage.path in OfflineCacheModel.original_file.path)
):
file_path = self.cache_dir / element.cached_file
if file_path == self.cache_dir:
continue
Expand All @@ -114,11 +123,16 @@ def remove_all_for_storage(self, storage):
if file.query_exists():
file.delete()

OfflineCacheModel.delete().where(storage.path in OfflineCacheModel.original_file.path).execute()
OfflineCacheModel.delete().where(
storage.path in OfflineCacheModel.original_file.path
).execute()

def get_cached_path(self, chapter: Chapter) -> Path:
query = OfflineCacheModel.select().where(OfflineCacheModel.original_file == chapter.file_id,
OfflineCacheModel.copied)
query = OfflineCacheModel.select().where(
OfflineCacheModel.original_file == chapter.file_id,
OfflineCacheModel.copied == True, # noqa: E712
)

if query.count() > 0:
return self.cache_dir / query.get().cached_file
else:
Expand All @@ -130,7 +144,8 @@ def update_cache(self, paths):
"""
if OfflineCacheModel.select().count() > 0:
OfflineCacheModel.update(copied=False).where(
OfflineCacheModel.original_file.path in paths).execute()
OfflineCacheModel.original_file.path in paths
).execute()
self._fill_queue_from_db()

def delete_cache(self):
Expand All @@ -145,16 +160,15 @@ def delete_cache(self):

def _stop_processing(self):
""" """
if not self._is_processing() or not self.thread:
if not self._is_processing or not self.thread:
return

self.filecopy_cancel.cancel()
self.thread.stop()

def _start_processing(self):
"""
"""
if self._is_processing():
""" """
if self._is_processing:
return

self.thread = tools.StoppableThread(target=self._process_queue)
Expand Down Expand Up @@ -195,24 +209,33 @@ def _process_queue(self):
self.emit_event_main_thread("message", _("Copying") + " " + book.name)
self.current = new_item

destination = Gio.File.new_for_path(os.path.join(self.cache_dir, new_item.cached_file))
destination = Gio.File.new_for_path(
os.path.join(self.cache_dir, new_item.cached_file)
)
source = Gio.File.new_for_path(new_item.original_file.path)
flags = Gio.FileCopyFlags.OVERWRITE
try:
copied = source.copy(destination, flags, self.filecopy_cancel, self.__update_copy_status, None)
copied = source.copy(
destination, flags, self.filecopy_cancel, self.__update_copy_status, None
)
except Exception as e:
if e.code == Gio.IOErrorEnum.CANCELLED:
log.info("Download of book was cancelled.")
self.thread.stop()
break
reporter.exception("offline_cache", e)
log.error("Could not copy file %r to offline cache: %s", new_item.original_file.path, e)
log.error(
"Could not copy file %r to offline cache: %s",
new_item.original_file.path,
e,
)
self.queue.remove(item)
continue

if copied:
OfflineCacheModel.update(copied=True).where(
OfflineCacheModel.id == new_item.id).execute()
OfflineCacheModel.id == new_item.id
).execute()

self.queue.remove(item)

Expand All @@ -239,21 +262,24 @@ def _update_book_download_status(self, book_id):

def _is_book_downloaded(self, book: Book):
file_ids = [chapter.file_id for chapter in book.chapters]
offline_files = OfflineCacheModel.select().where(OfflineCacheModel.original_file << file_ids)
offline_files = OfflineCacheModel.select().where(
OfflineCacheModel.original_file << file_ids
)
offline_file_ids = [file.original_file.id for file in offline_files]

return all(chapter.file_id in offline_file_ids for chapter in book.chapters)

@property
def _is_processing(self):
"""
"""
if self.thread:
return self.thread.is_alive()
else:
return False

return False

def _fill_queue_from_db(self):
for item in OfflineCacheModel.select().where(not OfflineCacheModel.copied):
for item in OfflineCacheModel.select().where(
OfflineCacheModel.copied == False # noqa: E712
):
if not any(item.id == queued.id for queued in self.queue):
self.queue.append(item)
self.total_batch_count += 1
Expand Down
2 changes: 1 addition & 1 deletion cozy/db/model_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from cozy.control.application_directories import get_data_dir

log = logging.getLogger("db")
log = logging.getLogger(__name__)

_db = None

Expand Down
2 changes: 1 addition & 1 deletion cozy/media/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from cozy.report import reporter
from cozy.ui.toaster import ToastNotifier

log = logging.getLogger("files")
log = logging.getLogger(__name__)


class Files(EventSender):
Expand Down
2 changes: 1 addition & 1 deletion cozy/media/importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from cozy.report import reporter
from cozy.ui.toaster import ToastNotifier

log = logging.getLogger("importer")
log = logging.getLogger(__name__)

CHUNK_SIZE = 100

Expand Down
2 changes: 1 addition & 1 deletion cozy/media/media_detector.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from cozy.media.media_file import MediaFile
from cozy.media.tag_reader import TagReader

log = logging.getLogger("media_detector")
log = logging.getLogger(__name__)


class NotAnAudioFile(Exception):
Expand Down
2 changes: 1 addition & 1 deletion cozy/model/book.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from cozy.model.track import Track, TrackInconsistentData
from cozy.settings import ApplicationSettings

log = logging.getLogger("BookModel")
log = logging.getLogger(__name__)


class BookIsEmpty(Exception):
Expand Down
2 changes: 1 addition & 1 deletion cozy/model/database_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from cozy.media.media_file import MediaFile
from cozy.model.book import Book, BookIsEmpty

log = logging.getLogger("db_importer")
log = logging.getLogger(__name__)


def is_same_book(book_a: str, book_b: str) -> bool:
Expand Down
2 changes: 1 addition & 1 deletion cozy/model/library.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from cozy.model.chapter import Chapter
from cozy.model.settings import Settings

log = logging.getLogger("ui")
log = logging.getLogger(__name__)


def split_strings_to_set(set_to_split: set[str]) -> set[str]:
Expand Down
2 changes: 1 addition & 1 deletion cozy/model/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from cozy.model.storage import InvalidPath, Storage
from cozy.report import reporter

log = logging.getLogger("model.storage_location")
log = logging.getLogger(__name__)


class Settings:
Expand Down
2 changes: 1 addition & 1 deletion cozy/model/track.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from cozy.db.track_to_file import TrackToFile
from cozy.model.chapter import Chapter

log = logging.getLogger("TrackModel")
log = logging.getLogger(__name__)


class TrackInconsistentData(Exception):
Expand Down
Loading