MCPcopy
hub / github.com/learnhouse/learnhouse / add_activity_to_trail

Function add_activity_to_trail

apps/api/src/services/trail/trail.py:201–345  ·  view source on GitHub ↗
(
    request: Request,
    user: PublicUser,
    activity_uuid: str,
    db_session: AsyncSession,
)

Source from the content-addressed store, hash-verified

199
200
201async def add_activity_to_trail(
202 request: Request,
203 user: PublicUser,
204 activity_uuid: str,
205 db_session: AsyncSession,
206) -> TrailRead:
207 # Look for the activity
208 statement = select(Activity).where(Activity.activity_uuid == activity_uuid)
209 activity = (await db_session.execute(statement)).scalars().first()
210
211 if not activity:
212 raise HTTPException(
213 status_code=status.HTTP_404_NOT_FOUND, detail="Activity not found"
214 )
215
216 statement = select(Course).where(Course.id == activity.course_id)
217 course = (await db_session.execute(statement)).scalars().first()
218
219 if not course:
220 raise HTTPException(
221 status_code=status.HTTP_404_NOT_FOUND, detail="Course not found"
222 )
223
224 await check_resource_access(
225 request, db_session, user, course.course_uuid, AccessAction.READ
226 )
227
228 trail = await check_trail_presence(
229 org_id=course.org_id,
230 user_id=user.id,
231 request=request,
232 user=user,
233 db_session=db_session,
234 )
235
236 statement = select(TrailRun).where(
237 TrailRun.trail_id == trail.id, TrailRun.course_id == course.id, TrailRun.user_id == user.id
238 )
239 trailrun = (await db_session.execute(statement)).scalars().first()
240
241 if not trailrun:
242 trailrun = TrailRun(
243 trail_id=trail.id if trail.id is not None else 0,
244 course_id=course.id if course.id is not None else 0,
245 org_id=course.org_id,
246 user_id=user.id,
247 creation_date=str(datetime.now()),
248 update_date=str(datetime.now()),
249 )
250 db_session.add(trailrun)
251 await db_session.commit()
252 await db_session.refresh(trailrun)
253
254 statement = select(TrailStep).where(
255 TrailStep.trailrun_id == trailrun.id, TrailStep.activity_id == activity.id, TrailStep.user_id == user.id
256 )
257 trailstep = (await db_session.execute(statement)).scalars().first()
258

Calls 14

check_resource_accessFunction · 0.90
TrailRunClass · 0.90
TrailStepClass · 0.90
trackFunction · 0.90
dispatch_webhooksFunction · 0.90
check_trail_presenceFunction · 0.85
_build_trail_readFunction · 0.85
commitMethod · 0.80
firstMethod · 0.45
scalarsMethod · 0.45