Update to micro-service settings

This commit is contained in:
jetli 2024-12-14 22:29:22 -08:00
parent 9b38025f20
commit 1c8e36b1da
8 changed files with 152 additions and 82 deletions

View File

@ -4,25 +4,25 @@ FROM python:3.10-slim-bullseye
ARG CONTAINER_APP_ROOT="/app"
ENV APP_NAME="authentication"
ENV DEVSVC_WEBAPI_URL_BASE=""
ENV NOTIFICATION_WEBAPI_URL_BASE=""
ENV DEVSVC_WEBAPI_URL_BASE="http://devsvc:8007/api/devsvc"
ENV NOTIFICATION_WEBAPI_URL_BASE="http://notification:8003/api/notification/"
ENV JWT_SECRET_KEY=""
ENV JWT_ALGORITHM=""
ENV JWT_SECRET_KEY="8f87ca8c3c9c3df09a9c78e0adb0927855568f6072d9efc892534aee35f5867b"
ENV JWT_ALGORITHM="HS256"
#site_settings
ENV SERVICE_API_ACCESS_HOST=0.0.0.0
ENV SERVICE_API_ACCESS_PORT=8004
ENV MONGODB_NAME=
ENV MONGODB_PORT=
ENV MONGODB_URI=
ENV MONGODB_NAME=freeleaps2
ENV MONGODB_PORT=27017
ENV MONGODB_URI="mongodb://localhost:27017/"
#log_settings
ENV LOG_BASE_PATH=
ENV BACKEND_LOG_FILE_NAME=
ENV APPLICATION_ACTIVITY_LOG=
ENV LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
WORKDIR ${CONTAINER_APP_ROOT}

View File

@ -109,24 +109,6 @@ class UserAuthHandler:
def user_sign_out(self, token):
pass
async def generate_auth_code_for_email(self, email: str) -> str:
"""send auth code to email address
Args:
email (str): email address
"""
auth_code = generate_auth_code()
expiry = datetime.now(timezone.utc) + timedelta(minutes=5)
auth_code_doc = AuthCodeDoc(
auth_code=auth_code,
method=email.lower(),
method_type=AuthType.EMAIL,
expiry=expiry,
)
await auth_code_doc.create()
return auth_code
async def verify_email_code(self, email: str, code: str) -> bool:
"""sign in with email and code

View File

@ -1,25 +1,25 @@
FROM python:3.10-slim-buster
# docker settings
ARG CONTAINER_APP_ROOT=
ENV APP_NAME=
ARG CONTAINER_APP_ROOT="/app"
ENV APP_NAME="central_storage"
ENV AZURE_STORAGE_DOCUMENT_API_KEY=""
ENV AZURE_STORAGE_DOCUMENT_API_ENDPOINT=""
ENV AZURE_STORAGE_DOCUMENT_API_KEY="Cg+wtKpHt6Bo6bTUtjic40cRNRZ8NCI3JYBY69BNPgFJARVx/c18iVC7cASbJfzukyu4pksyhUep+AStFdpH7Q=="
ENV AZURE_STORAGE_DOCUMENT_API_ENDPOINT="https://freeleaps1document.blob.core.windows.net/"
#site_settings
ENV SERVICE_API_ACCESS_HOST=0.0.0.0
ENV SERVICE_API_ACCESS_PORT=8005
ENV MONGODB_NAME=
ENV MONGODB_PORT=
ENV MONGODB_URI=
ENV MONGODB_NAME=freeleaps2
ENV MONGODB_PORT=27017
ENV MONGODB_URI="mongodb://localhost:27017/"
#log_settings
ENV LOG_BASE_PATH=
ENV BACKEND_LOG_FILE_NAME=
ENV APPLICATION_ACTIVITY_LOG=
ENV LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
WORKDIR ${CONTAINER_APP_ROOT}

View File

@ -4,8 +4,8 @@ FROM python:3.10-slim-buster
ARG CONTAINER_APP_ROOT="/app"
ENV APP_NAME="content"
ENV FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET=""
ENV CENTRAL_STORAGE_WEBAPI_URL_BASE=""
ENV FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET="jTu8Q~WceiK-5dfZB44Ww-K4fVGi3_5tHNWYYbdX"
ENV CENTRAL_STORAGE_WEBAPI_URL_BASE="http://central_storage:8005/api/central_storage/"
#site_settings
ENV SERVICE_API_ACCESS_HOST=0.0.0.0
@ -17,9 +17,9 @@ ENV MONGODB_URI="mongodb://freeleaps2-mongodb:27017"
#log_settings
ENV LOG_BASE_PATH=
ENV BACKEND_LOG_FILE_NAME=
ENV APPLICATION_ACTIVITY_LOG=
ENV LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
ENV BACKEND_LOG_FILE_NAME=$APP_NAME
ENV APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
WORKDIR ${CONTAINER_APP_ROOT}

View File

@ -4,29 +4,33 @@ from datetime import datetime, timedelta, timezone
from backend.sharepoint.sharepoint_graph_client import SharePointGraphClient
from common.constants.region import UserRegion
from backend.document.document_manager import DocumentManager
from backend.content.constants import ContentSource, ContentMediaType, ContentDataFormat, ContentFileConstants
from backend.content.constants import (
ContentSource,
ContentFileConstants,
)
from backend.content.models import ContentDirectory, ContentFolderDoc
class ContentSharePointManager:
def __init__(self) -> None:
self.sharepoint_client = SharePointGraphClient(
tenant_id='cf151ee8-5c2c-4fe7-a1c4-809ba43c9f24',
client_id='a91e3c1d-d55d-423d-83cb-a736df229817',
tenant_id="cf151ee8-5c2c-4fe7-a1c4-809ba43c9f24",
client_id="a91e3c1d-d55d-423d-83cb-a736df229817",
client_secret=app_settings.FREELEAPS_WWW_AS_AZURE_CLIENT_SECRET,
host_name="netorgft10898514.sharepoint.com",
site_name="MediaRoom"
site_name="MediaRoom",
)
self.sharepoint_client.set_document_scope(
document_library="freeleaps",
root_folder="production"
document_library="freeleaps", root_folder="production"
)
self.share_point_file_expiry = timedelta(hours=24)
def __generate_created__by__(self, folder_name):
return "content-service-" + folder_name.replace('/', '-').lower()
return "content-service-" + folder_name.replace("/", "-").lower()
async def retrieve_directories_for_folder(self, folder_name: str, region: UserRegion):
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)
@ -42,70 +46,90 @@ class ContentSharePointManager:
udpate_time=current_time,
update_source=ContentSource.SHAREPOINT,
valid_thru=current_time + self.share_point_file_expiry,
region=region
region=region,
)
else:
folder.content_directories.clear()
for sp_folder in sp_folders:
content_directory = ContentDirectory(
content_name=sp_folder['name'],
content_name=sp_folder["name"],
cover_document_id=None,
summary_text=None,
title_text=None,
content_link=None,
content_document_id=None,
)
sp_files = self.sharepoint_client.list_files(content_folder_name + "/" + sp_folder['name'])
sp_files = self.sharepoint_client.list_files(
content_folder_name + "/" + sp_folder["name"]
)
for sp_file in sp_files:
if (
sp_file['name'].lower()
sp_file["name"].lower()
== ContentFileConstants.COVER_FILE_NAME.lower()
):
cover_file_content = self.sharepoint_client.get_file_content(sp_file['id'])
cover_file_content = self.sharepoint_client.get_file_content(
sp_file["id"]
)
cover_document_manager = DocumentManager()
file_name=sp_file['name'].lower()
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(
content_directory.cover_document_id = (
await cover_document_manager.save_document_file(
created_by, file_name, cover_file_content
)
)
elif (
sp_file['name'].lower()
sp_file["name"].lower()
== ContentFileConstants.SUMMARY_FILE_NAME.lower()
):
content_directory.summary_text = self.sharepoint_client.get_file_content(sp_file['id'])
content_directory.summary_text = (
self.sharepoint_client.get_file_content(sp_file["id"])
)
elif (
sp_file['name'].lower()
sp_file["name"].lower()
== ContentFileConstants.TITLE_FILE_NAME.lower()
):
content_directory.title_text = self.sharepoint_client.get_file_content(sp_file['id'])
content_directory.title_text = (
self.sharepoint_client.get_file_content(sp_file["id"])
)
elif (
sp_file['name'].lower()
sp_file["name"].lower()
== ContentFileConstants.CONTENT_LINK_FILE_NAME.lower()
):
content_directory.content_link = self.sharepoint_client.get_file_content(sp_file['id'])
content_directory.content_link = (
self.sharepoint_client.get_file_content(sp_file["id"])
)
elif (
sp_file['name'].lower()
sp_file["name"].lower()
== ContentFileConstants.CONTENT_HTML_FILE_NAME.lower()
):
content_directory.content_html = self.sharepoint_client.get_file_content(sp_file['id'])
content_directory.content_html = (
self.sharepoint_client.get_file_content(sp_file["id"])
)
elif (
sp_file['name'].lower()
sp_file["name"].lower()
== ContentFileConstants.CONTENT_TEXT_FILE_NAME.lower()
):
content_directory.content_text = self.sharepoint_client.get_file_content(sp_file['id'])
content_directory.content_text = (
self.sharepoint_client.get_file_content(sp_file["id"])
)
elif (
sp_file['name'].lower()
sp_file["name"].lower()
== ContentFileConstants.CONTENT_PDF_FILE_NAME.lower()
):
content_file_content = self.sharepoint_client.get_file_content(sp_file['id'])
content_file_content = self.sharepoint_client.get_file_content(
sp_file["id"]
)
content_document_manager = DocumentManager()
file_name=sp_file['name']
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(
content_directory.content_document_id = (
await content_document_manager.save_document_file(
created_by, file_name, content_file_content
)
)
folder.content_directories.append(content_directory)
@ -118,8 +142,10 @@ class ContentSharePointManager:
current_time = datetime.now(timezone.utc)
folders = await ContentFolderDoc.find(
ContentFolderDoc.update_source == ContentSource.SHAREPOINT,
ContentFolderDoc.valid_thru < current_time
ContentFolderDoc.valid_thru < current_time,
).to_list()
for folder in folders:
await self.retrieve_directories_for_folder(folder.folder_name, folder.region)
await self.retrieve_directories_for_folder(
folder.folder_name, folder.region
)

View File

@ -15,12 +15,12 @@ ENV SYSTEM_USER_ID=117f191e810c19729de860aa
ENV SMS_FROM=+16898887156
ENV EMAIL_FROM=freeleaps@freeleaps.com
ENV SECRET_KEY=ea84edf152976b2fcec12b78aa8e45bc26a5cf0ef61bf16f5c317ae33b3fd8b0
ENV SECRET_KEY=8f87ca8c3c9c3df09a9c78e0adb0927855568f6072d9efc892534aee35f5867b
ENV SENDGRID_API_KEY=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
ENV SENDGRID_API_KEY=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
ENV TWILIO_ACCOUNT_SID=ACf8c9283a6acda060258eadb29be58bc8
ENV TWILIO_AUTH_TOKEN=ef160748cc22c8b7195b49df4b8eca7e
ENV TWILIO_AUTH_TOKEN=120165c0550111ddfd58efc97dafc2fe

View File

@ -0,0 +1,25 @@
export APP_NAME=central_storage
export GIT_REPO_ROOT=/Users/yaojing/Work/Freeleaps/freeleaps-service-hub
export APP_PARENT_FOLDER=apps
export SERVICE_API_ACCESS_HOST=0.0.0.0
export SERVICE_API_ACCESS_PORT=8005
export CONTAINER_APP_ROOT=/app
export AZURE_STORAGE_DOCUMENT_API_KEY=xbiFtFeQ6v5dozgVM99fZ9huUomL7QcLu6s0y8zYHtIXZ8XdneKDMcg4liQr/9oNlVoRFcZhWjLY+ASt9cjICQ==
export AZURE_STORAGE_DOCUMENT_API_ENDPOINT="https://freeleaps1document.blob.core.windows.net/"
export LOG_BASE_PATH=$CONTAINER_APP_ROOT/log/$APP_NAME
export BACKEND_LOG_FILE_NAME=$APP_NAME
export APPLICATION_ACTIVITY_LOG=$APP_NAME-activity
export MONGODB_NAME=freeleaps2
export MONGODB_PORT=27017
export CODEBASE_ROOT=/Users/yaojing/Work/Freeleaps/freeleaps-service-hub/apps/central_storage
export WORKING_DIR=/Users/yaojing/Work/Freeleaps/freeleaps-service-hub/sites/central_storage/deploy
#!/bin/bash
export VENV_DIR=venv_t
export VENV_ACTIVATE=venv_t/bin/activate
export DOCKER_HOME=/var/lib/docker
export DOCKER_APP_HOME=$DOCKER_HOME/app
export DOCKER_BACKEND_HOME=$DOCKER_APP_HOME/$APP_NAME
export DOCKER_BACKEND_LOG_HOME=$DOCKER_BACKEND_HOME/log
export MONGODB_URI=mongodb://freeleaps2-mongodb:27017/
export FREELEAPS_ENV=dev

View File

@ -0,0 +1,37 @@
services:
central_storage:
container_name: $APP_NAME
build:
context: ${CODEBASE_ROOT}
args:
CONTAINER_APP_ROOT: ${CONTAINER_APP_ROOT}
profiles: [prod,alpha,dev]
restart: always
environment:
- APP_NAME=${APP_NAME}
- MONGODB_NAME=${MONGODB_NAME}
- MONGODB_PORT=${MONGODB_PORT}
- MONGODB_URI=${MONGODB_URI}
- SERVICE_API_ACCESS_HOST=${SERVICE_API_ACCESS_HOST}
- SERVICE_API_ACCESS_PORT=${SERVICE_API_ACCESS_PORT}
- AZURE_STORAGE_DOCUMENT_API_KEY=${AZURE_STORAGE_DOCUMENT_API_KEY}
- AZURE_STORAGE_DOCUMENT_API_ENDPOINT=${AZURE_STORAGE_DOCUMENT_API_ENDPOINT}
- LOG_BASE_PATH=${LOG_BASE_PATH}
- BACKEND_LOG_FILE_NAME=${BACKEND_LOG_FILE_NAME}
- APPLICATION_ACTIVITY_LOG=${APPLICATION_ACTIVITY_LOG}
ports:
- ${SERVICE_API_ACCESS_PORT}:${SERVICE_API_ACCESS_PORT}
command:
- /bin/sh
- -c
- |
uvicorn webapi.main:app --reload --port=${SERVICE_API_ACCESS_PORT} --host=${SERVICE_API_ACCESS_HOST}
networks:
- devbox_freeleaps2-network
volumes:
- type: bind
source: $DOCKER_BACKEND_LOG_HOME
target: $LOG_BASE_PATH
networks:
devbox_freeleaps2-network:
external: true