diff --git a/client/src/stores/courseSessions.ts b/client/src/stores/courseSessions.ts index 19019699..138a7b95 100644 --- a/client/src/stores/courseSessions.ts +++ b/client/src/stores/courseSessions.ts @@ -44,6 +44,7 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => { dueDate.start = dayjs(dueDate.start); dueDate.end = dayjs(dueDate.end); }); + sortDueDates(cs.due_dates); }) ); @@ -202,7 +203,12 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => { allDueDatesReturn.push(...cs.due_dates); }); - allDueDatesReturn.sort((a, b) => { + sortDueDates(allDueDatesReturn); + return allDueDatesReturn; + } + + function sortDueDates(dueDates: DueDate[]) { + dueDates.sort((a, b) => { const dateA = dayjs(a.end); const dateB = dayjs(b.end); @@ -212,8 +218,6 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => { return dateA.diff(dateB); // Otherwise, sort by the end date }); - - return allDueDatesReturn; } async function startUpload() { diff --git a/server/vbv_lernwelt/assignment/migrations/0001_initial.py b/server/vbv_lernwelt/assignment/migrations/0001_initial.py index 426909d4..26a2ed66 100644 --- a/server/vbv_lernwelt/assignment/migrations/0001_initial.py +++ b/server/vbv_lernwelt/assignment/migrations/0001_initial.py @@ -9,7 +9,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/assignment/migrations/0002_assignmentcompletionauditlog_assignment_user.py b/server/vbv_lernwelt/assignment/migrations/0002_assignmentcompletionauditlog_assignment_user.py index 261ddcf8..d8e227ab 100644 --- a/server/vbv_lernwelt/assignment/migrations/0002_assignmentcompletionauditlog_assignment_user.py +++ b/server/vbv_lernwelt/assignment/migrations/0002_assignmentcompletionauditlog_assignment_user.py @@ -6,7 +6,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/assignment/migrations/0003_initial.py b/server/vbv_lernwelt/assignment/migrations/0003_initial.py index 553a518a..19877e6c 100644 --- a/server/vbv_lernwelt/assignment/migrations/0003_initial.py +++ b/server/vbv_lernwelt/assignment/migrations/0003_initial.py @@ -6,7 +6,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/assignment/migrations/0004_alter_assignmentcompletion_additional_json_data.py b/server/vbv_lernwelt/assignment/migrations/0004_alter_assignmentcompletion_additional_json_data.py index ac2436f6..d81074b9 100644 --- a/server/vbv_lernwelt/assignment/migrations/0004_alter_assignmentcompletion_additional_json_data.py +++ b/server/vbv_lernwelt/assignment/migrations/0004_alter_assignmentcompletion_additional_json_data.py @@ -4,7 +4,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ("assignment", "0003_initial"), ] diff --git a/server/vbv_lernwelt/assignment/migrations/0005_alter_assignment_assignment_type.py b/server/vbv_lernwelt/assignment/migrations/0005_alter_assignment_assignment_type.py index 45cd2e6a..c9bd2a08 100644 --- a/server/vbv_lernwelt/assignment/migrations/0005_alter_assignment_assignment_type.py +++ b/server/vbv_lernwelt/assignment/migrations/0005_alter_assignment_assignment_type.py @@ -4,7 +4,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ("assignment", "0004_alter_assignmentcompletion_additional_json_data"), ] diff --git a/server/vbv_lernwelt/competence/migrations/0001_initial.py b/server/vbv_lernwelt/competence/migrations/0001_initial.py index a857392c..120e8741 100644 --- a/server/vbv_lernwelt/competence/migrations/0001_initial.py +++ b/server/vbv_lernwelt/competence/migrations/0001_initial.py @@ -7,7 +7,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/competence/migrations/0002_performancecriteria_learning_unit.py b/server/vbv_lernwelt/competence/migrations/0002_performancecriteria_learning_unit.py index 890ac6c1..125f8adc 100644 --- a/server/vbv_lernwelt/competence/migrations/0002_performancecriteria_learning_unit.py +++ b/server/vbv_lernwelt/competence/migrations/0002_performancecriteria_learning_unit.py @@ -5,7 +5,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/contrib/sites/migrations/0001_initial.py b/server/vbv_lernwelt/contrib/sites/migrations/0001_initial.py index 297ae556..7cfa9b89 100644 --- a/server/vbv_lernwelt/contrib/sites/migrations/0001_initial.py +++ b/server/vbv_lernwelt/contrib/sites/migrations/0001_initial.py @@ -5,7 +5,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [] diff --git a/server/vbv_lernwelt/core/migrations/0001_initial.py b/server/vbv_lernwelt/core/migrations/0001_initial.py index e196649b..81165d64 100644 --- a/server/vbv_lernwelt/core/migrations/0001_initial.py +++ b/server/vbv_lernwelt/core/migrations/0001_initial.py @@ -9,7 +9,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/course/migrations/0001_initial.py b/server/vbv_lernwelt/course/migrations/0001_initial.py index 730fc62f..dc339bd0 100644 --- a/server/vbv_lernwelt/course/migrations/0001_initial.py +++ b/server/vbv_lernwelt/course/migrations/0001_initial.py @@ -9,7 +9,6 @@ import vbv_lernwelt.course.models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/course/migrations/0002_initial.py b/server/vbv_lernwelt/course/migrations/0002_initial.py index 25a52a56..2bd9fdb4 100644 --- a/server/vbv_lernwelt/course/migrations/0002_initial.py +++ b/server/vbv_lernwelt/course/migrations/0002_initial.py @@ -6,7 +6,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/course/migrations/0003_alter_coursecompletion_additional_json_data.py b/server/vbv_lernwelt/course/migrations/0003_alter_coursecompletion_additional_json_data.py index d90a3f15..6fc15629 100644 --- a/server/vbv_lernwelt/course/migrations/0003_alter_coursecompletion_additional_json_data.py +++ b/server/vbv_lernwelt/course/migrations/0003_alter_coursecompletion_additional_json_data.py @@ -4,7 +4,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ("course", "0002_initial"), ] diff --git a/server/vbv_lernwelt/course_session/migrations/0001_initial.py b/server/vbv_lernwelt/course_session/migrations/0001_initial.py index a669d2d2..dc9cca8d 100644 --- a/server/vbv_lernwelt/course_session/migrations/0001_initial.py +++ b/server/vbv_lernwelt/course_session/migrations/0001_initial.py @@ -6,7 +6,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/course_session/migrations/0002_coursesessionattendancecourse_due_date.py b/server/vbv_lernwelt/course_session/migrations/0002_coursesessionattendancecourse_due_date.py index dfc7cb7d..f4166c6b 100644 --- a/server/vbv_lernwelt/course_session/migrations/0002_coursesessionattendancecourse_due_date.py +++ b/server/vbv_lernwelt/course_session/migrations/0002_coursesessionattendancecourse_due_date.py @@ -5,7 +5,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/course_session/migrations/0003_initial.py b/server/vbv_lernwelt/course_session/migrations/0003_initial.py index 73c4e1ef..68fcb7bf 100644 --- a/server/vbv_lernwelt/course_session/migrations/0003_initial.py +++ b/server/vbv_lernwelt/course_session/migrations/0003_initial.py @@ -5,7 +5,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/duedate/migrations/0001_initial.py b/server/vbv_lernwelt/duedate/migrations/0001_initial.py index 0d84b5f4..c59e833f 100644 --- a/server/vbv_lernwelt/duedate/migrations/0001_initial.py +++ b/server/vbv_lernwelt/duedate/migrations/0001_initial.py @@ -5,7 +5,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ 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 893ca698..e3ad08ff 100644 --- a/server/vbv_lernwelt/edoniq_test/tests/test_edoniq_export.py +++ b/server/vbv_lernwelt/edoniq_test/tests/test_edoniq_export.py @@ -35,12 +35,12 @@ class EdoniqUserExportTestCase(TestCase): user2.save() def test_fetch_course_session_users(self): - users = fetch_course_session_users([COURSE_TEST_ID]) + users = fetch_course_session_users([COURSE_TEST_ID], excluded_domains=[]) self.assertEqual(len(users), 2) def test_fetch_course_session_trainers(self): users = fetch_course_session_users( - [COURSE_TEST_ID], role=CourseSessionUser.Role.EXPERT + [COURSE_TEST_ID], role=CourseSessionUser.Role.EXPERT, excluded_domains=[] ) self.assertEqual(len(users), 1) @@ -48,11 +48,13 @@ class EdoniqUserExportTestCase(TestCase): user1 = User.objects.get(email="test-student1@example.com") user1.email = "some@eiger-versicherungen.ch" user1.save() - users = fetch_course_session_users([COURSE_TEST_ID]) + users = fetch_course_session_users( + [COURSE_TEST_ID], excluded_domains=["eiger-versicherungen.ch"] + ) self.assertEqual(len(users), 1) def test_export_students_and_trainers(self): - users = fetch_course_session_all_users([COURSE_TEST_ID]) + users = fetch_course_session_all_users([COURSE_TEST_ID], excluded_domains=[]) self.assertEqual(len(users), 3) def test_deduplicates_users(self): @@ -64,13 +66,11 @@ class EdoniqUserExportTestCase(TestCase): course_session=cs_zrh, user=trainer1, ) - users = fetch_course_session_all_users([COURSE_TEST_ID]) - for u in users: - print(u.edoniq_role, u.email) + users = fetch_course_session_all_users([COURSE_TEST_ID], excluded_domains=[]) self.assertEqual(len(users), 3) def test_response_csv(self): - users = fetch_course_session_users([COURSE_TEST_ID]) + users = fetch_course_session_users([COURSE_TEST_ID], excluded_domains=[]) response = generate_export_response(users) user_data = [ diff --git a/server/vbv_lernwelt/edoniq_test/views.py b/server/vbv_lernwelt/edoniq_test/views.py index 30f65398..3cae228d 100644 --- a/server/vbv_lernwelt/edoniq_test/views.py +++ b/server/vbv_lernwelt/edoniq_test/views.py @@ -4,7 +4,7 @@ from itertools import chain from typing import List from django.contrib.admin.views.decorators import staff_member_required -from django.db.models import CharField, Value +from django.db.models import CharField, Q, Value from django.http import HttpResponse from vbv_lernwelt.core.models import User @@ -12,6 +12,7 @@ from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR, COURSE_UK_IT from vbv_lernwelt.course.models import CourseSessionUser UK_COURSE_IDS = [COURSE_UK, COURSE_UK_FR, COURSE_UK_IT] +DEFAULT_EXCLUDED_DOMAINS = ["eiger-versicherung.ch", "assurance.ch", "example.com"] @staff_member_required @@ -34,30 +35,41 @@ def export_students_and_trainers(request): return generate_export_response(course_session_users) -def fetch_course_session_users(courses: List[int], role=CourseSessionUser.Role.MEMBER): +def fetch_course_session_users( + courses: List[int], role=CourseSessionUser.Role.MEMBER, excluded_domains=None +): if role == CourseSessionUser.Role.EXPERT: edoniq_role = "Trainer" else: edoniq_role = "Lernende" + # exclude test users if required + if excluded_domains is None: + excluded_domains = DEFAULT_EXCLUDED_DOMAINS + + exclude_q = Q() + for condition in excluded_domains: + exclude_q |= Q(email__contains=condition) + # if users should be exported per course session, remove the distinct() call return ( User.objects.filter( coursesessionuser__course_session__course__id__in=courses, coursesessionuser__role=role, ) - .exclude(email__contains="eiger-versicherungen.ch") # exclude test users - .exclude(email__contains="assurance.ch") + .exclude(exclude_q) .order_by("email") .annotate(edoniq_role=Value(edoniq_role, output_field=CharField())) .distinct() ) -def fetch_course_session_all_users(courses: List[int]): - course_session_users = fetch_course_session_users(courses) +def fetch_course_session_all_users(courses: List[int], excluded_domains=None): + course_session_users = fetch_course_session_users( + courses, excluded_domains=excluded_domains + ) course_session_trainers = fetch_course_session_users( - courses, role=CourseSessionUser.Role.EXPERT + courses, role=CourseSessionUser.Role.EXPERT, excluded_domains=excluded_domains ) combined_queryset = chain(course_session_users, course_session_trainers) diff --git a/server/vbv_lernwelt/feedback/migrations/0001_initial.py b/server/vbv_lernwelt/feedback/migrations/0001_initial.py index c871fc75..d0a63cb2 100644 --- a/server/vbv_lernwelt/feedback/migrations/0001_initial.py +++ b/server/vbv_lernwelt/feedback/migrations/0001_initial.py @@ -6,7 +6,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [] diff --git a/server/vbv_lernwelt/feedback/migrations/0002_initial.py b/server/vbv_lernwelt/feedback/migrations/0002_initial.py index d0543c85..651b2e27 100644 --- a/server/vbv_lernwelt/feedback/migrations/0002_initial.py +++ b/server/vbv_lernwelt/feedback/migrations/0002_initial.py @@ -5,7 +5,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/files/migrations/0001_initial.py b/server/vbv_lernwelt/files/migrations/0001_initial.py index 36cbad5e..117404b6 100644 --- a/server/vbv_lernwelt/files/migrations/0001_initial.py +++ b/server/vbv_lernwelt/files/migrations/0001_initial.py @@ -10,7 +10,6 @@ import vbv_lernwelt.files.utils class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/importer/services.py b/server/vbv_lernwelt/importer/services.py index 2cd64419..7e9aa252 100644 --- a/server/vbv_lernwelt/importer/services.py +++ b/server/vbv_lernwelt/importer/services.py @@ -508,7 +508,6 @@ def import_students_from_excel(filename: str): "Sprache", "Durchführungen", "Lehrvertragsnummer", - "Geburtsdatum", ], ) create_or_update_student(data) diff --git a/server/vbv_lernwelt/importer/tests/Schulungen_Teilnehmende.xlsx b/server/vbv_lernwelt/importer/tests/Schulungen_Teilnehmende.xlsx index b79f00e0..d1277189 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/learnpath/migrations/0001_initial.py b/server/vbv_lernwelt/learnpath/migrations/0001_initial.py index 596b11ad..58dc9315 100644 --- a/server/vbv_lernwelt/learnpath/migrations/0001_initial.py +++ b/server/vbv_lernwelt/learnpath/migrations/0001_initial.py @@ -7,7 +7,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/learnpath/migrations/0002_alter_learningcontentassignment_assignment_type.py b/server/vbv_lernwelt/learnpath/migrations/0002_alter_learningcontentassignment_assignment_type.py index fcdbbdbe..e76592f7 100644 --- a/server/vbv_lernwelt/learnpath/migrations/0002_alter_learningcontentassignment_assignment_type.py +++ b/server/vbv_lernwelt/learnpath/migrations/0002_alter_learningcontentassignment_assignment_type.py @@ -4,7 +4,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - dependencies = [ ("learnpath", "0001_initial"), ] diff --git a/server/vbv_lernwelt/media_library/migrations/0001_initial.py b/server/vbv_lernwelt/media_library/migrations/0001_initial.py index 004d5f13..c36493ef 100644 --- a/server/vbv_lernwelt/media_library/migrations/0001_initial.py +++ b/server/vbv_lernwelt/media_library/migrations/0001_initial.py @@ -10,7 +10,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ diff --git a/server/vbv_lernwelt/notify/migrations/0001_initial.py b/server/vbv_lernwelt/notify/migrations/0001_initial.py index cbca2aeb..2739e157 100644 --- a/server/vbv_lernwelt/notify/migrations/0001_initial.py +++ b/server/vbv_lernwelt/notify/migrations/0001_initial.py @@ -8,7 +8,6 @@ from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [