131 lines
4.9 KiB
Python
131 lines
4.9 KiB
Python
# Generated by Django 3.2.20 on 2023-09-11 14:39
|
|
|
|
from django.db import migrations
|
|
from django.db.models import Q
|
|
|
|
from vbv_lernwelt.assignment.models import Assignment
|
|
from vbv_lernwelt.competence.models import (
|
|
ActionCompetence,
|
|
ActionCompetenceListPage,
|
|
CompetenceCertificate,
|
|
CompetenceCertificateList,
|
|
CompetenceNaviPage,
|
|
)
|
|
from vbv_lernwelt.course.consts import (
|
|
COURSE_TEST_ID,
|
|
COURSE_UK,
|
|
COURSE_UK_FR,
|
|
COURSE_UK_IT,
|
|
)
|
|
from vbv_lernwelt.course.creators.test_course import create_edoniq_test_assignment
|
|
from vbv_lernwelt.course.models import CoursePage
|
|
from vbv_lernwelt.learnpath.models import Circle, LearningContentEdoniqTest
|
|
|
|
|
|
def refactor_competence_wagtail_tree(apps=None, schema_editor=None):
|
|
# create `CompetenceNaviPage` for every course where there is none
|
|
for course_page in CoursePage.objects.all():
|
|
competence_navi_page = (
|
|
course_page.get_descendants().exact_type(CompetenceNaviPage).first()
|
|
)
|
|
if not competence_navi_page:
|
|
competence_navi_page = CompetenceNaviPage(
|
|
title="KompetenzNavi",
|
|
)
|
|
course_page.add_child(instance=competence_navi_page)
|
|
|
|
acl = course_page.get_descendants().exact_type(ActionCompetenceListPage).first()
|
|
acl.title = "Handlungskompetenzen"
|
|
acl.save()
|
|
acl.specific.save_revision().publish()
|
|
|
|
acl = course_page.get_descendants().exact_type(ActionCompetenceListPage).first()
|
|
acl.move(competence_navi_page, pos="last-child")
|
|
|
|
# create `CompetenceCertificateList`
|
|
competence_certificate_list = (
|
|
competence_navi_page.get_descendants()
|
|
.exact_type(CompetenceCertificateList)
|
|
.first()
|
|
)
|
|
|
|
if course_page.course.id in [
|
|
COURSE_TEST_ID,
|
|
COURSE_UK,
|
|
COURSE_UK_FR,
|
|
COURSE_UK_IT,
|
|
]:
|
|
if not competence_certificate_list:
|
|
title = "Kompetenznachweise"
|
|
if course_page.course.id == COURSE_UK_FR:
|
|
title = "Contrôles de compétences"
|
|
if course_page.course.id == COURSE_UK_IT:
|
|
title = "Controlli delle competenze"
|
|
|
|
competence_certificate_list = CompetenceCertificateList(title=title)
|
|
competence_navi_page.add_child(instance=competence_certificate_list)
|
|
|
|
title = "Kompetenznachweis 1"
|
|
if course_page.course.id == COURSE_UK_FR:
|
|
title = "Contrôle de compétences 1"
|
|
if course_page.course.id == COURSE_UK_IT:
|
|
title = "Controllo delle competenze 1"
|
|
competence_certificate = CompetenceCertificate(
|
|
title=title,
|
|
)
|
|
competence_certificate_list.add_child(instance=competence_certificate)
|
|
|
|
for casework_assignment in Assignment.objects.filter(
|
|
assignment_type="CASEWORK"
|
|
).descendant_of(course_page):
|
|
casework_assignment.competence_certificate = competence_certificate
|
|
casework_assignment.save()
|
|
|
|
title = "Wissens- und Verständnisfragen"
|
|
if course_page.course.id == COURSE_UK_FR:
|
|
title = "Questions de connaissance et de compréhension "
|
|
if course_page.course.id == COURSE_UK_IT:
|
|
title = "Domande di conoscenza e di comprensione"
|
|
|
|
edoniq_test = create_edoniq_test_assignment(
|
|
course_id=course_page.course.id,
|
|
title=title,
|
|
competence_certificate=competence_certificate,
|
|
)
|
|
|
|
circle_basis = (
|
|
Circle.objects.descendant_of(course_page)
|
|
.filter(Q(title="Basis") | Q(title="Base"))
|
|
.first()
|
|
)
|
|
|
|
if circle_basis:
|
|
for (
|
|
learning_content_edoniq
|
|
) in LearningContentEdoniqTest.objects.all().descendant_of(
|
|
circle_basis
|
|
):
|
|
learning_content_edoniq.content_assignment = edoniq_test
|
|
learning_content_edoniq.save()
|
|
|
|
for ac in ActionCompetenceListPage.objects.all():
|
|
# trigger slug update by saving
|
|
ac.save()
|
|
|
|
for competence in ActionCompetence.objects.all():
|
|
if competence.competence_id.endswith(":"):
|
|
# remove trailing colon
|
|
competence.competence_id = competence.competence_id[:-1]
|
|
competence.save()
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
("competence", "0004_rename_models"),
|
|
("learnpath", "0005_alter_learningcontentedoniqtest_content_assignment"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunPython(refactor_competence_wagtail_tree),
|
|
]
|