# 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 ( ActionCompetenceListPage, CompetenceNaviPage, CompetenceCertificateList, CompetenceCertificate, ) 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 = "Kompetenzprofil" 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: competence_certificate_list = CompetenceCertificateList( title="Kompetenznachweise", ) competence_navi_page.add_child(instance=competence_certificate_list) competence_certificate = CompetenceCertificate( title="Kompetenznachweis 1", ) 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() edoniq_test = create_edoniq_test_assignment( course_id=course_page.course.id, title="Edoniq Wissens- und Verständisfragen", 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() class Migration(migrations.Migration): dependencies = [ ("competence", "0004_rename_models"), ("learnpath", "0005_alter_learningcontentedoniqtest_content_assignment"), ] operations = [ migrations.RunPython(refactor_competence_wagtail_tree), ]