diff --git a/server/vbv_lernwelt/core/create_default_users.py b/server/vbv_lernwelt/core/create_default_users.py index 45215a00..0366bcf7 100644 --- a/server/vbv_lernwelt/core/create_default_users.py +++ b/server/vbv_lernwelt/core/create_default_users.py @@ -1,5 +1,5 @@ from django.contrib.auth.hashers import make_password -from django.contrib.auth.models import Group +from django.contrib.auth.models import Group, Permission from environs import Env env = Env() @@ -13,6 +13,8 @@ from vbv_lernwelt.core.constants import ( ) from vbv_lernwelt.core.models import User +VBV_STAFF_GROUP = "VBV Staff" + default_users = [ { "email": "student", @@ -109,6 +111,18 @@ def create_default_users(user_model=User, group_model=Group, default_password=No 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.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.save() + _create_admin_user( email="info@iterativ.ch", first_name="Info", @@ -270,6 +284,11 @@ def create_default_users(user_model=User, group_model=Group, default_password=No last_name="Student2", avatar_url="/static/avatars/uk1.lina.egger.jpg", ) + _create_staff_user( + email="matthias.wirth@vbv-afa.ch", + first_name="Matthias", + last_name="Wirth", + ) def _get_or_create_user(user_model, *args, **kwargs): @@ -291,3 +310,35 @@ def _get_or_create_user(user_model, *args, **kwargs): ) created = True return user, created + + +def _get_or_create_vbv_staff_group(): + group, created = Group.objects.get_or_create(name=VBV_STAFF_GROUP) + if not created: + return group + + permission_codenames = [ + "add_user", + "change_user", + "delete_user", + "view_user", + "add_coursesession", + "change_coursesession", + "delete_coursesession", + "view_coursesession", + "add_coursesessionuser", + "change_coursesessionuser", + "delete_coursesessionuser", + "view_coursesessionuser", + ] + + for codename in permission_codenames: + try: + permission = Permission.objects.get(codename=codename) + except Permission.DoesNotExist: + print(f"Permission with codename '{codename}' does not exist.") + continue + + group.permissions.add(permission) + + return group diff --git a/server/vbv_lernwelt/importer/tests/Schulungen_Teilnehmende.xlsx b/server/vbv_lernwelt/importer/tests/Schulungen_Teilnehmende.xlsx index f96d533b..8c27b85a 100644 Binary files a/server/vbv_lernwelt/importer/tests/Schulungen_Teilnehmende.xlsx and b/server/vbv_lernwelt/importer/tests/Schulungen_Teilnehmende.xlsx differ diff --git a/server/vbv_lernwelt/importer/tests/test_import_students.py b/server/vbv_lernwelt/importer/tests/test_import_students.py index 98de80b2..a3ad9f5e 100644 --- a/server/vbv_lernwelt/importer/tests/test_import_students.py +++ b/server/vbv_lernwelt/importer/tests/test_import_students.py @@ -31,7 +31,7 @@ class ImportStudentsTestCase(TestCase): print(row) create_or_update_student(dict(row)) - self.assertEqual(CourseSessionUser.objects.count(), 14) + self.assertEqual(CourseSessionUser.objects.count(), 15) class CreateOrUpdateStudentTestCase(TestCase):