Spaces:
Sleeping
Sleeping
| # 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 | |