From 8ab64be6a1df94580b68a4700af2dceafa8aeb4a Mon Sep 17 00:00:00 2001 From: Jet Li Date: Sat, 1 Feb 2025 07:14:17 +0000 Subject: [PATCH] Fix the typo used in the authentication log --- apps/authentication/common/log/base_logger.py | 2 +- .../content/content_sharepoint_manager.py | 130 +++++++----------- apps/content/backend/content/models.py | 4 + 3 files changed, 53 insertions(+), 83 deletions(-) diff --git a/apps/authentication/common/log/base_logger.py b/apps/authentication/common/log/base_logger.py index 49e773d..31d3c97 100644 --- a/apps/authentication/common/log/base_logger.py +++ b/apps/authentication/common/log/base_logger.py @@ -20,7 +20,7 @@ class LoggerBase: self.logger = LoggerBase.binded_loggers[self.__logger_name] return - log_filename = f"{log_settings.LOG_BASE_PATH}/{self.__logger_name}.log" + log_filename = f"{log_settings.LOG_PATH_BASE}/{self.__logger_name}.log" # ✅ **Ensure Loguru sink is added only once** if log_filename not in LoggerBase.loguru_sinks_added: diff --git a/apps/content/backend/content/content_sharepoint_manager.py b/apps/content/backend/content/content_sharepoint_manager.py index 10e0c39..1722363 100644 --- a/apps/content/backend/content/content_sharepoint_manager.py +++ b/apps/content/backend/content/content_sharepoint_manager.py @@ -27,16 +27,11 @@ class ContentSharePointManager: ) self.share_point_file_expiry = timedelta(hours=24) - def __generate_created__by__(self, folder_name): + def __generate_created_by(self, folder_name: str) -> str: return "content-service-" + folder_name.replace("/", "-").lower() - async def retrieve_directories_for_folder( - self, folder_name: str, region: UserRegion - ): - content_folder_name = folder_name + "/" + region.name - sp_folders = self.sharepoint_client.list_sub_folders(content_folder_name) + async def __get_or_initialize_folder(self, folder_name: str, region: UserRegion): current_time = datetime.now(timezone.utc) - folder = await ContentFolderDoc.find_one( ContentFolderDoc.folder_name == folder_name, ContentFolderDoc.region == region.value, @@ -52,10 +47,45 @@ class ContentSharePointManager: region=region, ) else: - # TODO: Remove all existing content directories - # Otherwise it will keep growing folder.content_directories.clear() + return folder + + async def __process_file( + self, sp_file: Dict, folder_name: str, content_directory: ContentDirectory + ): + file_name = sp_file["name"] + created_by = self.__generate_created_by(folder_name) + document_manager = DocumentManager() + + content_type_mapping = { + ContentFileConstants.COVER_FILE_NAME: "cover_document_id", + ContentFileConstants.SUMMARY_FILE_NAME: "summary_text_new", + ContentFileConstants.TITLE_FILE_NAME: "title_text_new", + ContentFileConstants.CONTENT_LINK_FILE_NAME: "content_link", + ContentFileConstants.CONTENT_HTML_FILE_NAME: "content_html_new", + ContentFileConstants.CONTENT_TEXT_FILE_NAME: "content_text_new", + ContentFileConstants.CONTENT_PDF_FILE_NAME: "content_document_id", + } + + content_property = content_type_mapping.get(file_name.lower()) + if content_property: + content_file_content = self.sharepoint_client.get_file_content( + sp_file["id"] + ) + saved_document_id = await document_manager.save_document_file( + created_by, file_name, content_file_content + ) + setattr(content_directory, content_property, saved_document_id) + + async def retrieve_directories_for_folder( + self, folder_name: str, region: UserRegion + ): + content_folder_name = folder_name + "/" + region.name + sp_folders = self.sharepoint_client.list_sub_folders(content_folder_name) + current_time = datetime.now(timezone.utc) + folder = await self.__get_or_initialize_folder(folder_name, region) + for sp_folder in sp_folders: content_directory = ContentDirectory( content_name=sp_folder["name"], @@ -65,92 +95,28 @@ class ContentSharePointManager: content_link=None, content_document_id=None, ) + sp_files = self.sharepoint_client.list_files( content_folder_name + "/" + sp_folder["name"] ) for sp_file in sp_files: - if ( - sp_file["name"].lower() - == ContentFileConstants.COVER_FILE_NAME.lower() - ): - cover_file_content = self.sharepoint_client.get_file_content( - sp_file["id"] - ) - cover_document_manager = DocumentManager() - file_name = sp_file["name"].lower() - created_by = self.__generate_created__by__(folder_name=folder_name) - content_directory.cover_document_id = ( - await cover_document_manager.save_document_file( - created_by, file_name, cover_file_content - ) - ) - - elif ( - sp_file["name"].lower() - == ContentFileConstants.SUMMARY_FILE_NAME.lower() - ): - content_directory.summary_text = ( - self.sharepoint_client.get_file_content(sp_file["id"]) - ) - elif ( - sp_file["name"].lower() - == ContentFileConstants.TITLE_FILE_NAME.lower() - ): - content_directory.title_text = ( - self.sharepoint_client.get_file_content(sp_file["id"]) - ) - elif ( - sp_file["name"].lower() - == ContentFileConstants.CONTENT_LINK_FILE_NAME.lower() - ): - content_directory.content_link = ( - self.sharepoint_client.get_file_content(sp_file["id"]) - ) - elif ( - sp_file["name"].lower() - == ContentFileConstants.CONTENT_HTML_FILE_NAME.lower() - ): - content_directory.content_html = ( - self.sharepoint_client.get_file_content(sp_file["id"]) - ) - elif ( - sp_file["name"].lower() - == ContentFileConstants.CONTENT_TEXT_FILE_NAME.lower() - ): - content_directory.content_text = ( - self.sharepoint_client.get_file_content(sp_file["id"]) - ) - elif ( - sp_file["name"].lower() - == ContentFileConstants.CONTENT_PDF_FILE_NAME.lower() - ): - content_file_content = self.sharepoint_client.get_file_content( - sp_file["id"] - ) - content_document_manager = DocumentManager() - file_name = sp_file["name"] - created_by = self.__generate_created__by__(folder_name=folder_name) - content_directory.content_document_id = ( - await content_document_manager.save_document_file( - created_by, file_name, content_file_content - ) - ) + await self.__process_file(sp_file, folder_name, content_directory) folder.content_directories.append(content_directory) - folder.udpate_time = current_time - folder.update_source = ContentSource.SHAREPOINT - folder.valid_thru = current_time + self.share_point_file_expiry - await folder.save() + folder.udpate_time = current_time + folder.update_source = ContentSource.SHAREPOINT + folder.valid_thru = current_time + self.share_point_file_expiry + await folder.save() - async def retrieve_directorys_for_all_folders(self): + async def retrieve_directories_for_all_folders(self): current_time = datetime.now(timezone.utc) - folders = await ContentFolderDoc.find( + expired_folders = await ContentFolderDoc.find( ContentFolderDoc.update_source == ContentSource.SHAREPOINT, ContentFolderDoc.valid_thru < current_time, ).to_list() - for folder in folders: + for folder in expired_folders: await self.retrieve_directories_for_folder( folder.folder_name, folder.region ) diff --git a/apps/content/backend/content/models.py b/apps/content/backend/content/models.py index d8ed78e..ce4efec 100644 --- a/apps/content/backend/content/models.py +++ b/apps/content/backend/content/models.py @@ -11,10 +11,14 @@ class ContentDirectory(BaseModel): content_name: str cover_document_id: Optional[str] = None summary_text: Optional[str] = "" + summary_text_new: Optional[str] = "" title_text: Optional[str] = "" + title_text_new: Optional[str] = "" content_link: Optional[str] = None content_html: Optional[str] = None + content_html_new: Optional[str] = None content_text: Optional[str] = None + content_text_new: Optional[str] = None content_document_id: Optional[str] = None