Untitled

 avatar
unknown
plain_text
a month ago
2.0 kB
1
Indexable
from pydantic import BaseModel, EmailStr, HttpUrl
from typing import List, Optional, Literal
from uuid import UUID
from datetime import datetime

# User Schema
class User(BaseModel):
    user_id: UUID
    name: str
    email: EmailStr
    lab: Optional[str]
    roll_number: Optional[str]
    role: Literal['Program Chair', 'Researcher', 'Presenter', 'Attendee']
    registered_at: datetime

# Submission Schema
class Submission(BaseModel):
    submission_id: UUID
    track_id: UUID
    title: str
    abstract: str
    lab_name: str
    advisor_name: str
    co_author_names: Optional[str]
    submission_type: str  # Workshop, Short Paper, Full Paper, Journal, etc.
    forum_name: str      # Conference/Journal/Forum Name
    forum_level: str     # A*/A/B/Below B/Workshop/Others
    acceptance_date: datetime
    file_url: str # path of the stored submission file
    acceptance_proof: str # path of the stored acceptance proof
    status: Literal['Pending', 'Accepted', 'Rejected', 'Revision Requested']
    review_comments: Optional[str]
    submitted_at: datetime
    reviewed_at: Optional[datetime]

# Research Track Schema
class ResearchTrack(BaseModel):
    track_id: UUID
    title: str
    description: str
    created_by: UUID  # user_id (Program Chair)
    created_at: datetime

# Announcement Schema
class Announcement(BaseModel):
    announcement_id: UUID
    track_id: Optional[UUID]
    title: str
    content: str
    created_by: UUID  # user_id (Program Chair)
    created_at: datetime

# Schedule Schema
class Schedule(BaseModel):
    schedule_id: UUID
    track_id: UUID
    session_title: str
    session_description: str
    start_time: datetime
    end_time: datetime
    presenters: List[UUID]  # Array of submission_ids
    location: str
    created_at: datetime

# Registration Schema
class Registration(BaseModel):
    registration_id: UUID
    user_id: UUID
    track_id: UUID
    registered_at: datetime
Leave a Comment