feat: migration for url_expert

This commit is contained in:
Livio Bieri 2023-10-03 17:03:20 +02:00
parent 79d4246b88
commit ac06dff5c3
2 changed files with 71 additions and 12 deletions

View File

@ -63,11 +63,8 @@ class CourseSessionAttendanceCourse(models.Model):
)
if not self.due_date.manual_override_fields:
course = self.learning_content.get_course()
self.due_date.url = self.learning_content.get_frontend_url()
# TODO: @livioso move this to the learning content?
self.due_date.url_expert = f"/course/{course.slug}/cockpit/attendance?id={self.learning_content_id}"
self.due_date.url_expert = f"/course/{self.due_date.course_session.course.slug}/cockpit/attendance?id={self.learning_content_id}"
self.due_date.title = self.learning_content.title
self.due_date.page = self.learning_content.page_ptr
self.due_date.assignment_type_translation_key = (
@ -134,11 +131,7 @@ class CourseSessionAssignment(models.Model):
AssignmentType.REFLECTION.value: "learningContentTypes.reflection",
}
# TODO @livioso move this to the learning content?
course = self.learning_content.get_course()
url_expert = (
f"/course/{course.slug}/cockpit/assignment/{self.learning_content_id}"
)
url_expert = f"/course/{self.course_session.course.slug}/cockpit/assignment/{self.learning_content_id}"
if assignment_type in (
AssignmentType.CASEWORK.value,
@ -151,7 +144,6 @@ class CourseSessionAssignment(models.Model):
if not self.submission_deadline.manual_override_fields:
self.submission_deadline.url = url
# TODO: @livioso check what's expected here
self.submission_deadline.url_expert = url_expert
self.submission_deadline.title = title
self.submission_deadline.assignment_type_translation_key = (
@ -172,7 +164,7 @@ class CourseSessionAssignment(models.Model):
if not self.evaluation_deadline.manual_override_fields:
self.evaluation_deadline.url = url
self.submission_deadline.url_expert = url_expert
self.evaluation_deadline.url_expert = url_expert
self.evaluation_deadline.title = title
self.evaluation_deadline.assignment_type_translation_key = (
assignment_type_translation_keys[assignment_type]
@ -221,7 +213,9 @@ class CourseSessionEdoniqTest(models.Model):
if not self.deadline.manual_override_fields:
self.deadline.url = self.learning_content.get_frontend_url()
self.deadline.expert_url = self.learning_content.get_frontend_url()
self.deadline.url_expert = (
f"/course/{self.course_session.course.slug}/cockpit/"
)
self.deadline.title = self.learning_content.title
self.deadline.page = self.learning_content.page_ptr
self.deadline.assignment_type_translation_key = (

View File

@ -3,6 +3,70 @@
from django.db import migrations, models
def set_url_expert_course_session_assignments(apps):
Course = apps.get_model("course", "Course") # noqa
CourseSessionAssignment = apps.get_model( # noqa
"course_session", "CourseSessionAssignment"
)
for assignment in CourseSessionAssignment.objects.all():
for due_date in [
assignment.submission_deadline,
assignment.evaluation_deadline,
]:
if due_date and due_date.page:
course_slug = due_date.course_session.course.slug
content_id = due_date.page.id
due_date.url_expert = (
f"/course/{course_slug}/cockpit/assignment/{content_id}"
)
due_date.save()
def set_url_expert_course_session_edoniq_test(apps):
CourseSessionEdoniqTest = apps.get_model( # noqa
"course_session", "CourseSessionEdoniqTest"
)
for edoniq_test in CourseSessionEdoniqTest.objects.all():
due_date = edoniq_test.deadline
if due_date:
course_slug = due_date.course_session.course.slug
due_date.url_expert = f"/course/{course_slug}/cockpit/"
due_date.save()
def set_url_expert_course_session_attendances(apps):
Course = apps.get_model("course", "Course") # noqa
CourseSessionAttendanceCourse = apps.get_model( # noqa
"course_session", "CourseSessionAttendanceCourse"
)
for attendance in CourseSessionAttendanceCourse.objects.all():
due_date = attendance.due_date
if due_date and due_date.page:
course_slug = due_date.course_session.course.slug
content_id = due_date.page.id
due_date.url_expert = (
f"/course/{course_slug}/cockpit/attendance?id={content_id}"
)
due_date.save()
def set_url_expert_default(apps, schema_editor):
set_url_expert_course_session_assignments(apps)
set_url_expert_course_session_attendances(apps)
set_url_expert_course_session_edoniq_test(apps)
def reverse_func(apps, schema_editor):
# so we can reverse this migration, but noop
pass
class Migration(migrations.Migration):
dependencies = [
("duedate", "0004_alter_duedate_start"),
@ -29,4 +93,5 @@ class Migration(migrations.Migration):
max_length=1024,
),
),
migrations.RunPython(set_url_expert_default, reverse_func),
]