and clean up the way users get created a bit
This commit is contained in:
Livio Bieri 2023-10-31 17:41:58 +01:00
parent 41b8e07693
commit 44cbf3c8f7
5 changed files with 99 additions and 51 deletions

View File

@ -18,6 +18,7 @@ DEFAULT_RICH_TEXT_FEATURES_WITH_HEADER = [
# ids for cypress test data # ids for cypress test data
ADMIN_USER_ID = "872efd96-3bd7-4a1e-a239-2d72cad9f604" 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_TRAINER1_USER_ID = "b9e71f59-c44f-4290-b93a-9b3151e9a2fc"
TEST_STUDENT1_USER_ID = "65c73ad0-6d53-43a9-a4a4-64143f27b03a" TEST_STUDENT1_USER_ID = "65c73ad0-6d53-43a9-a4a4-64143f27b03a"
TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900" TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900"

View File

@ -10,6 +10,7 @@ from vbv_lernwelt.core.constants import (
TEST_STUDENT1_USER_ID, TEST_STUDENT1_USER_ID,
TEST_STUDENT2_USER_ID, TEST_STUDENT2_USER_ID,
TEST_STUDENT3_USER_ID, TEST_STUDENT3_USER_ID,
TEST_SUPERVISOR1_USER_ID,
TEST_TRAINER1_USER_ID, TEST_TRAINER1_USER_ID,
) )
from vbv_lernwelt.core.models import User 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): def create_default_users(default_password="test"):
if default_password is None: admin_group, created = Group.objects.get_or_create(name="admin_group")
default_password = "test" _content_creator_grop, _created = Group.objects.get_or_create(
admin_group, created = group_model.objects.get_or_create(name="admin_group")
_content_creator_grop, _created = group_model.objects.get_or_create(
name="content_creator_grop" 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( def _create_student_user(
email, email,
@ -85,43 +104,52 @@ def create_default_users(user_model=User, group_model=Group, default_password=No
language="de", language="de",
id=None, id=None,
): ):
student_user, created = _get_or_create_user( student_user = _create_user(
user_model=user_model, email=email,
username=email, first_name=first_name,
password=password, last_name=last_name,
avatar_url=avatar_url,
language=language, 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.groups.add(student_group)
student_user.save() student_user.save()
def _create_admin_user( def _create_admin_user(
email, first_name, last_name, avatar_url="", id=None, password=default_password email, first_name, last_name, avatar_url="", id=None, password=default_password
): ):
admin_user, created = _get_or_create_user( admin_user = _create_user(
user_model=user_model, username=email, password=password, id=id 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_superuser = True
admin_user.is_staff = 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() admin_user.save()
def _create_staff_user( def _create_staff_user(
email, first_name, last_name, id=None, password=default_password email, first_name, last_name, id=None, password=default_password
): ):
staff_user, created = _get_or_create_user( staff_user = _create_user(
user_model=user_model, username=email, password=password, id=id _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.groups.add(_get_or_create_vbv_staff_group())
staff_user.is_staff = True
staff_user.save() staff_user.save()
_create_admin_user( _create_admin_user(
@ -297,6 +325,15 @@ def create_default_users(user_model=User, group_model=Group, default_password=No
first_name="Matthias", first_name="Matthias",
last_name="Wirth", 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): 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: if not user:
user = user_model.objects.create( user = user_model.objects.create(
username=username, username=username,
password=make_password(password),
email=username, email=username,
language=language, language=language,
id=id, id=id,

View File

@ -34,6 +34,11 @@ from vbv_lernwelt.competence.models import ActionCompetence
from vbv_lernwelt.core.constants import ( from vbv_lernwelt.core.constants import (
TEST_COURSE_SESSION_BERN_ID, TEST_COURSE_SESSION_BERN_ID,
TEST_COURSE_SESSION_ZURICH_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.core.models import User
from vbv_lernwelt.course.consts import COURSE_TEST_ID from vbv_lernwelt.course.consts import COURSE_TEST_ID
@ -51,6 +56,7 @@ from vbv_lernwelt.course_session.models import (
CourseSessionAttendanceCourse, CourseSessionAttendanceCourse,
CourseSessionEdoniqTest, CourseSessionEdoniqTest,
) )
from vbv_lernwelt.course_session_group.models import CourseSessionGroup
from vbv_lernwelt.feedback.services import update_feedback_response from vbv_lernwelt.feedback.services import update_feedback_response
from vbv_lernwelt.learnpath.models import ( from vbv_lernwelt.learnpath.models import (
Circle, Circle,
@ -191,35 +197,34 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
start_date=now, 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( csu = CourseSessionUser.objects.create(
course_session=cs_bern, course_session=cs_bern,
user=trainer1, user=User.objects.get(id=TEST_TRAINER1_USER_ID),
role=CourseSessionUser.Role.EXPERT, role=CourseSessionUser.Role.EXPERT,
) )
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")) csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug"))
student1 = User.objects.get(email="test-student1@example.com") CourseSessionUser.objects.create(
_csu = CourseSessionUser.objects.create( course_session=cs_bern, user=User.objects.get(id=TEST_STUDENT1_USER_ID)
course_session=cs_bern,
user=student1,
) )
student2 = User.objects.get(email="test-student2@example.com") # in both sessions (BE and ZH)
_csu = CourseSessionUser.objects.create( test_student_2 = User.objects.get(id=TEST_STUDENT2_USER_ID)
course_session=cs_bern, CourseSessionUser.objects.create(course_session=cs_bern, user=test_student_2)
user=student2, CourseSessionUser.objects.create(course_session=cs_zurich, user=test_student_2)
)
student2 = User.objects.get(email="test-student2@example.com")
_csu = CourseSessionUser.objects.create(
course_session=cs_zurich,
user=student2,
)
student3 = User.objects.get(email="test-student3@example.com") CourseSessionUser.objects.create(
_csu = CourseSessionUser.objects.create(
course_session=cs_bern, course_session=cs_bern,
user=student3, user=User.objects.get(id=TEST_STUDENT3_USER_ID),
) )
return course return course

View File

@ -3,6 +3,11 @@ import csv
from django.test import TestCase from django.test import TestCase
from vbv_lernwelt.core.admin import User 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.core.create_default_users import create_default_users
from vbv_lernwelt.course.consts import COURSE_TEST_ID from vbv_lernwelt.course.consts import COURSE_TEST_ID
from vbv_lernwelt.course.creators.test_course import create_test_course from vbv_lernwelt.course.creators.test_course import create_test_course
@ -19,14 +24,14 @@ class EdoniqUserExportTestCase(TestCase):
create_default_users() create_default_users()
create_test_course(with_sessions=True) 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 = { user1.additional_json_data = {
"Lehrvertragsnummer": "23456", "Lehrvertragsnummer": "23456",
"Geburtsdatum": "01.01.1991", "Geburtsdatum": "01.01.1991",
} }
user1.save() user1.save()
user2 = User.objects.get(email="test-student2@example.com") user2 = User.objects.get(id=TEST_STUDENT2_USER_ID)
user2.additional_json_data = { user2.additional_json_data = {
"Firmenname": "Test AG", "Firmenname": "Test AG",
"Lehrvertragsnummer": "12345", "Lehrvertragsnummer": "12345",
@ -45,7 +50,7 @@ class EdoniqUserExportTestCase(TestCase):
self.assertEqual(len(users), 1) self.assertEqual(len(users), 1)
def test_remove_eiger_versicherungen(self): 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.email = "some@eiger-versicherungen.ch"
user1.save() user1.save()
users = fetch_course_session_users( users = fetch_course_session_users(
@ -58,7 +63,7 @@ class EdoniqUserExportTestCase(TestCase):
self.assertEqual(len(users), 4) self.assertEqual(len(users), 4)
def test_deduplicates_users(self): 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( cs_zrh = CourseSession.objects.get(
title="Test Zürich 2022 a", title="Test Zürich 2022 a",
) )

View File

@ -5,6 +5,7 @@ from django.utils.timezone import make_naive
from openpyxl.reader.excel import load_workbook from openpyxl.reader.excel import load_workbook
from vbv_lernwelt.assignment.models import AssignmentType 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.create_default_users import create_default_users
from vbv_lernwelt.core.models import User from vbv_lernwelt.core.models import User
from vbv_lernwelt.course.creators.test_course import create_test_course 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"] 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( csu = CourseSessionUser.objects.create(
course_session=cs, course_session=cs,
user=trainer1, user=trainer1,