feat: finalize basic task edition and ref files

This commit is contained in:
swve 2024-07-16 22:07:54 +02:00
parent 3c41e0ee73
commit aa55c51b48
13 changed files with 251 additions and 46 deletions

View file

@ -67,6 +67,8 @@ class ActivityUpdate(ActivityBase):
class ActivityRead(ActivityBase):
id: int
org_id: int
course_id: int
activity_uuid: str
creation_date: str
update_date: str

View file

@ -7,6 +7,7 @@ from src.services.courses.activities.activities import (
create_activity,
get_activity,
get_activities,
get_activityby_id,
update_activity,
delete_activity,
)
@ -34,8 +35,22 @@ async def api_create_activity(
return await create_activity(request, activity_object, current_user, db_session)
@router.get("/{activity_id}")
@router.get("/{activity_uuid}")
async def api_get_activity(
request: Request,
activity_uuid: str,
current_user: PublicUser = Depends(get_current_user),
db_session=Depends(get_db_session),
) -> ActivityRead:
"""
Get single activity by activity_id
"""
return await get_activity(
request, activity_uuid, current_user=current_user, db_session=db_session
)
@router.get("/id/{activity_id}")
async def api_get_activityby_id(
request: Request,
activity_id: str,
current_user: PublicUser = Depends(get_current_user),
@ -44,11 +59,10 @@ async def api_get_activity(
"""
Get single activity by activity_id
"""
return await get_activity(
return await get_activityby_id(
request, activity_id, current_user=current_user, db_session=db_session
)
@router.get("/chapter/{chapter_id}")
async def api_get_chapter_activities(
request: Request,

View file

@ -206,7 +206,7 @@ async def api_put_assignment_task_ref_file(
)
@router.delete("/{assignment_uuid}/tasks/{task_uuid}")
@router.delete("/{assignment_uuid}/tasks/{assignment_task_uuid}")
async def api_delete_assignment_tasks(
request: Request,
assignment_task_uuid: str,

View file

@ -18,13 +18,19 @@ from src.security.auth import get_current_user
from src.services.courses.courses import (
create_course,
get_course,
get_course_by_id,
get_course_meta,
get_courses_orgslug,
update_course,
delete_course,
update_course_thumbnail,
)
from src.services.courses.updates import create_update, delete_update, get_updates_by_course_uuid, update_update
from src.services.courses.updates import (
create_update,
delete_update,
get_updates_by_course_uuid,
update_update,
)
router = APIRouter()
@ -93,6 +99,21 @@ async def api_get_course(
)
@router.get("/id/{course_id}")
async def api_get_course_by_id(
request: Request,
course_id: str,
db_session: Session = Depends(get_db_session),
current_user: PublicUser = Depends(get_current_user),
) -> CourseRead:
"""
Get single Course by id
"""
return await get_course_by_id(
request, course_id, current_user=current_user, db_session=db_session
)
@router.get("/{course_uuid}/meta")
async def api_get_course_meta(
request: Request,
@ -154,7 +175,8 @@ async def api_delete_course(
return await delete_course(request, course_uuid, current_user, db_session)
@ router.get("/{course_uuid}/updates")
@router.get("/{course_uuid}/updates")
async def api_get_course_updates(
request: Request,
course_uuid: str,
@ -165,7 +187,10 @@ async def api_get_course_updates(
Get Course Updates by course_uuid
"""
return await get_updates_by_course_uuid(request, course_uuid, current_user, db_session)
return await get_updates_by_course_uuid(
request, course_uuid, current_user, db_session
)
@router.post("/{course_uuid}/updates")
async def api_create_course_update(
@ -183,6 +208,7 @@ async def api_create_course_update(
request, course_uuid, update_object, current_user, db_session
)
@router.put("/{course_uuid}/update/{courseupdate_uuid}")
async def api_update_course_update(
request: Request,
@ -200,6 +226,7 @@ async def api_update_course_update(
request, courseupdate_uuid, update_object, current_user, db_session
)
@router.delete("/{course_uuid}/update/{courseupdate_uuid}")
async def api_delete_course_update(
request: Request,
@ -213,4 +240,3 @@ async def api_delete_course_update(
"""
return await delete_update(request, courseupdate_uuid, current_user, db_session)

View file

@ -116,6 +116,38 @@ async def get_activity(
return activity
async def get_activityby_id(
request: Request,
activity_id: str,
current_user: PublicUser,
db_session: Session,
):
statement = select(Activity).where(Activity.id == activity_id)
activity = db_session.exec(statement).first()
if not activity:
raise HTTPException(
status_code=404,
detail="Activity not found",
)
# Get course from that activity
statement = select(Course).where(Course.id == activity.course_id)
course = db_session.exec(statement).first()
if not course:
raise HTTPException(
status_code=404,
detail="Course not found",
)
# RBAC check
await rbac_check(request, course.course_uuid, current_user, "read", db_session)
activity = ActivityRead.model_validate(activity)
return activity
async def update_activity(
request: Request,

View file

@ -58,6 +58,38 @@ async def get_course(
return course
async def get_course_by_id(
request: Request,
course_id: str,
current_user: PublicUser | AnonymousUser,
db_session: Session,
):
statement = select(Course).where(Course.id == course_id)
course = db_session.exec(statement).first()
if not course:
raise HTTPException(
status_code=404,
detail="Course not found",
)
# RBAC check
await rbac_check(request, course.course_uuid, current_user, "read", db_session)
# Get course authors
authors_statement = (
select(User)
.join(ResourceAuthor)
.where(ResourceAuthor.resource_uuid == course.course_uuid)
)
authors = db_session.exec(authors_statement).all()
# convert from User to UserRead
authors = [UserRead.model_validate(author) for author in authors]
course = CourseRead(**course.model_dump(), authors=authors)
return course
async def get_course_meta(
request: Request,