File size: 2,281 Bytes
b7a7f32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from datetime import datetime
from typing import Optional, List, Dict  # noqa

from pydantic import BaseModel, Json
from schemas import GroupReturn, CourseMin, TeacherShort


class QuizBase(BaseModel):
    end_time: datetime
    start_time: datetime
    title: str
    description: str
    is_randomized: bool
    display_individual: bool
    instructor: List[int]
    group: List[int]
    course_id: int
    total_marks: int = None


class QuizCreate(QuizBase):
    pass


class QuizUpdate(QuizBase):
    end_time: datetime = None
    start_time: datetime = None
    title: str = None
    description: str = None
    is_randomized: bool = None
    display_individual: bool = None
    instructor: List[int] = None
    group: List[int] = None
    course_id: int = None
    total_marks: int = None


class QuizInDBBase(QuizBase):
    id: Optional[int]

    class Config:
        orm_mode = True


class QuizInDB(QuizInDBBase):
    pass


class Quiz(BaseModel):
    id: Optional[int]
    course: CourseMin
    end_time: datetime
    start_time: datetime
    title: str
    description: str
    is_randomized: bool
    display_individual: bool
    total_marks: int
    group: List[GroupReturn]
    instructor: List[TeacherShort]

    class Config:
        orm_mode = True


# XXX
# XXX
# Quiz Question schema


class QuizQuestionBase(BaseModel):
    question_text: str = None
    question_image: List[str] = None
    options: Json
    answer: List[int] = None
    quiz_id: int
    marks: int = None


class QuizQuestionCreate(QuizQuestionBase):
    pass


class QuizQuestionUpdate(QuizQuestionBase):
    question_text: str = None
    question_image: List[str] = None
    options: Json = None
    answer: List[int] = None
    marks: int = None
    quiz_id: int


class QuizQuestionInDBBase(QuizQuestionBase):
    id: Optional[int]
    options: List[Dict[str, str]]

    class Config:
        orm_mode = True


class QuizQuestionInDB(QuizQuestionInDBBase):
    pass


class QuizQuestion(QuizQuestionInDBBase):
    pass


class QuizQuestionwoutAnswer(BaseModel):
    id: Optional[int]
    question_text: str = None
    question_image: List[str] = None
    options: List[Dict[str, str]]
    quiz_id: int
    multiple: bool = False
    marks: int

    class Config:
        orm_mode = True