diff --git a/server/vbv_lernwelt/core/management/commands/reset_test_courses.py b/server/vbv_lernwelt/core/management/commands/reset_test_courses.py index 5075808f..73be4444 100644 --- a/server/vbv_lernwelt/core/management/commands/reset_test_courses.py +++ b/server/vbv_lernwelt/core/management/commands/reset_test_courses.py @@ -4,16 +4,23 @@ import djclick as click import structlog from django.utils import timezone -from vbv_lernwelt.assignment.models import AssignmentCompletion +from vbv_lernwelt.assignment.models import Assignment, AssignmentCompletion from vbv_lernwelt.core.admin import User -from vbv_lernwelt.course.consts import COURSE_UK +from vbv_lernwelt.course.consts import ( + COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID, + COURSE_VERSICHERUNGSVERMITTLERIN_ID, + COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID, +) from vbv_lernwelt.course.models import ( Course, CourseCompletion, CourseSession, CourseSessionUser, ) -from vbv_lernwelt.course_session.models import CourseSessionAttendanceCourse +from vbv_lernwelt.course_session.models import ( + CourseSessionAssignment, + CourseSessionAttendanceCourse, +) from vbv_lernwelt.course_session_group.models import CourseSessionGroup from vbv_lernwelt.feedback.models import FeedbackResponse from vbv_lernwelt.learning_mentor.models import LearningMentor @@ -23,15 +30,11 @@ from vbv_lernwelt.notify.models import Notification logger = structlog.get_logger(__name__) from vbv_lernwelt.importer.services import ( create_or_update_course_session, + get_uk_course, LP_DATA, TRANSLATIONS, ) -# create durchführung -# create users -# create / reset data coursesession-data -# reset connections - IT_VV_TEST_COURSE = "Iterativ VV Testkurs" IT_UK_TEST_COURSE = "Iterativ üK Testkurs" IT_UK_TEST_REGION = "Iterativ Region" @@ -44,10 +47,11 @@ logger = structlog.get_logger(__name__) @click.command() def command(): create_or_update_uk() + create_or_update_vv() def create_or_update_uk(language="de"): - uk_course = Course.objects.get(id=COURSE_UK) + uk_course = get_uk_course(language) uk_circle_keys = [ "Kickoff", "Basis", @@ -73,7 +77,21 @@ def create_or_update_uk(language="de"): add_mentor_to_course_session(cs, [(mentor, member_with_mentor)]) create_and_add_to_cs_group(cs.course, IT_UK_TEST_REGION, [cs], regionenleiter) - # create group for regionenleiter + +def create_or_update_vv(language="de"): + vv_course = get_vv_course(language) + + cs, _created = CourseSession.objects.get_or_create( + course=vv_course, import_id=IT_VV_TEST_COURSE + ) + cs.title = IT_VV_TEST_COURSE + cs.save() + create_or_update_assignment_course_session(cs) + members, member_with_mentor, mentor = reset_vv_users() + delete_cs_data(cs, members + [member_with_mentor, mentor]) + + add_to_course_session(cs, members + [member_with_mentor]) + add_mentor_to_course_session(cs, [(mentor, member_with_mentor)]) def delete_cs_data(cs: CourseSession, users: list[User]): @@ -145,7 +163,6 @@ def add_trainers_to_course_session( def reset_uk_users(): - # todo create more users members = [ _create_or_update_user( f"teilnehmer{n}.uk@iterativ.ch", "Teilnehmer üK", "Iterativ", PASSWORD, "de" @@ -179,6 +196,30 @@ def reset_uk_users(): return members, member_with_mentor, trainer, regionenleiter, mentor +def reset_vv_users(): + members = [ + _create_or_update_user( + f"teilnehmer{n}.vv@iterativ.ch", "Teilnehmer VV", "Iterativ", PASSWORD, "de" + ) + for n in range(1, 10) + ] + member_with_mentor = _create_or_update_user( + "teilnehmer1.vv.lb@iterativ.ch", + "Teilnehmer VV mit LB", + "Iterativ", + PASSWORD, + "de", + ) + mentor = _create_or_update_user( + "lernbegleitung1.vv@iterativ.ch", + "Lernbegleitung VV", + "Iterativ", + PASSWORD, + "de", + ) + return members, member_with_mentor, mentor + + def _create_or_update_user(email, first_name, last_name, password, language): try: user = User.objects.get(email=email) @@ -200,8 +241,8 @@ def _create_or_update_user(email, first_name, last_name, password, language): def create_uk_data(language): return { - "Klasse": "Iterativ Test üK", - "ID": "Iterativ Test üK", + "Klasse": IT_UK_TEST_COURSE, + "ID": IT_UK_TEST_COURSE, "Generation": 2024, "Region": "Bern", "Sprache": language, @@ -265,3 +306,30 @@ def create_and_add_to_cs_group( region.course_session.add(cs) region.supervisor.add(supervisor) + + +def get_vv_course(language: str) -> Course: + if language == "fr": + course_id = COURSE_VERSICHERUNGSVERMITTLERIN_FR_ID + elif language == "it": + course_id = COURSE_VERSICHERUNGSVERMITTLERIN_IT_ID + else: + course_id = COURSE_VERSICHERUNGSVERMITTLERIN_ID + + return Course.objects.get(id=course_id) + + +def create_or_update_assignment_course_session(cs: CourseSession): + # not nice but works for now + for assignment in Assignment.objects.all(): + if assignment.get_course().id == cs.course.id: + logger.debug( + "create_course_session_assigments", + assignment=assignment, + label="reset_test_courses", + ) + for lca in assignment.learningcontentassignment_set.all(): + _csa, _created = CourseSessionAssignment.objects.get_or_create( + course_session=cs, + learning_content=lca, + )