doc and style: formatted the whole codebase to pep8 plus added documentation where necessary

This commit is contained in:
Benedict Xavier Wanyonyi
2024-05-30 15:43:45 +03:00
parent e526e31083
commit b94987dfd7
54 changed files with 555 additions and 346 deletions

View File

@@ -9,6 +9,8 @@ Cache.register("data.anime", limit=20, timeout=600)
class AnimeScreenController:
"""The controller for the anime screen
"""
def __init__(self, model: AnimeScreenModel):
self.model = model
self.view = AnimeScreenView(controller=self, model=self.model)
@@ -17,6 +19,12 @@ class AnimeScreenController:
return self.view
def update_anime_view(self, id: int, caller_screen_name: str):
"""method called to update the anime screen when a new
Args:
id (int): the anilst id of the anime
caller_screen_name (str): the screen thats calling this method; used internally to switch back to this screen
"""
if self.model.anime_id != id:
if cached_anime_data := Cache.get("data.anime", f"{id}"):
data = cached_anime_data

View File

@@ -1,11 +1,12 @@
from inspect import isgenerator
from View import CrashLogScreenView
from Model import CrashLogScreenModel
from View.components import MediaCardsContainer
from Utility import show_notification
from kivy.clock import Clock
class CrashLogScreenController:
"""The crash log screen controller
"""
def __init__(self, model:CrashLogScreenModel):
self.model = model
self.view = CrashLogScreenView(controller=self, model=self.model)

View File

@@ -1,28 +1,15 @@
from inspect import isgenerator
from View import DownloadsScreenView
from Model import DownloadsScreenModel
from View.components import MediaCardsContainer
from Utility import show_notification
from kivy.clock import Clock
class DownloadsScreenController:
"""The controller for the download screen
"""
def __init__(self, model:DownloadsScreenModel):
self.model = model
self.view = DownloadsScreenView(controller=self, model=self.model)
# self.update_anime_view()
def get_view(self) -> DownloadsScreenView:
return self.view
# def requested_update_my_list_screen(self):
# user_anime_list = user_data_helper.get_user_anime_list()
# if animes_to_add:=difference(user_anime_list,self.model.already_in_user_anime_list):
# Logger.info("My List Screen:User anime list change;updating screen")
# anime_cards = self.model.update_my_anime_list_view(animes_to_add)
# self.model.already_in_user_anime_list = user_anime_list
# if isgenerator(anime_cards):
# for result_card in anime_cards:
# result_card.screen = self.view
# self.view.update_layout(result_card)

View File

@@ -1,15 +1,14 @@
from inspect import isgenerator
from View import HelpScreenView
from Model import HelpScreenModel
from View.components import MediaCardsContainer
from Utility import show_notification
from kivy.clock import Clock
class HelpScreenController:
"""The help screen controller
"""
def __init__(self, model:HelpScreenModel):
self.model = model
self.view = HelpScreenView(controller=self, model=self.model)
# self.update_anime_view()
def get_view(self) -> HelpScreenView:
return self.view

View File

@@ -13,7 +13,7 @@ from Utility import show_notification
# TODO:Move the update home screen to homescreen.py
class HomeScreenController:
"""
The `MainScreenController` class represents a controller implementation.
The `HomeScreenController` class represents a controller implementation.
Coordinates work of the view with the model.
The controller implements the strategy pattern. The controller connects to
the view to control its actions.
@@ -25,6 +25,7 @@ class HomeScreenController:
self.view = HomeScreenView(controller=self, model=self.model)
if self.view.app.config.get("Preferences","is_startup_anime_enable")=="1": # type: ignore
Clock.schedule_once(lambda _:self.populate_home_screen())
def get_view(self) -> HomeScreenView:
return self.view
@@ -108,16 +109,13 @@ class HomeScreenController:
def populate_home_screen(self):
self.populate_errors = []
self.trending_anime()
self.highest_scored_anime()
self.popular_anime()
self.favourite_anime()
self.recently_updated_anime()
self.upcoming_anime()
Clock.schedule_once(lambda _:self.trending_anime())
Clock.schedule_once(lambda _:self.highest_scored_anime())
Clock.schedule_once(lambda _:self.popular_anime())
Clock.schedule_once(lambda _: self.favourite_anime())
Clock.schedule_once(lambda _:self.recently_updated_anime())
Clock.schedule_once(lambda _:self.upcoming_anime())
if self.populate_errors:
show_notification(f"Failed to fetch all home screen data",f"Theres probably a problem with your internet connection or anilist servers are down.\nFailed include:{', '.join(self.populate_errors)}")
def update_my_list(self,*args):
self.model.update_user_anime_list(*args)

View File

@@ -1,16 +1,16 @@
from inspect import isgenerator
from kivy.logger import Logger
from kivy.clock import Clock
# from kivy.clock import Clock
from kivy.utils import difference
from View import MyListScreenView
from Model import MyListScreenModel
from Utility import show_notification,user_data_helper
from Utility import user_data_helper
class MyListScreenController:
"""
The `MainScreenController` class represents a controller implementation.
The `MyListScreenController` class represents a controller implementation.
Coordinates work of the view with the model.
The controller implements the strategy pattern. The controller connects to
the view to control its actions.
@@ -20,6 +20,7 @@ class MyListScreenController:
self.model = model
self.view = MyListScreenView(controller=self, model=self.model)
self.requested_update_my_list_screen()
def get_view(self) -> MyListScreenView:
return self.view
@@ -33,5 +34,3 @@ class MyListScreenController:
for result_card in anime_cards:
result_card.screen = self.view
self.view.update_layout(result_card)

View File

@@ -8,6 +8,8 @@ from Model import SearchScreenModel
class SearchScreenController:
"""The search screen controller
"""
def __init__(self, model: SearchScreenModel):
self.model = model
@@ -17,6 +19,8 @@ class SearchScreenController:
return self.view
def update_trending_anime(self):
"""Gets and adds the trending anime to the search screen
"""
trending_cards_generator = self.model.get_trending_anime()
if isgenerator(trending_cards_generator):
self.view.trending_anime_sidebar.clear_widgets()
@@ -37,7 +41,7 @@ class SearchScreenController:
Clock.schedule_once(
lambda _: self.view.update_pagination(self.model.pagination_info)
)
Clock.schedule_once(lambda _: self.update_trending_anime())
self.update_trending_anime()
else:
Logger.error(f"Home Screen:Failed to search for {anime_title}")
self.view.is_searching = False