Source code for lomas_server.administration.scripts.lomas_demo_setup

from pathlib import Path

from pydantic import Field
from pydantic_settings import SettingsConfigDict
from rich.pretty import pprint

from lomas_server.administration.keycloak_admin import add_kc_users_via_yaml
from lomas_server.models.config import AdminConfig


[docs] class DemoAdminConfig(AdminConfig): """Extension of Admin config for demo setup.""" model_config = SettingsConfigDict( extra="ignore", env_prefix="lomas_admin_", env_file=".env.lomas_admin", env_nested_delimiter="__", case_sensitive=False, ) path_prefix: Path = Field(default=Path(".")) user_yaml: Path = Field(default=Path("/data/collections/user_collection.yaml")) dataset_yaml: Path = Field(default=Path("/data/collections/dataset_collection.yaml"))
[docs] def add_lomas_demo_data(config: DemoAdminConfig) -> None: """ Adds the demo data to the admindb as well as the keycloak instance if required. Meant to be used in the develop mode of the service or for testing Args: config (AdminConfig): The administration config. """ pprint("Creating user collection from Config") pprint(config) user_yaml_file = config.path_prefix / config.user_yaml.relative_to("/") dataset_yaml_file = config.path_prefix / config.dataset_yaml.relative_to("/") config.database.add_users_via_yaml( clean=True, yaml_file=user_yaml_file, ) if config.kc_config is not None: add_kc_users_via_yaml( config.kc_config, yaml_file=user_yaml_file, clean=False, overwrite=True, ) pprint("Creating datasets and metadata collection") config.database.add_datasets_via_yaml( clean=True, yaml_file=dataset_yaml_file, path_prefix=str(config.path_prefix), ) pprint("Empty archives") config.database.drop_archive()
[docs] def lomas_demo_setup() -> None: """Script for setting up demo users and dataset.""" demo_config = DemoAdminConfig() add_lomas_demo_data(demo_config)
if __name__ == "__main__": lomas_demo_setup()