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
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"

View File

@ -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,

View File

@ -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

View File

@ -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",
)

View File

@ -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,