Skip to content
Snippets Groups Projects

Toggling pregrading and Identifying blank solutions

Open Ghost User requested to merge feature/toggle-pregrading into develop
Compare and Show latest version
2 files
+ 21
17
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -34,10 +34,11 @@ def upgrade():
conn = op.get_bind()
graders = conn.execute('SELECT id, name FROM grader').fetchall()
removed_graders = []
for grader in graders:
# Check if grader is not deleted already
if not conn.execute(f'SELECT * FROM grader WHERE grader.id = {grader.id}').fetchall():
if grader in removed_graders:
continue
# Get other graders with same name
@@ -47,35 +48,38 @@ def upgrade():
conn.execute(f'UPDATE solution SET grader_id = {grader.id} WHERE solution.grader_id = {other_grader.id}')
conn.execute(f'DELETE FROM grader WHERE grader.id = {other_grader.id}')
removed_graders.append(other_grader)
op.rename_table('grader', 'grader_old')
# Create copy table and remove data
op.create_table(
'grader_copy',
'grader',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.Text(), nullable=False, unique=True),
sa.PrimaryKeyConstraint('id')
)
op.execute('INSERT INTO grader_copy (id, name)' +
'SELECT id, name FROM grader')
op.execute('INSERT INTO grader (id, name)' +
'SELECT id, name FROM grader_old')
op.drop_table('grader')
op.rename_table('grader_copy', 'grader')
op.drop_table('grader_old')
def downgrade():
backup_db()
op.rename_table('grader', 'grader_old')
# Add Grader table without unique constraint
op.create_table(
'grader_copy',
'grader',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.Text(), nullable=False, unique=False),
sa.PrimaryKeyConstraint('id')
)
# Move data from old Grader table
op.execute('INSERT INTO grader_copy (id, name)' +
'SELECT id, name FROM grader')
op.drop_table('grader')
op.rename_table('grader_copy', 'grader')
# Move data from old Grader table and delete it
op.execute('INSERT INTO grader (id, name)' +
'SELECT id, name FROM grader_old')
op.drop_table('grader_old')
Loading