fix: mock folder imgs

This commit is contained in:
swve 2023-04-12 22:46:23 +02:00
parent 8cc6111aaf
commit 9c459c6ff0
4 changed files with 9 additions and 3 deletions

118
src/core/config/config.py Normal file
View file

@ -0,0 +1,118 @@
from typing import Optional
from pydantic import BaseModel
import os
import yaml
class HostingConfig(BaseModel):
domain: str
port: int
ssl: bool
use_default_org: bool
allowed_origins: list
allowed_regexp: str
self_hosted: bool
class DatabaseConfig(BaseModel):
host: str
port: int
user: str
password: str
database_name: str
mongodb_connection_string: Optional[str]
class LearnHouseConfig(BaseModel):
site_name: str
site_description: str
contact_email: str
hosting_config: HostingConfig
database_config: DatabaseConfig
def get_learnhouse_config() -> LearnHouseConfig:
# Get the YAML file
yaml_path = os.path.join(os.path.dirname(__file__), 'config.yaml')
# Load the YAML file
with open(yaml_path, 'r') as f:
yaml_config = yaml.safe_load(f)
# Check if environment variables are defined
env_site_name = os.environ.get('LEARNHOUSE_SITE_NAME')
env_site_description = os.environ.get('LEARNHOUSE_SITE_DESCRIPTION')
env_contact_email = os.environ.get('LEARNHOUSE_CONTACT_EMAIL')
env_domain = os.environ.get('LEARNHOUSE_DOMAIN')
env_port = os.environ.get('LEARNHOUSE_PORT')
env_ssl = os.environ.get('LEARNHOUSE_SSL')
env_use_default_org = os.environ.get('LEARNHOUSE_USE_DEFAULT_ORG')
env_allowed_origins = os.environ.get('LEARNHOUSE_ALLOWED_ORIGINS')
env_allowed_regexp = os.environ.get('LEARNHOUSE_ALLOWED_REGEXP')
env_self_hosted = os.environ.get('LEARNHOUSE_SELF_HOSTED')
env_host = os.environ.get('LEARNHOUSE_DB_HOST')
env_db_port = os.environ.get('LEARNHOUSE_DB_PORT')
env_user = os.environ.get('LEARNHOUSE_DB_USER')
env_password = os.environ.get('LEARNHOUSE_DB_PASSWORD')
env_database_name = os.environ.get('LEARNHOUSE_DB_NAME')
env_mongodb_connection_string = os.environ.get(
'LEARNHOUSE_MONGODB_CONNECTION_STRING')
# Fill in values with YAML file if they are not provided
site_name = env_site_name or yaml_config.get('site_name')
site_description = env_site_description or yaml_config.get(
'site_description')
contact_email = env_contact_email or yaml_config.get('contact_email')
domain = env_domain or yaml_config.get('hosting_config', {}).get('domain')
port = env_port or yaml_config.get('hosting_config', {}).get('port')
ssl = env_ssl or yaml_config.get('hosting_config', {}).get('ssl')
use_default_org = env_use_default_org or yaml_config.get(
'hosting_config', {}).get('use_default_org')
allowed_origins = env_allowed_origins or yaml_config.get(
'hosting_config', {}).get('allowed_origins')
allowed_regexp = env_allowed_regexp or yaml_config.get(
'hosting_config', {}).get('allowed_regexp')
self_hosted = env_self_hosted or yaml_config.get(
'hosting_config', {}).get('self_hosted')
host = env_host or yaml_config.get('database_config', {}).get('host')
db_port = env_db_port or yaml_config.get('database_config', {}).get('port')
user = env_user or yaml_config.get('database_config', {}).get('user')
password = env_password or yaml_config.get(
'database_config', {}).get('password')
database_name = env_database_name or yaml_config.get(
'database_config', {}).get('database_name')
mongodb_connection_string = env_mongodb_connection_string or yaml_config.get(
'database_config', {}).get('mongodb_connection_string')
# Create HostingConfig and DatabaseConfig objects
hosting_config = HostingConfig(
domain=domain,
port=int(port),
ssl=bool(ssl),
use_default_org=bool(use_default_org),
allowed_origins=list(allowed_origins),
allowed_regexp=allowed_regexp,
self_hosted=bool(self_hosted)
)
database_config = DatabaseConfig(
host=host,
port=int(db_port),
user=user,
password=password,
database_name=database_name,
mongodb_connection_string=mongodb_connection_string
)
# Create LearnHouseConfig object
config = LearnHouseConfig(
site_name=site_name,
site_description=site_description,
contact_email=contact_email,
hosting_config=hosting_config,
database_config=database_config
)
return config

View file

@ -1,6 +1,6 @@
from typing import Callable
from fastapi import FastAPI
from config.config import LearnHouseConfig, get_learnhouse_config
from src.core.config.config import LearnHouseConfig, get_learnhouse_config
from src.core.events.database import close_database, connect_to_db
from src.core.events.logs import create_logs_dir
@ -10,7 +10,7 @@ def startup_app(app: FastAPI) -> Callable:
# Get LearnHouse Config
learnhouse_config: LearnHouseConfig = get_learnhouse_config()
app.learnhouse_config = learnhouse_config # type: ignore
# Connect to database
await connect_to_db(app)

View file

@ -1,3 +1,4 @@
import os
import requests
from datetime import datetime
from fileinput import filename
@ -184,6 +185,11 @@ async def create_initial_data(request: Request):
image = requests.get(
"https://source.unsplash.com/random/800x600")
# check if folder exists and create it if not
if not os.path.exists("content/uploads/img"):
os.makedirs("content/uploads/img")
with open(f"content/uploads/img/{name_in_disk}", "wb") as f:
f.write(image.content)