feat: add details to video activities

wip: uploadable video activities
This commit is contained in:
swve 2025-04-22 17:25:41 +02:00
parent 3173e6b417
commit 31b5104dd5
7 changed files with 181 additions and 3 deletions

View file

@ -32,6 +32,7 @@ class ActivityBase(SQLModel):
activity_type: ActivityTypeEnum
activity_sub_type: ActivitySubTypeEnum
content: dict = Field(default={}, sa_column=Column(JSON))
details: Optional[dict] = Field(default=None, sa_column=Column(JSON))
published: bool = False
@ -53,6 +54,7 @@ class ActivityCreate(ActivityBase):
chapter_id: int
activity_type: ActivityTypeEnum = ActivityTypeEnum.TYPE_CUSTOM
activity_sub_type: ActivitySubTypeEnum = ActivitySubTypeEnum.SUBTYPE_CUSTOM
details: dict = Field(default={}, sa_column=Column(JSON))
pass
@ -61,6 +63,7 @@ class ActivityUpdate(ActivityBase):
content: dict = Field(default={}, sa_column=Column(JSON))
activity_type: Optional[ActivityTypeEnum]
activity_sub_type: Optional[ActivitySubTypeEnum]
details: Optional[dict] = Field(default=None, sa_column=Column(JSON))
published_version: Optional[int]
version: Optional[int]
@ -72,4 +75,5 @@ class ActivityRead(ActivityBase):
activity_uuid: str
creation_date: str
update_date: str
details: Optional[dict] = Field(default=None, sa_column=Column(JSON))
pass

View file

@ -1,4 +1,4 @@
from typing import List
from typing import List, Optional
from fastapi import APIRouter, Depends, UploadFile, Form, Request
from src.db.courses.activities import ActivityCreate, ActivityRead, ActivityUpdate
from src.db.users import PublicUser
@ -113,6 +113,7 @@ async def api_create_video_activity(
request: Request,
name: str = Form(),
chapter_id: str = Form(),
details: Optional[dict] = Form(default=None),
current_user: PublicUser = Depends(get_current_user),
video_file: UploadFile | None = None,
db_session=Depends(get_db_session),
@ -127,6 +128,7 @@ async def api_create_video_activity(
current_user,
db_session,
video_file,
details,
)

View file

@ -1,4 +1,4 @@
from typing import Literal
from typing import Literal, Optional
from src.db.courses.courses import Course
from src.db.organizations import Organization
@ -31,6 +31,7 @@ async def create_video_activity(
current_user: PublicUser,
db_session: Session,
video_file: UploadFile | None = None,
details: Optional[dict] = None,
):
# RBAC check
await rbac_check(request, "activity_x", current_user, "create", db_session)
@ -99,6 +100,7 @@ async def create_video_activity(
"filename": "video." + video_format,
"activity_uuid": activity_uuid,
},
details=details,
version=1,
creation_date=str(datetime.now()),
update_date=str(datetime.now()),
@ -144,6 +146,7 @@ class ExternalVideo(BaseModel):
uri: str
type: Literal["youtube", "vimeo"]
chapter_id: str
details: Optional[dict] = None
class ExternalVideoInDB(BaseModel):
@ -194,6 +197,7 @@ async def create_external_video_activity(
"type": data.type,
"activity_uuid": activity_uuid,
},
details=data.details,
version=1,
creation_date=str(datetime.now()),
update_date=str(datetime.now()),