felicity-lims/felicity/lims/seeds/superusers.py
Aurthur Musendame ad14d5f12f iter 2 done
2024-07-23 22:30:01 +02:00

92 lines
3.3 KiB
Python

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")