MCPcopy
hub / github.com/learnhouse/learnhouse / enroll_user

Function enroll_user

apps/api/src/services/admin/admin.py:234–303  ·  view source on GitHub ↗

Enroll a user in a course on their behalf.

(
    request: Request,
    token_user: APITokenUser,
    user_id: int,
    course_uuid: str,
    db_session: AsyncSession,
)

Source from the content-addressed store, hash-verified

232
233
234async def enroll_user(
235 request: Request,
236 token_user: APITokenUser,
237 user_id: int,
238 course_uuid: str,
239 db_session: AsyncSession,
240) -> TrailRead:
241 """Enroll a user in a course on their behalf."""
242
243 await _get_user_in_org(user_id, token_user.org_id, db_session)
244
245 course = (await db_session.execute(
246 select(Course).where(
247 Course.course_uuid == course_uuid,
248 Course.org_id == token_user.org_id,
249 )
250 )).scalars().first()
251 if not course:
252 raise HTTPException(status_code=404, detail="Course not found")
253
254 # Ensure trail exists
255 trail = (await db_session.execute(
256 select(Trail).where(Trail.org_id == token_user.org_id, Trail.user_id == user_id)
257 )).scalars().first()
258 if not trail:
259 trail = Trail(
260 org_id=token_user.org_id,
261 user_id=user_id,
262 trail_uuid=f"trail_{uuid4()}",
263 creation_date=str(datetime.now()),
264 update_date=str(datetime.now()),
265 )
266 db_session.add(trail)
267 await db_session.commit()
268 await db_session.refresh(trail)
269
270 # Check for existing enrollment
271 existing = (await db_session.execute(
272 select(TrailRun).where(
273 TrailRun.course_id == course.id,
274 TrailRun.user_id == user_id,
275 TrailRun.org_id == token_user.org_id,
276 )
277 )).scalars().first()
278 if existing:
279 raise HTTPException(status_code=400, detail="User is already enrolled in this course")
280
281 trail_run = TrailRun(
282 trail_id=trail.id if trail.id is not None else 0,
283 course_id=course.id if course.id is not None else 0,
284 org_id=token_user.org_id,
285 user_id=user_id,
286 creation_date=str(datetime.now()),
287 update_date=str(datetime.now()),
288 )
289 db_session.add(trail_run)
290 await db_session.commit()
291 await db_session.refresh(trail_run)

Calls 10

TrailClass · 0.90
TrailRunClass · 0.90
trackFunction · 0.90
_build_trail_readFunction · 0.90
_get_user_in_orgFunction · 0.85
commitMethod · 0.80
firstMethod · 0.45
scalarsMethod · 0.45
executeMethod · 0.45
allMethod · 0.45