-
Notifications
You must be signed in to change notification settings - Fork 83
/
94d2839daa08_.py
227 lines (219 loc) · 13.3 KB
/
94d2839daa08_.py
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
"""empty message
Revision ID: 94d2839daa08
Revises: None
Create Date: 2016-06-17 03:23:17.366556
"""
# revision identifiers, used by Alembic.
revision = '94d2839daa08'
down_revision = None
from alembic import op
import sqlalchemy as sa
import server
from sqlalchemy.dialects import mysql
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.create_table('user',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=255), nullable=True),
sa.Column('email', sa.String(length=255), nullable=False),
sa.Column('is_admin', sa.Boolean(), nullable=True),
sa.PrimaryKeyConstraint('id', name=op.f('pk_user'))
)
op.create_index(op.f('ix_user_email'), 'user', ['email'], unique=True)
op.create_table('version',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=255), nullable=False),
sa.Column('current_version', sa.String(length=255), nullable=True),
sa.Column('download_link', sa.Text(), nullable=True),
sa.PrimaryKeyConstraint('id', name=op.f('pk_version'))
)
op.create_index(op.f('ix_version_name'), 'version', ['name'], unique=True)
op.create_table('course',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('offering', sa.String(length=255), nullable=False),
sa.Column('institution', sa.String(length=255), nullable=False),
sa.Column('display_name', sa.String(length=255), nullable=False),
sa.Column('creator_id', sa.Integer(), nullable=True),
sa.Column('active', sa.Boolean(), nullable=False),
sa.Column('timezone', server.models.Timezone(length=255), nullable=False),
sa.ForeignKeyConstraint(['creator_id'], ['user.id'], name=op.f('fk_course_creator_id_user')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_course'))
)
op.create_index(op.f('ix_course_offering'), 'course', ['offering'], unique=True)
op.create_table('group_action',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('action_type', sa.Enum('invite', 'accept', 'decline', 'remove', name='action_type'), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('target_id', sa.Integer(), nullable=False),
sa.Column('group_before', server.models.Json(), nullable=False),
sa.Column('group_after', server.models.Json(), nullable=False),
sa.ForeignKeyConstraint(['target_id'], ['user.id'], name=op.f('fk_group_action_target_id_user')),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_group_action_user_id_user')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_group_action'))
)
op.create_table('assignment',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=255), nullable=False),
sa.Column('course_id', sa.Integer(), nullable=False),
sa.Column('display_name', sa.String(length=255), nullable=False),
sa.Column('due_date', sa.DateTime(timezone=True), nullable=False),
sa.Column('lock_date', sa.DateTime(timezone=True), nullable=False),
sa.Column('creator_id', sa.Integer(), nullable=True),
sa.Column('url', sa.Text(), nullable=True),
sa.Column('max_group_size', sa.Integer(), nullable=False),
sa.Column('revisions_allowed', sa.Boolean(), nullable=False),
sa.Column('autograding_key', sa.String(length=255), nullable=True),
sa.Column('files', server.models.JsonBlob(), nullable=True),
sa.ForeignKeyConstraint(['course_id'], ['course.id'], name=op.f('fk_assignment_course_id_course')),
sa.ForeignKeyConstraint(['creator_id'], ['user.id'], name=op.f('fk_assignment_creator_id_user')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_assignment'))
)
op.create_index(op.f('ix_assignment_course_id'), 'assignment', ['course_id'], unique=False)
op.create_index(op.f('ix_assignment_name'), 'assignment', ['name'], unique=True)
op.create_table('enrollment',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('course_id', sa.Integer(), nullable=False),
sa.Column('role', sa.Enum('student', 'grader', 'staff', 'instructor', name='role'), nullable=False),
sa.Column('sid', sa.String(length=255), nullable=True),
sa.Column('class_account', sa.String(length=255), nullable=True),
sa.Column('section', sa.String(length=255), nullable=True),
sa.ForeignKeyConstraint(['course_id'], ['course.id'], name=op.f('fk_enrollment_course_id_course')),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_enrollment_user_id_user')),
sa.PrimaryKeyConstraint('user_id', 'course_id', name=op.f('pk_enrollment'))
)
op.create_index(op.f('ix_enrollment_course_id'), 'enrollment', ['course_id'], unique=False)
op.create_index(op.f('ix_enrollment_user_id'), 'enrollment', ['user_id'], unique=False)
op.create_table('backup',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('submitter_id', sa.Integer(), nullable=False),
sa.Column('assignment_id', sa.Integer(), nullable=False),
sa.Column('submit', sa.Boolean(), nullable=False),
sa.Column('flagged', sa.Boolean(), nullable=False),
sa.Column('extension', sa.Boolean(), nullable=True),
sa.ForeignKeyConstraint(['assignment_id'], ['assignment.id'], name=op.f('fk_backup_assignment_id_assignment')),
sa.ForeignKeyConstraint(['submitter_id'], ['user.id'], name=op.f('fk_backup_submitter_id_user')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_backup'))
)
op.create_table('group',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('assignment_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['assignment_id'], ['assignment.id'], name=op.f('fk_group_assignment_id_assignment')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_group'))
)
op.create_table('comment',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('updated', sa.DateTime(timezone=True), nullable=True),
sa.Column('backup_id', sa.Integer(), nullable=False),
sa.Column('author_id', sa.Integer(), nullable=False),
sa.Column('filename', sa.String(length=255), nullable=False),
sa.Column('line', sa.Integer(), nullable=False),
sa.Column('message', mysql.MEDIUMTEXT(), nullable=True),
sa.ForeignKeyConstraint(['author_id'], ['user.id'], name=op.f('fk_comment_author_id_user')),
sa.ForeignKeyConstraint(['backup_id'], ['backup.id'], name=op.f('fk_comment_backup_id_backup')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_comment'))
)
op.create_index(op.f('ix_comment_backup_id'), 'comment', ['backup_id'], unique=False)
op.create_table('group_member',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('assignment_id', sa.Integer(), nullable=False),
sa.Column('group_id', sa.Integer(), nullable=False),
sa.Column('status', sa.Enum('pending', 'active', name='status'), nullable=False),
sa.Column('updated', sa.DateTime(timezone=True), nullable=True),
sa.ForeignKeyConstraint(['assignment_id'], ['assignment.id'], name=op.f('fk_group_member_assignment_id_assignment')),
sa.ForeignKeyConstraint(['group_id'], ['group.id'], name=op.f('fk_group_member_group_id_group')),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], name=op.f('fk_group_member_user_id_user')),
sa.PrimaryKeyConstraint('user_id', 'assignment_id', name=op.f('pk_group_member'))
)
op.create_index(op.f('ix_group_member_group_id'), 'group_member', ['group_id'], unique=False)
op.create_index(op.f('ix_group_member_status'), 'group_member', ['status'], unique=False)
op.create_index(op.f('ix_group_member_user_id'), 'group_member', ['user_id'], unique=False)
op.create_table('message',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('backup_id', sa.Integer(), nullable=False),
sa.Column('contents', server.models.JsonBlob(), nullable=False),
sa.Column('kind', sa.String(length=255), nullable=False),
sa.ForeignKeyConstraint(['backup_id'], ['backup.id'], name=op.f('fk_message_backup_id_backup')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_message')),
mysql_row_format=os.getenv('DB_ROW_FORMAT', 'COMPRESSED')
)
op.create_index(op.f('ix_message_backup_id'), 'message', ['backup_id'], unique=False)
op.create_index(op.f('ix_message_kind'), 'message', ['kind'], unique=False)
op.create_table('score',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('grader_id', sa.Integer(), nullable=False),
sa.Column('assignment_id', sa.Integer(), nullable=False),
sa.Column('backup_id', sa.Integer(), nullable=False),
sa.Column('kind', sa.String(length=255), nullable=False),
sa.Column('score', sa.Float(), nullable=False),
sa.Column('message', mysql.MEDIUMTEXT(), nullable=True),
sa.Column('public', sa.Boolean(), nullable=True),
sa.Column('archived', sa.Boolean(), nullable=True),
sa.ForeignKeyConstraint(['assignment_id'], ['assignment.id'], name=op.f('fk_score_assignment_id_assignment')),
sa.ForeignKeyConstraint(['backup_id'], ['backup.id'], name=op.f('fk_score_backup_id_backup')),
sa.ForeignKeyConstraint(['grader_id'], ['user.id'], name=op.f('fk_score_grader_id_user')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_score'))
)
op.create_index(op.f('ix_score_backup_id'), 'score', ['backup_id'], unique=False)
op.create_table('grading_task',
sa.Column('created', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('assignment_id', sa.Integer(), nullable=False),
sa.Column('kind', sa.String(length=255), nullable=True),
sa.Column('backup_id', sa.Integer(), nullable=False),
sa.Column('course_id', sa.Integer(), nullable=True),
sa.Column('grader_id', sa.Integer(), nullable=True),
sa.Column('score_id', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['assignment_id'], ['assignment.id'], name=op.f('fk_grading_task_assignment_id_assignment')),
sa.ForeignKeyConstraint(['backup_id'], ['backup.id'], name=op.f('fk_grading_task_backup_id_backup')),
sa.ForeignKeyConstraint(['course_id'], ['course.id'], name=op.f('fk_grading_task_course_id_course')),
sa.ForeignKeyConstraint(['grader_id'], ['user.id'], name=op.f('fk_grading_task_grader_id_user')),
sa.ForeignKeyConstraint(['score_id'], ['score.id'], name=op.f('fk_grading_task_score_id_score')),
sa.PrimaryKeyConstraint('id', name=op.f('pk_grading_task'))
)
op.create_index(op.f('ix_grading_task_assignment_id'), 'grading_task', ['assignment_id'], unique=False)
op.create_index(op.f('ix_grading_task_grader_id'), 'grading_task', ['grader_id'], unique=False)
### end Alembic commands ###
def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_index(op.f('ix_grading_task_grader_id'), table_name='grading_task')
op.drop_index(op.f('ix_grading_task_assignment_id'), table_name='grading_task')
op.drop_table('grading_task')
op.drop_index(op.f('ix_score_backup_id'), table_name='score')
op.drop_table('score')
op.drop_index(op.f('ix_message_kind'), table_name='message')
op.drop_index(op.f('ix_message_backup_id'), table_name='message')
op.drop_table('message')
op.drop_index(op.f('ix_group_member_user_id'), table_name='group_member')
op.drop_index(op.f('ix_group_member_status'), table_name='group_member')
op.drop_index(op.f('ix_group_member_group_id'), table_name='group_member')
op.drop_table('group_member')
op.drop_index(op.f('ix_comment_backup_id'), table_name='comment')
op.drop_table('comment')
op.drop_table('group')
op.drop_table('backup')
op.drop_index(op.f('ix_enrollment_user_id'), table_name='enrollment')
op.drop_index(op.f('ix_enrollment_course_id'), table_name='enrollment')
op.drop_table('enrollment')
op.drop_index(op.f('ix_assignment_name'), table_name='assignment')
op.drop_index(op.f('ix_assignment_course_id'), table_name='assignment')
op.drop_table('assignment')
op.drop_table('group_action')
op.drop_index(op.f('ix_course_offering'), table_name='course')
op.drop_table('course')
op.drop_index(op.f('ix_version_name'), table_name='version')
op.drop_table('version')
op.drop_index(op.f('ix_user_email'), table_name='user')
op.drop_table('user')
### end Alembic commands ###