freeleaps-service-hub/apps/content/backend/content/refresh_sharepoint_content.py

46 lines
2.1 KiB
Python

from backend.content.content_sharepoint_manager import ContentSharePointManager
from backend.content.document_cleaner import DocumentCleaner
from common.constants.region import UserRegion
from datetime import datetime, timezone, timedelta
from common.log.log_utils import log_entry_exit_async
from backend.content.content_service import ContentService
from backend.content.models import ContentFolderDoc
from backend.content.constants import ContentSource
class SharePointContentRefresher:
def __init__(self) -> None:
self.content_sharepoint_manager = ContentSharePointManager()
self.document_cleaner = DocumentCleaner()
@log_entry_exit_async
async def refresh_all_in_database(self) -> None:
await self.content_sharepoint_manager.retrieve_directories_for_all_folders()
@log_entry_exit_async
async def refresh_selected(self) -> None:
selected_folders = [
{"folder": "about", "region": UserRegion.OTHER},
{"folder": "about", "region": UserRegion.ZH_CN},
{"folder": "blogs", "region": UserRegion.OTHER},
{"folder": "blogs", "region": UserRegion.ZH_CN},
{"folder": "career", "region": UserRegion.OTHER},
{"folder": "career", "region": UserRegion.ZH_CN},
{"folder": "contact", "region": UserRegion.OTHER},
{"folder": "contact", "region": UserRegion.ZH_CN},
{"folder": "testimony", "region": UserRegion.OTHER},
{"folder": "testimony", "region": UserRegion.ZH_CN},
{"folder": "development", "region": UserRegion.OTHER},
{"folder": "development", "region": UserRegion.ZH_CN},
{"folder": "legal", "region": UserRegion.OTHER},
{"folder": "legal", "region": UserRegion.ZH_CN},
]
for folder in selected_folders:
await self.content_sharepoint_manager.retrieve_directories_for_folder(
folder_name=folder["folder"], region=folder["region"]
)
# Clean up unused DocumentDocs
# This actually can be run separately and had idempotency guarantee
await self.document_cleaner.clean_up_unused_documents()