Spaces:
Sleeping
Sleeping
File size: 1,207 Bytes
7361291 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# api/models.py
from __future__ import annotations
from typing import List, Optional, Literal
from pydantic import BaseModel, Field
class PersonContact(BaseModel):
name: str = "N/A"
email: str = ""
class CourseDirectoryItem(BaseModel):
id: str
name: str
instructor: PersonContact = Field(default_factory=PersonContact)
teachingAssistant: PersonContact = Field(default_factory=PersonContact)
class WorkspaceMember(BaseModel):
id: str
name: str
email: Optional[str] = ""
role: Optional[Literal["owner", "member"]] = "member"
class WorkspaceCourseRef(BaseModel):
id: Optional[str] = None
name: Optional[str] = None
instructor: Optional[PersonContact] = None
teachingAssistant: Optional[PersonContact] = None
class Workspace(BaseModel):
id: str
type: Literal["individual", "group"]
category: Optional[Literal["course", "personal"]] = None
# ✅ Group Name:前端要编辑的 groupName 就用 name
name: Optional[str] = None
# ✅ Group #
groupNo: Optional[int] = None
# ✅ Members
members: List[WorkspaceMember] = Field(default_factory=list)
# ✅ Course binding
courseId: Optional[str] = None
courseInfo: Optional[WorkspaceCourseRef] = None
|