57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
import datetime
|
|
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
from lms.djangoapps.courseware.fields import UnsignedBigIntAutoField
|
|
from django.conf import settings
|
|
|
|
def bump_pk_start(apps, schema_editor):
|
|
if not schema_editor.connection.alias == 'student_module_history':
|
|
return
|
|
StudentModuleHistory = apps.get_model("courseware", "StudentModuleHistory")
|
|
biggest_id = StudentModuleHistory.objects.all().order_by('-id').first()
|
|
initial_id = settings.STUDENTMODULEHISTORYEXTENDED_OFFSET
|
|
if biggest_id is not None:
|
|
initial_id += biggest_id.id
|
|
|
|
if schema_editor.connection.vendor == 'mysql':
|
|
schema_editor.execute('ALTER TABLE coursewarehistoryextended_studentmodulehistoryextended AUTO_INCREMENT=%s', [initial_id])
|
|
elif schema_editor.connection.vendor == 'sqlite3':
|
|
# This is a hack to force sqlite to add new rows after the earlier rows we
|
|
# want to migrate.
|
|
StudentModuleHistory(
|
|
id=initial_id,
|
|
course_key=None,
|
|
usage_key=None,
|
|
username="",
|
|
version="",
|
|
created=datetime.datetime.now(),
|
|
).save()
|
|
elif schema_editor.connection.vendor == 'postgresql':
|
|
schema_editor.execute("SELECT setval('coursewarehistoryextended_studentmodulehistoryextended_seq', %s)", [initial_id])
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('courseware', '0001_initial'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='StudentModuleHistoryExtended',
|
|
fields=[
|
|
('version', models.CharField(db_index=True, max_length=255, null=True, blank=True)),
|
|
('created', models.DateTimeField(db_index=True)),
|
|
('state', models.TextField(null=True, blank=True)),
|
|
('grade', models.FloatField(null=True, blank=True)),
|
|
('max_grade', models.FloatField(null=True, blank=True)),
|
|
('id', UnsignedBigIntAutoField(serialize=False, primary_key=True)),
|
|
('student_module', models.ForeignKey(to='courseware.StudentModule', on_delete=django.db.models.deletion.DO_NOTHING, db_constraint=False)),
|
|
],
|
|
options={
|
|
'get_latest_by': 'created',
|
|
},
|
|
),
|
|
migrations.RunPython(bump_pk_start, reverse_code=migrations.RunPython.noop, atomic=False),
|
|
]
|