Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
"""
Generate sql commands to fix truncated anonymous student ids in the ORA database
"""
import sys

from django.core.management.base import NoArgsCommand

from student.models import AnonymousUserId, anonymous_id_for_user


class Command(NoArgsCommand):
help = __doc__

def handle_noargs(self, **options):
"""
Reads a list of ids (newline separated) from stdin, and
dumps sql queries to run on the ORA database to fix those ids
from their truncated form to the full 32 character change.

The following query will generate the list of ids needed to be fixed
from the ORA database:

SELECT student_id FROM peer_grading_calibrationhistory WHERE LENGTH(student_id) = 16
UNION SELECT student_id FROM controller_submission WHERE LENGTH(student_id) = 16
UNION SELECT student_id FROM metrics_timing WHERE LENGTH(student_id) = 16
UNION SELECT student_id FROM metrics_studentcourseprofile WHERE LENGTH(student_id) = 16
UNION SELECT student_id FROM metrics_studentprofile WHERE LENGTH(student_id) = 16;
"""

ids = [line.strip() for line in sys.stdin]

old_ids = AnonymousUserId.objects.raw(
"""
SELECT *
FROM student_anonymoususerid_temp_archive
WHERE anonymous_user_id IN ({})
""".format(','.join(['%s']*len(ids))),
ids
)

for old_id in old_ids:
new_id = anonymous_id_for_user(old_id.user, old_id.course_id)

for table in ('peer_grading_calibrationhistory', 'controller_submission', 'metrics_timing'):
self.stdout.write(
"UPDATE {} "
"SET student_id = '{}' "
"WHERE student_id = '{}';\n".format(
table,
new_id,
old_id.anonymous_user_id,
)
)

self.stdout.write(
"DELETE FROM metrics_studentcourseprofile "
"WHERE student_id = '{}' "
"AND problems_attempted = 0;\n".format(old_id.anonymous_user_id)
)

self.stdout.write(
"DELETE FROM metrics_studentprofile "
"WHERE student_id = '{}' "
"AND messages_sent = 0 "
"AND messages_received = 0 "
"AND average_message_feedback_length = 0 "
"AND student_is_staff_banned = 0 "
"AND student_cannot_submit_more_for_peer_grading = 0;\n".format(old_id.anonymous_user_id)
)
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ def backwards(self, orm):
# Changing field 'AnonymousUserId.anonymous_user_id'
db.alter_column('student_anonymoususerid', 'anonymous_user_id', self.gf('django.db.models.fields.CharField')(max_length=16, unique=True))

db.execute("DROP TABLE student_anonymoususerid_temp_archive")

models = {
'auth.group': {
'Meta': {'object_name': 'Group'},
Expand Down
7 changes: 7 additions & 0 deletions lms/templates/instructor/staff_grading.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ <h1>${_("Staff grading")}</h1>
"to restore their visibility. Rest assured, no student "
"data has been lost.")}
</b>
<br>
<b>
${_("We have recovered the majority of student responses. "
"Those responses submitted while the issue was active are "
"temporarily unavailable, but we are working on restoring "
"them, and they should be visible again shortly.")}
</b>
</div>
<br>
<hr>
Expand Down
7 changes: 7 additions & 0 deletions lms/templates/open_ended_problems/combined_notifications.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@
"to restore their visibility. Rest assured, no student "
"data has been lost.")}
</b>
<br>
<b>
${_("We have recovered the majority of student responses. "
"Those responses submitted while the issue was active are "
"temporarily unavailable, but we are working on restoring "
"them, and they should be visible again shortly.")}
</b>
</div>
<br>
<hr>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,13 @@
"to restore their visibility. Rest assured, no student "
"data has been lost.")}
</b>
<br>
<b>
${_("We have recovered the majority of student responses. "
"Those responses submitted while the issue was active are "
"temporarily unavailable, but we are working on restoring "
"them, and they should be visible again shortly.")}
</b>
</div>
<br>
<hr>
Expand Down
7 changes: 7 additions & 0 deletions lms/templates/open_ended_problems/open_ended_problems.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@
"to restore their visibility. Rest assured, no student "
"data has been lost.")}
</b>
<br>
<b>
${_("We have recovered the majority of student responses. "
"Those responses submitted while the issue was active are "
"temporarily unavailable, but we are working on restoring "
"them, and they should be visible again shortly.")}
</b>
</div>
<br>
<hr>
Expand Down
7 changes: 7 additions & 0 deletions lms/templates/peer_grading/peer_grading.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,13 @@
"to restore their visibility. Rest assured, no student "
"data has been lost.")}
</b>
<br>
<b>
${_("We have recovered the majority of student responses. "
"Those responses submitted while the issue was active are "
"temporarily unavailable, but we are working on restoring "
"them, and they should be visible again shortly.")}
</b>
</div>
<br>
<hr>
Expand Down