feat: bump opaque-keys to get case-sensitivity support + default max_length (#38044)

refactor: remove some 'max_length=255' to be more DRY

feat: example of making an OpaqueKeyField case_sensitive (modulestore_migrator)

test: update test now that we're using case-insensitive collation on SQLite
This commit is contained in:
Braden MacDonald
2026-02-23 15:22:52 -08:00
committed by Braden MacDonald
parent ef783a1bca
commit 3e522d5272
19 changed files with 65 additions and 36 deletions

View File

@@ -943,7 +943,7 @@ class CourseModesArchive(models.Model):
app_label = "course_modes"
# the course that this mode is attached to
course_id = CourseKeyField(max_length=255, db_index=True)
course_id = CourseKeyField(db_index=True)
# the reference to this mode that can be used by Enrollments to generate
# similar behavior for the same slug across courses

View File

@@ -64,7 +64,7 @@ class CourseMessage(models.Model):
.. no_pii:
"""
global_message = models.ForeignKey(GlobalStatusMessage, on_delete=models.CASCADE)
course_key = CourseKeyField(max_length=255, blank=True, db_index=True)
course_key = CourseKeyField(blank=True, db_index=True)
message = models.TextField(blank=True, null=True)
def __str__(self):

View File

@@ -93,7 +93,7 @@ class AnonymousUserId(models.Model):
user = models.ForeignKey(User, db_index=True, on_delete=models.CASCADE)
anonymous_user_id = models.CharField(unique=True, max_length=32)
course_id = LearningContextKeyField(db_index=True, max_length=255, blank=True)
course_id = LearningContextKeyField(db_index=True, blank=True)
def anonymous_id_for_user(user, course_id):
@@ -1058,7 +1058,7 @@ class CourseAccessRole(models.Model):
# blank org is for global group based roles such as course creator (may be deprecated)
org = models.CharField(max_length=64, db_index=True, blank=True)
# blank course_id implies org wide role
course_id = CourseKeyField(max_length=255, db_index=True, blank=True)
course_id = CourseKeyField(db_index=True, blank=True)
role = models.CharField(max_length=64, db_index=True)
class Meta:
@@ -1116,7 +1116,7 @@ class CourseAccessRoleHistory(TimeStampedModel):
user = models.ForeignKey(User, on_delete=models.CASCADE)
org = models.CharField(max_length=64, db_index=True, blank=True)
course_id = CourseKeyField(max_length=255, db_index=True, blank=True)
course_id = CourseKeyField(db_index=True, blank=True)
role = models.CharField(max_length=64, db_index=True)
action_type = models.CharField(max_length=10, choices=ACTION_CHOICES, db_index=True)
changed_by = models.ForeignKey(
@@ -1493,7 +1493,7 @@ class EntranceExamConfiguration(models.Model):
"""
user = models.ForeignKey(User, db_index=True, on_delete=models.CASCADE)
course_id = CourseKeyField(max_length=255, db_index=True)
course_id = CourseKeyField(db_index=True)
created = models.DateTimeField(auto_now_add=True, null=True, db_index=True)
updated = models.DateTimeField(auto_now=True, db_index=True)