mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19: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 uuid import uuid4
|
||||||
from fastapi import HTTPException, Request, status
|
from fastapi import HTTPException, Request, status
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
from src.services.courses.chapters import get_coursechapters_meta
|
||||||
|
|
||||||
from src.services.users import PublicUser
|
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):
|
async def get_user_activities(request: Request, user: PublicUser, org_id: str):
|
||||||
activities = request.app.db["activities"]
|
activities = request.app.db["activities"]
|
||||||
|
courses = request.app.db["courses"]
|
||||||
|
coursechapters = request.app.db["coursechapters"]
|
||||||
|
|
||||||
|
activities_metadata = []
|
||||||
|
|
||||||
user_activities = activities.find(
|
user_activities = activities.find(
|
||||||
{"user_id": user.user_id, "org_id": org_id})
|
{"user_id": user.user_id}, {'_id': 0})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if not user_activities:
|
if not user_activities:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_409_CONFLICT, detail="No activities found")
|
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):
|
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]
|
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"]
|
coursechapters = request.app.db["coursechapters"]
|
||||||
courses = request.app.db["courses"]
|
courses = request.app.db["courses"]
|
||||||
lectures = request.app.db["lectures"]
|
lectures = request.app.db["lectures"]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue