import logging from felicity.apps.user import schemas from felicity.core.config import get_settings from felicity.apps.user.services import GroupService, UserPreferenceService, UserService from .groups_perms import FGroup settings = get_settings() logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) async def seed_daemon_user() -> None: logger.info("Setting up system-daemon - System Daemon - .....") user_service = UserService() group_service = GroupService() preference_service = UserPreferenceService() system_daemon = await user_service.get_by_email( settings.SYSTEM_DAEMON_EMAIL ) if not system_daemon: su_in = schemas.UserCreate( first_name="System", last_name="Daemon", user_name=settings.SYSTEM_DAEMON_USERNAME, password=settings.SYSTEM_DAEMON_PASSWORD, email=settings.SYSTEM_DAEMON_EMAIL, login_retry=0, is_superuser=True, ) system_daemon = await user_service.create(user_in=su_in) admin_group = await group_service.get(name=FGroup.ADMINISTRATOR) if admin_group: system_daemon.groups.append(admin_group) await user_service.update(system_daemon.uid, system_daemon) if not system_daemon: raise Exception("Failed to create system_daemon") # initial user-preferences pref_in = schemas.UserPreferenceCreate(expanded_menu=False, theme="light") preference = await preference_service.create(obj_in=pref_in) logger.info( f"linking system daemon {system_daemon.uid} to preference {preference.uid}" ) await user_service.link_preference(system_daemon.uid, preference.uid) logger.info(f"Done Setting up system daemon") async def seed_super_user() -> None: logger.info("Setting up super user - Felicity User - .....") user_service = UserService() group_service = GroupService() preference_service = UserPreferenceService() super_user = await user_service.get_by_email( settings.FIRST_SUPERUSER_EMAIL ) if not super_user: su_in = schemas.UserCreate( first_name="System", last_name="Admin", user_name=settings.FIRST_SUPERUSER_USERNAME, password=settings.FIRST_SUPERUSER_PASSWORD, email=settings.FIRST_SUPERUSER_EMAIL, login_retry=0, is_superuser=True, ) super_user = await user_service.create(user_in=su_in) admin_group = await group_service.get(name=FGroup.ADMINISTRATOR) if admin_group: super_user.groups.append(admin_group) await user_service.update(super_user.uid, super_user) if not super_user: raise Exception("Failed to create system admin") # initial user-preferences pref_in = schemas.UserPreferenceCreate(expanded_menu=False, theme="light") preference = await preference_service.create(obj_in=pref_in) logger.info( f"linking system admin {super_user.uid} to preference {preference.uid}" ) await user_service.link_preference(super_user.uid, preference.uid) logger.info(f"Done Setting up system admin")