From 44cbf3c8f77892dbb1548a52cb91fe06dc7b6102 Mon Sep 17 00:00:00 2001 From: Livio Bieri Date: Tue, 31 Oct 2023 17:41:58 +0100 Subject: [PATCH] chore: create test-supervisor1@example.com and clean up the way users get created a bit --- server/vbv_lernwelt/core/constants.py | 1 + .../vbv_lernwelt/core/create_default_users.py | 90 +++++++++++++------ .../course/creators/test_course.py | 43 +++++---- .../edoniq_test/tests/test_edoniq_export.py | 13 ++- .../tests/test_import_course_sessions.py | 3 +- 5 files changed, 99 insertions(+), 51 deletions(-) diff --git a/server/vbv_lernwelt/core/constants.py b/server/vbv_lernwelt/core/constants.py index 4ec9713b..1b5df014 100644 --- a/server/vbv_lernwelt/core/constants.py +++ b/server/vbv_lernwelt/core/constants.py @@ -18,6 +18,7 @@ DEFAULT_RICH_TEXT_FEATURES_WITH_HEADER = [ # ids for cypress test data ADMIN_USER_ID = "872efd96-3bd7-4a1e-a239-2d72cad9f604" +TEST_SUPERVISOR1_USER_ID = "a9a8b741-f115-4521-af2d-7dfef673b8c5" TEST_TRAINER1_USER_ID = "b9e71f59-c44f-4290-b93a-9b3151e9a2fc" TEST_STUDENT1_USER_ID = "65c73ad0-6d53-43a9-a4a4-64143f27b03a" TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900" diff --git a/server/vbv_lernwelt/core/create_default_users.py b/server/vbv_lernwelt/core/create_default_users.py index a3fe30d7..a71b73ab 100644 --- a/server/vbv_lernwelt/core/create_default_users.py +++ b/server/vbv_lernwelt/core/create_default_users.py @@ -10,6 +10,7 @@ from vbv_lernwelt.core.constants import ( TEST_STUDENT1_USER_ID, TEST_STUDENT2_USER_ID, TEST_STUDENT3_USER_ID, + TEST_SUPERVISOR1_USER_ID, TEST_TRAINER1_USER_ID, ) from vbv_lernwelt.core.models import User @@ -66,15 +67,33 @@ default_users = [ ] -def create_default_users(user_model=User, group_model=Group, default_password=None): - if default_password is None: - default_password = "test" - - admin_group, created = group_model.objects.get_or_create(name="admin_group") - _content_creator_grop, _created = group_model.objects.get_or_create( +def create_default_users(default_password="test"): + admin_group, created = Group.objects.get_or_create(name="admin_group") + _content_creator_grop, _created = Group.objects.get_or_create( name="content_creator_grop" ) - student_group, created = group_model.objects.get_or_create(name="student_group") + student_group, created = Group.objects.get_or_create(name="student_group") + + def _create_user( + _id, + email, + first_name, + last_name, + avatar_url, + language, + password, + ): + user, _ = User.objects.get_or_create( + id=_id, + username=email, + email=email, + language=language, + first_name=first_name, + last_name=last_name, + avatar_url=avatar_url, + password=make_password(password), + ) + return user def _create_student_user( email, @@ -85,43 +104,52 @@ def create_default_users(user_model=User, group_model=Group, default_password=No language="de", id=None, ): - student_user, created = _get_or_create_user( - user_model=user_model, - username=email, - password=password, + student_user = _create_user( + email=email, + first_name=first_name, + last_name=last_name, + avatar_url=avatar_url, language=language, - id=id, + password=password, + _id=id, ) - student_user.first_name = first_name - student_user.last_name = last_name - student_user.avatar_url = avatar_url + student_user.groups.add(student_group) student_user.save() def _create_admin_user( email, first_name, last_name, avatar_url="", id=None, password=default_password ): - admin_user, created = _get_or_create_user( - user_model=user_model, username=email, password=password, id=id + admin_user = _create_user( + email=email, + first_name=first_name, + last_name=last_name, + avatar_url=avatar_url, + password=password, + language="de", + _id=id, ) + + admin_user.groups.add(admin_group) admin_user.is_superuser = True admin_user.is_staff = True - admin_user.first_name = first_name - admin_user.last_name = last_name - admin_user.avatar_url = avatar_url - admin_user.groups.add(admin_group) admin_user.save() def _create_staff_user( email, first_name, last_name, id=None, password=default_password ): - staff_user, created = _get_or_create_user( - user_model=user_model, username=email, password=password, id=id + staff_user = _create_user( + _id=id, + email=email, + first_name=first_name, + last_name=last_name, + avatar_url="", + language="de", + password=password, ) - staff_user.is_staff = True - staff_user.first_name = first_name - staff_user.last_name = last_name + staff_user.groups.add(_get_or_create_vbv_staff_group()) + staff_user.is_staff = True staff_user.save() _create_admin_user( @@ -297,6 +325,15 @@ def create_default_users(user_model=User, group_model=Group, default_password=No first_name="Matthias", last_name="Wirth", ) + _create_user( + _id=TEST_SUPERVISOR1_USER_ID, + email="test-supervisor1@example.com", + first_name="[Supervisor]", + last_name="Regionalleiter", + password=default_password, + language="de", + avatar_url="", + ) def _get_or_create_user(user_model, *args, **kwargs): @@ -311,7 +348,6 @@ def _get_or_create_user(user_model, *args, **kwargs): if not user: user = user_model.objects.create( username=username, - password=make_password(password), email=username, language=language, id=id, diff --git a/server/vbv_lernwelt/course/creators/test_course.py b/server/vbv_lernwelt/course/creators/test_course.py index 040e6c58..a11d3a60 100644 --- a/server/vbv_lernwelt/course/creators/test_course.py +++ b/server/vbv_lernwelt/course/creators/test_course.py @@ -34,6 +34,11 @@ from vbv_lernwelt.competence.models import ActionCompetence from vbv_lernwelt.core.constants import ( TEST_COURSE_SESSION_BERN_ID, TEST_COURSE_SESSION_ZURICH_ID, + TEST_STUDENT1_USER_ID, + TEST_STUDENT2_USER_ID, + TEST_STUDENT3_USER_ID, + TEST_SUPERVISOR1_USER_ID, + TEST_TRAINER1_USER_ID, ) from vbv_lernwelt.core.models import User from vbv_lernwelt.course.consts import COURSE_TEST_ID @@ -51,6 +56,7 @@ from vbv_lernwelt.course_session.models import ( CourseSessionAttendanceCourse, CourseSessionEdoniqTest, ) +from vbv_lernwelt.course_session_group.models import CourseSessionGroup from vbv_lernwelt.feedback.services import update_feedback_response from vbv_lernwelt.learnpath.models import ( Circle, @@ -191,35 +197,34 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False): start_date=now, ) - trainer1 = User.objects.get(email="test-trainer1@example.com") + region1 = CourseSessionGroup.objects.create( + name="Region 1", + course=course, + ) + + region1.course_session.add(cs_bern) + region1.course_session.add(cs_zurich) + region1.supervisor.set([User.objects.get(id=TEST_SUPERVISOR1_USER_ID)]) + csu = CourseSessionUser.objects.create( course_session=cs_bern, - user=trainer1, + user=User.objects.get(id=TEST_TRAINER1_USER_ID), role=CourseSessionUser.Role.EXPERT, ) csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")) - student1 = User.objects.get(email="test-student1@example.com") - _csu = CourseSessionUser.objects.create( - course_session=cs_bern, - user=student1, + CourseSessionUser.objects.create( + course_session=cs_bern, user=User.objects.get(id=TEST_STUDENT1_USER_ID) ) - student2 = User.objects.get(email="test-student2@example.com") - _csu = CourseSessionUser.objects.create( - course_session=cs_bern, - user=student2, - ) - student2 = User.objects.get(email="test-student2@example.com") - _csu = CourseSessionUser.objects.create( - course_session=cs_zurich, - user=student2, - ) + # in both sessions (BE and ZH) + test_student_2 = User.objects.get(id=TEST_STUDENT2_USER_ID) + CourseSessionUser.objects.create(course_session=cs_bern, user=test_student_2) + CourseSessionUser.objects.create(course_session=cs_zurich, user=test_student_2) - student3 = User.objects.get(email="test-student3@example.com") - _csu = CourseSessionUser.objects.create( + CourseSessionUser.objects.create( course_session=cs_bern, - user=student3, + user=User.objects.get(id=TEST_STUDENT3_USER_ID), ) return course diff --git a/server/vbv_lernwelt/edoniq_test/tests/test_edoniq_export.py b/server/vbv_lernwelt/edoniq_test/tests/test_edoniq_export.py index dc93b150..cf4acb20 100644 --- a/server/vbv_lernwelt/edoniq_test/tests/test_edoniq_export.py +++ b/server/vbv_lernwelt/edoniq_test/tests/test_edoniq_export.py @@ -3,6 +3,11 @@ import csv from django.test import TestCase from vbv_lernwelt.core.admin import User +from vbv_lernwelt.core.constants import ( + TEST_STUDENT1_USER_ID, + TEST_STUDENT2_USER_ID, + TEST_TRAINER1_USER_ID, +) from vbv_lernwelt.core.create_default_users import create_default_users from vbv_lernwelt.course.consts import COURSE_TEST_ID from vbv_lernwelt.course.creators.test_course import create_test_course @@ -19,14 +24,14 @@ class EdoniqUserExportTestCase(TestCase): create_default_users() create_test_course(with_sessions=True) - user1 = User.objects.get(email="test-student1@example.com") + user1 = User.objects.get(id=TEST_STUDENT1_USER_ID) user1.additional_json_data = { "Lehrvertragsnummer": "23456", "Geburtsdatum": "01.01.1991", } user1.save() - user2 = User.objects.get(email="test-student2@example.com") + user2 = User.objects.get(id=TEST_STUDENT2_USER_ID) user2.additional_json_data = { "Firmenname": "Test AG", "Lehrvertragsnummer": "12345", @@ -45,7 +50,7 @@ class EdoniqUserExportTestCase(TestCase): self.assertEqual(len(users), 1) def test_remove_eiger_versicherungen(self): - user1 = User.objects.get(email="test-student1@example.com") + user1 = User.objects.get(id=TEST_STUDENT1_USER_ID) user1.email = "some@eiger-versicherungen.ch" user1.save() users = fetch_course_session_users( @@ -58,7 +63,7 @@ class EdoniqUserExportTestCase(TestCase): self.assertEqual(len(users), 4) def test_deduplicates_users(self): - trainer1 = User.objects.get(email="test-trainer1@example.com") + trainer1 = User.objects.get(id=TEST_TRAINER1_USER_ID) cs_zrh = CourseSession.objects.get( title="Test Zürich 2022 a", ) diff --git a/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py b/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py index 9e276392..c887ea4f 100644 --- a/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py +++ b/server/vbv_lernwelt/importer/tests/test_import_course_sessions.py @@ -5,6 +5,7 @@ from django.utils.timezone import make_naive from openpyxl.reader.excel import load_workbook from vbv_lernwelt.assignment.models import AssignmentType +from vbv_lernwelt.core.constants import TEST_TRAINER1_USER_ID from vbv_lernwelt.core.create_default_users import create_default_users from vbv_lernwelt.core.models import User from vbv_lernwelt.course.creators.test_course import create_test_course @@ -127,7 +128,7 @@ class CreateOrUpdateCourseSessionTestCase(TestCase): self.course, data, language="de", circle_keys=["Fahrzeug"] ) - trainer1 = User.objects.get(email="test-trainer1@example.com") + trainer1 = User.objects.get(id=TEST_TRAINER1_USER_ID) csu = CourseSessionUser.objects.create( course_session=cs, user=trainer1,