MCPcopy
hub / github.com/learnhouse/learnhouse / complete_activity

Function complete_activity

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

Mark an activity as completed on behalf of a user.

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

Source from the content-addressed store, hash-verified

424
425
426async def complete_activity(
427 request: Request,
428 token_user: APITokenUser,
429 user_id: int,
430 activity_uuid: str,
431 db_session: AsyncSession,
432) -> dict:
433 """Mark an activity as completed on behalf of a user."""
434
435 await _get_user_in_org(user_id, token_user.org_id, db_session)
436
437 activity = (await db_session.execute(
438 select(Activity).where(Activity.activity_uuid == activity_uuid)
439 )).scalars().first()
440 if not activity:
441 raise HTTPException(status_code=404, detail="Activity not found")
442
443 course = (await db_session.execute(select(Course).where(Course.id == activity.course_id))).scalars().first()
444 if not course or course.org_id != token_user.org_id:
445 raise HTTPException(status_code=404, detail="Activity not found")
446
447 # Ensure trail exists
448 trail = (await db_session.execute(
449 select(Trail).where(Trail.org_id == token_user.org_id, Trail.user_id == user_id)
450 )).scalars().first()
451 if not trail:
452 trail = Trail(
453 org_id=token_user.org_id,
454 user_id=user_id,
455 trail_uuid=f"trail_{uuid4()}",
456 creation_date=str(datetime.now()),
457 update_date=str(datetime.now()),
458 )
459 db_session.add(trail)
460 await db_session.commit()
461 await db_session.refresh(trail)
462
463 # Ensure trail run exists
464 trailrun = (await db_session.execute(
465 select(TrailRun).where(
466 TrailRun.trail_id == trail.id,
467 TrailRun.course_id == course.id,
468 TrailRun.user_id == user_id,
469 )
470 )).scalars().first()
471 if not trailrun:
472 trailrun = TrailRun(
473 trail_id=trail.id if trail.id is not None else 0,
474 course_id=course.id if course.id is not None else 0,
475 org_id=course.org_id,
476 user_id=user_id,
477 creation_date=str(datetime.now()),
478 update_date=str(datetime.now()),
479 )
480 db_session.add(trailrun)
481 await db_session.commit()
482 await db_session.refresh(trailrun)
483

Calls 10

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