mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-18 20:09:25 +00:00
fix: improve activity endpoint to include progress
This commit is contained in:
parent
ced2011394
commit
032f8334ec
2 changed files with 24 additions and 3 deletions
|
|
@ -5,6 +5,7 @@ from typing import List, Literal, Optional
|
|||
from uuid import uuid4
|
||||
from fastapi import HTTPException, Request, status
|
||||
from pydantic import BaseModel
|
||||
from src.services.courses.chapters import get_coursechapters_meta
|
||||
|
||||
from src.services.users import PublicUser
|
||||
|
||||
|
|
@ -58,15 +59,35 @@ async def create_activity(request: Request, user: PublicUser, activity_object: A
|
|||
|
||||
async def get_user_activities(request: Request, user: PublicUser, org_id: str):
|
||||
activities = request.app.db["activities"]
|
||||
courses = request.app.db["courses"]
|
||||
coursechapters = request.app.db["coursechapters"]
|
||||
|
||||
activities_metadata = []
|
||||
|
||||
user_activities = activities.find(
|
||||
{"user_id": user.user_id, "org_id": org_id})
|
||||
{"user_id": user.user_id}, {'_id': 0})
|
||||
|
||||
|
||||
|
||||
if not user_activities:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_409_CONFLICT, detail="No activities found")
|
||||
|
||||
return [json.loads(json.dumps(activity, default=str)) for activity in user_activities]
|
||||
for activity in user_activities:
|
||||
# get number of lectures in the course
|
||||
coursechapters = await get_coursechapters_meta(request, activity['course_id'], user)
|
||||
|
||||
# calculate progression using the number of lectures marked complete and the total number of lectures
|
||||
progression = round(
|
||||
len(activity['lectures_marked_complete']) / len(coursechapters['lectures']) * 100, 2)
|
||||
|
||||
course = courses.find_one({"course_id": activity['course_id']}, {'_id': 0})
|
||||
|
||||
# add progression to the activity
|
||||
one_activity = {"course": course, "activitydata": activity, "progression": progression}
|
||||
activities_metadata.append(one_activity)
|
||||
|
||||
return activities_metadata
|
||||
|
||||
|
||||
async def add_lecture_to_activity(request: Request, user: PublicUser, org_id: str, course_id: str, lecture_id: str):
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ async def get_coursechapters(request: Request,course_id: str, page: int = 1, lim
|
|||
return [json.loads(json.dumps(coursechapter, default=str)) for coursechapter in all_coursechapters]
|
||||
|
||||
|
||||
async def get_coursechapters_meta(request: Request,course_id: str, current_user: PublicUser):
|
||||
async def get_coursechapters_meta(request: Request, course_id: str, current_user: PublicUser):
|
||||
coursechapters = request.app.db["coursechapters"]
|
||||
courses = request.app.db["courses"]
|
||||
lectures = request.app.db["lectures"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue