mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
73 lines
2 KiB
Python
73 lines
2 KiB
Python
from typing import Optional
|
|
from sqlalchemy import JSON, Column, ForeignKey, Integer
|
|
from sqlmodel import Field, SQLModel
|
|
from enum import Enum
|
|
|
|
|
|
class ActivityTypeEnum(str, Enum):
|
|
TYPE_VIDEO = "TYPE_VIDEO"
|
|
TYPE_DOCUMENT = "TYPE_DOCUMENT"
|
|
TYPE_DYNAMIC = "TYPE_DYNAMIC"
|
|
TYPE_ASSIGNMENT = "TYPE_ASSIGNMENT"
|
|
TYPE_CUSTOM = "TYPE_CUSTOM"
|
|
|
|
|
|
class ActivitySubTypeEnum(str, Enum):
|
|
# Dynamic
|
|
SUBTYPE_DYNAMIC_PAGE = "SUBTYPE_DYNAMIC_PAGE"
|
|
# Video
|
|
SUBTYPE_VIDEO_YOUTUBE = "SUBTYPE_VIDEO_YOUTUBE"
|
|
SUBTYPE_VIDEO_HOSTED = "SUBTYPE_VIDEO_HOSTED"
|
|
# Document
|
|
SUBTYPE_DOCUMENT_PDF = "SUBTYPE_DOCUMENT_PDF"
|
|
SUBTYPE_DOCUMENT_DOC = "SUBTYPE_DOCUMENT_DOC"
|
|
# Assignment
|
|
SUBTYPE_ASSIGNMENT_ANY = "SUBTYPE_ASSIGNMENT_ANY"
|
|
# Custom
|
|
SUBTYPE_CUSTOM = "SUBTYPE_CUSTOM"
|
|
|
|
|
|
class ActivityBase(SQLModel):
|
|
name: str
|
|
activity_type: ActivityTypeEnum
|
|
activity_sub_type: ActivitySubTypeEnum
|
|
content: dict = Field(default={}, sa_column=Column(JSON))
|
|
published: bool = False
|
|
|
|
|
|
class Activity(ActivityBase, table=True):
|
|
id: Optional[int] = Field(default=None, primary_key=True)
|
|
org_id: int = Field(
|
|
sa_column=Column(Integer, ForeignKey("organization.id", ondelete="CASCADE"))
|
|
)
|
|
course_id: int = Field(
|
|
default=None,
|
|
sa_column=Column(Integer, ForeignKey("course.id", ondelete="CASCADE")),
|
|
)
|
|
activity_uuid: str = ""
|
|
creation_date: str = ""
|
|
update_date: str = ""
|
|
|
|
|
|
class ActivityCreate(ActivityBase):
|
|
chapter_id: int
|
|
activity_type: ActivityTypeEnum = ActivityTypeEnum.TYPE_CUSTOM
|
|
activity_sub_type: ActivitySubTypeEnum = ActivitySubTypeEnum.SUBTYPE_CUSTOM
|
|
pass
|
|
|
|
|
|
class ActivityUpdate(ActivityBase):
|
|
name: Optional[str]
|
|
content: dict = Field(default={}, sa_column=Column(JSON))
|
|
activity_type: Optional[ActivityTypeEnum]
|
|
activity_sub_type: Optional[ActivitySubTypeEnum]
|
|
published_version: Optional[int]
|
|
version: Optional[int]
|
|
|
|
|
|
class ActivityRead(ActivityBase):
|
|
id: int
|
|
activity_uuid: str
|
|
creation_date: str
|
|
update_date: str
|
|
pass
|