From a66a8636fe2bebb23f3cf10a217917cb646463c7 Mon Sep 17 00:00:00 2001 From: LUIS NOVO Date: Tue, 29 Oct 2024 10:42:41 -0300 Subject: [PATCH] add ordering and change date strategy --- open_notebook/domain.py | 14 ++++++++++---- open_notebook/plugins/podcasts.py | 2 -- pages/2_📒_Notebooks.py | 2 +- pages/5_🎙️_Podcasts.py | 5 +++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/open_notebook/domain.py b/open_notebook/domain.py index 636a205..ef238eb 100644 --- a/open_notebook/domain.py +++ b/open_notebook/domain.py @@ -32,9 +32,13 @@ class ObjectModel(BaseModel): updated: Optional[datetime] = None @classmethod - def get_all(cls: Type[T]) -> List[T]: + def get_all(cls: Type[T], order_by=None) -> List[T]: try: - result = repo_query(f"SELECT * FROM {cls.table_name}") + if order_by: + order = f" ORDER BY {order_by}" + else: + order = "" + result = repo_query(f"SELECT * FROM {cls.table_name} {order}") objects = [] for obj in result: try: @@ -73,6 +77,7 @@ class ObjectModel(BaseModel): logger.debug(f"Validating {self.__class__.__name__}") self.model_validate(self.model_dump(), strict=True) data = self._prepare_save_data() + data["updated"] = datetime.now().isoformat() if self.needs_embedding(): embedding_content = self.get_embedding_content() @@ -80,6 +85,7 @@ class ObjectModel(BaseModel): data["embedding"] = get_embedding(embedding_content) if self.id is None: + data["created"] = datetime.now().isoformat() logger.debug("Creating new record") repo_result = repo_create(self.__class__.table_name, data) else: @@ -108,8 +114,8 @@ class ObjectModel(BaseModel): def _prepare_save_data(self) -> Dict[str, Any]: data = self.model_dump() - del data["created"] - del data["updated"] + # del data["created"] + # del data["updated"] return {key: value for key, value in data.items() if value is not None} def delete(self) -> bool: diff --git a/open_notebook/plugins/podcasts.py b/open_notebook/plugins/podcasts.py index c7a5a9f..327a969 100644 --- a/open_notebook/plugins/podcasts.py +++ b/open_notebook/plugins/podcasts.py @@ -1,4 +1,3 @@ -from datetime import datetime from typing import ClassVar, List, Literal, Optional from loguru import logger @@ -36,7 +35,6 @@ class PodcastConfig(ObjectModel): voice1: Optional[str] = None voice2: Optional[str] = None model: str - created: Optional[datetime] = Field(default_factory=datetime.now) def generate_episode(self, episode_name, text, instructions=None): self.user_instructions = ( diff --git a/pages/2_📒_Notebooks.py b/pages/2_📒_Notebooks.py index cc42618..7d39d08 100644 --- a/pages/2_📒_Notebooks.py +++ b/pages/2_📒_Notebooks.py @@ -117,7 +117,7 @@ st.title("📒 My Notebooks") st.caption("Here are all your notebooks") -notebooks = Notebook.get_all() +notebooks = Notebook.get_all(order_by="updated desc") for notebook in notebooks: if notebook.archived: diff --git a/pages/5_🎙️_Podcasts.py b/pages/5_🎙️_Podcasts.py index 565e0f8..4d5e7fa 100644 --- a/pages/5_🎙️_Podcasts.py +++ b/pages/5_🎙️_Podcasts.py @@ -20,7 +20,7 @@ version_sidebar() episodes_tab, templates_tab = st.tabs(["Episodes", "Templates"]) with episodes_tab: - episodes = PodcastEpisode.get_all() + episodes = PodcastEpisode.get_all(order_by="created desc") for episode in episodes: with st.container(border=True): episode_name = episode.name if episode.name else "No Name" @@ -98,8 +98,9 @@ with templates_tab: st.rerun() except Exception as e: st.error(e) + st.exception(e) - for pd_config in PodcastConfig.get_all(): + for pd_config in PodcastConfig.get_all(order_by="created desc"): with st.expander(pd_config.name): pd_config.name = st.text_input( "Template Name", value=pd_config.name, key=f"name_{pd_config.id}"