()
| 59 | |
| 60 | |
| 61 | async def seed_initial_users() -> None: |
| 62 | from yuxi.utils.auth_utils import AuthUtils |
| 63 | from yuxi.storage.postgres.manager import pg_manager |
| 64 | from yuxi.storage.postgres.models_business import Department, User |
| 65 | from yuxi.utils.datetime_utils import utc_now_naive |
| 66 | |
| 67 | try: |
| 68 | pg_manager.initialize() |
| 69 | await pg_manager.create_business_tables() |
| 70 | await pg_manager.ensure_business_schema() |
| 71 | |
| 72 | async with pg_manager.get_async_session_context() as session: |
| 73 | await ensure_uninitialized(session) |
| 74 | |
| 75 | departments: dict[str, Department] = {} |
| 76 | for department_seed in DEPARTMENTS: |
| 77 | department = Department( |
| 78 | name=department_seed["name"], |
| 79 | description=department_seed["description"], |
| 80 | ) |
| 81 | session.add(department) |
| 82 | departments[department_seed["prefix"]] = department |
| 83 | |
| 84 | await session.flush() |
| 85 | |
| 86 | users = [ |
| 87 | User( |
| 88 | username=SUPERADMIN_NAME, |
| 89 | uid=SUPERADMIN_UID, |
| 90 | phone_number=SUPERADMIN_PHONE_NUMBER, |
| 91 | password_hash=AuthUtils.hash_password(SUPERADMIN_PASSWORD), |
| 92 | role="superadmin", |
| 93 | department_id=departments["dev"].id, |
| 94 | last_login=utc_now_naive(), |
| 95 | ) |
| 96 | ] |
| 97 | |
| 98 | for department_seed in DEPARTMENTS: |
| 99 | department = departments[department_seed["prefix"]] |
| 100 | for index in range(1, 3): |
| 101 | users.append( |
| 102 | User( |
| 103 | username=f"{department_seed['name']}管理员{index}", |
| 104 | uid=f"{department_seed['prefix']}_admin_{index}", |
| 105 | password_hash=AuthUtils.hash_password(DEFAULT_USER_PASSWORD), |
| 106 | role="admin", |
| 107 | department_id=department.id, |
| 108 | ) |
| 109 | ) |
| 110 | for index in range(1, department_seed["normal_count"] + 1): |
| 111 | users.append( |
| 112 | User( |
| 113 | username=f"{department_seed['name']}用户{index}", |
| 114 | uid=f"{department_seed['prefix']}_user_{index:02d}", |
| 115 | password_hash=AuthUtils.hash_password(DEFAULT_USER_PASSWORD), |
| 116 | role="user", |
| 117 | department_id=department.id, |
| 118 | ) |
no test coverage detected