From 99146ca02be62e3ebeb442de0cce33b7444a60de Mon Sep 17 00:00:00 2001 From: swve Date: Fri, 15 Dec 2023 18:36:31 +0100 Subject: [PATCH] fix: trail minor issues --- apps/api/src/services/trail/trail.py | 58 ++++++++++++++----- .../(withmenu)/course/[courseuuid]/course.tsx | 2 +- .../(withmenu)/course/[courseuuid]/page.tsx | 6 +- 3 files changed, 46 insertions(+), 20 deletions(-) diff --git a/apps/api/src/services/trail/trail.py b/apps/api/src/services/trail/trail.py index 369757e6..3dd7376e 100644 --- a/apps/api/src/services/trail/trail.py +++ b/apps/api/src/services/trail/trail.py @@ -96,16 +96,42 @@ async def get_user_trails( return trail_read -async def get_user_trail_with_orgid( - request: Request, user: PublicUser | AnonymousUser, org_id: int, db_session: Session -) -> TrailRead: +async def check_trail_presence( + org_id: int, + user_id: int, + request: Request, + user: PublicUser, + db_session: Session, +): statement = select(Trail).where(Trail.org_id == org_id, Trail.user_id == user.id) trail = db_session.exec(statement).first() if not trail: - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, detail="Trail not found" + trail = await create_user_trail( + request, + user, + TrailCreate( + org_id=org_id, + user_id=user.id, + ), + db_session, ) + return trail + + return trail + + +async def get_user_trail_with_orgid( + request: Request, user: PublicUser, org_id: int, db_session: Session +) -> TrailRead: + + trail = await check_trail_presence( + org_id=org_id, + user_id=user.id, + request=request, + user=user, + db_session=db_session, + ) statement = select(TrailRun).where(TrailRun.trail_id == trail.id) trail_runs = db_session.exec(statement).all() @@ -172,15 +198,13 @@ async def add_activity_to_trail( status_code=status.HTTP_404_NOT_FOUND, detail="Course not found" ) - statement = select(Trail).where( - Trail.org_id == course.org_id, Trail.user_id == user.id + trail = await check_trail_presence( + org_id=course.org_id, + user_id=user.id, + request=request, + user=user, + db_session=db_session, ) - trail = db_session.exec(statement).first() - - if not trail: - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, detail="Trail not found" - ) statement = select(TrailRun).where( TrailRun.trail_id == trail.id, TrailRun.course_id == course.id @@ -208,7 +232,7 @@ async def add_activity_to_trail( if not trailstep: trailstep = TrailStep( trailrun_id=trailrun.id if trailrun.id is not None else 0, - activity_id=activity.id, + activity_id=activity.id if activity.id is not None else 0, course_id=course.id if course.id is not None else 0, trail_id=trail.id if trail.id is not None else 0, org_id=course.org_id, @@ -306,7 +330,8 @@ async def add_course_to_trail( trail_runs = db_session.exec(statement).all() trail_runs = [ - TrailRunRead(**trail_run.__dict__, course={}, steps=[], course_total_steps=0 ) for trail_run in trail_runs + TrailRunRead(**trail_run.__dict__, course={}, steps=[], course_total_steps=0) + for trail_run in trail_runs ] for trail_run in trail_runs: @@ -374,7 +399,8 @@ async def remove_course_from_trail( trail_runs = db_session.exec(statement).all() trail_runs = [ - TrailRunRead(**trail_run.__dict__, course={}, steps=[], course_total_steps=0 ) for trail_run in trail_runs + TrailRunRead(**trail_run.__dict__, course={}, steps=[], course_total_steps=0) + for trail_run in trail_runs ] for trail_run in trail_runs: diff --git a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx index 752641b8..f23c9404 100644 --- a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx +++ b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx @@ -193,7 +193,7 @@ const CourseClient = (props: any) => {
Author
-
{course.authors[0].first_name} {course.authors[0].last_name}
+
{course.authors[0].first_name} {course.authors[0].last_name} { (course.authors[0].first_name && course.authors[0].last_name) ? course.authors[0].first_name + ' ' + course.authors[0].last_name : course.authors[0].username }
} diff --git a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx index efae450b..75e3f295 100644 --- a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx +++ b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx @@ -39,10 +39,10 @@ export async function generateMetadata( }, openGraph: { title: course_meta.name + ` — ${org.name}`, - description: course_meta.description, + description: course_meta.description ? course_meta.description : '', type: 'article', - publishedTime: course_meta.creation_date, - tags: course_meta.learnings, + publishedTime: course_meta.creation_date ? course_meta.creation_date : '', + tags: course_meta.learnings ? course_meta.learnings : [], }, }; }