38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
import asyncio
|
|
from typing import List, Optional
|
|
from datetime import datetime, timedelta, timezone
|
|
from .models import ContentDirectory, ContentFolderDoc
|
|
from common.constants.region import UserRegion
|
|
from backend.document.document_manager import DocumentManager
|
|
from .content_sharepoint_manager import ContentSharePointManager
|
|
from backend.content.constants import ContentSource
|
|
|
|
|
|
class ContentService:
|
|
def __init__(self) -> None:
|
|
pass
|
|
|
|
async def retrieve_content_directories_for_folder(
|
|
self, folder_name: str, region: UserRegion
|
|
) -> List[ContentDirectory]:
|
|
folder = (
|
|
await ContentFolderDoc.find(
|
|
ContentFolderDoc.folder_name == folder_name,
|
|
ContentFolderDoc.region == region,
|
|
)
|
|
.sort(-ContentFolderDoc.udpate_time)
|
|
.first_or_none()
|
|
)
|
|
if folder is None or folder.valid_thru.replace(
|
|
tzinfo=timezone.utc
|
|
) < datetime.now(timezone.utc):
|
|
folder = await ContentSharePointManager().retrieve_directories_for_folder(
|
|
folder_name=folder_name, region=region
|
|
)
|
|
|
|
return folder.content_directories if folder else None
|
|
|
|
async def retrieve_content_as_media_data(self, document_id: str) -> Optional[str]:
|
|
document_manager = DocumentManager()
|
|
return await document_manager.retrieve_document_as_http_media(document_id)
|