Import course sesssions from excel file
This commit is contained in:
parent
e6c782fe5b
commit
281521a8d0
|
|
@ -28,7 +28,6 @@ class AssignmentApiTestCase(APITestCase):
|
||||||
self.cs = CourseSession.objects.create(
|
self.cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Lehrgang Session",
|
title="Test Lehrgang Session",
|
||||||
import_id="Test Lehrgang Session",
|
|
||||||
)
|
)
|
||||||
self.student = User.objects.get(username="student")
|
self.student = User.objects.get(username="student")
|
||||||
self.student_csu = CourseSessionUser.objects.create(
|
self.student_csu = CourseSessionUser.objects.create(
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ class UpdateAssignmentCompletionTestCase(TestCase):
|
||||||
self.course_session = CourseSession.objects.create(
|
self.course_session = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Bern 2022 a",
|
title="Bern 2022 a",
|
||||||
import_id="Bern 2022 a",
|
|
||||||
)
|
)
|
||||||
self.user = User.objects.get(username="student")
|
self.user = User.objects.get(username="student")
|
||||||
self.trainer = User.objects.get(username="admin")
|
self.trainer = User.objects.get(username="admin")
|
||||||
|
|
|
||||||
|
|
@ -83,13 +83,11 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
|
||||||
cs_bern = CourseSession.objects.create(
|
cs_bern = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Bern 2022 a",
|
title="Test Bern 2022 a",
|
||||||
import_id="Test Bern 2022 a",
|
|
||||||
id=TEST_COURSE_SESSION_BERN_ID,
|
id=TEST_COURSE_SESSION_BERN_ID,
|
||||||
)
|
)
|
||||||
cs_zurich = CourseSession.objects.create(
|
cs_zurich = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Zürich 2022 a",
|
title="Test Zürich 2022 a",
|
||||||
import_id="Test Zürich 2022 a",
|
|
||||||
id=TEST_COURSE_SESSION_ZURICH_ID,
|
id=TEST_COURSE_SESSION_ZURICH_ID,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import os
|
||||||
import random
|
import random
|
||||||
|
|
||||||
import djclick as click
|
import djclick as click
|
||||||
|
|
@ -43,9 +44,15 @@ from vbv_lernwelt.course.creators.uk_training_course import (
|
||||||
from vbv_lernwelt.course.creators.versicherungsvermittlerin import (
|
from vbv_lernwelt.course.creators.versicherungsvermittlerin import (
|
||||||
create_versicherungsvermittlerin_with_categories,
|
create_versicherungsvermittlerin_with_categories,
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.course.models import CoursePage, CourseSession, CourseSessionUser
|
from vbv_lernwelt.course.models import (
|
||||||
|
CoursePage,
|
||||||
|
CourseSession,
|
||||||
|
CourseSessionUser,
|
||||||
|
Course,
|
||||||
|
)
|
||||||
from vbv_lernwelt.course.services import mark_course_completion
|
from vbv_lernwelt.course.services import mark_course_completion
|
||||||
from vbv_lernwelt.feedback.creators.create_demo_feedback import create_feedback
|
from vbv_lernwelt.feedback.creators.create_demo_feedback import create_feedback
|
||||||
|
from vbv_lernwelt.importer.services import import_course_sessions_from_excel
|
||||||
from vbv_lernwelt.learnpath.create_vv_new_learning_path import (
|
from vbv_lernwelt.learnpath.create_vv_new_learning_path import (
|
||||||
create_vv_new_learning_path,
|
create_vv_new_learning_path,
|
||||||
)
|
)
|
||||||
|
|
@ -117,7 +124,6 @@ def create_versicherungsvermittlerin_course():
|
||||||
cs = CourseSession.objects.create(
|
cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID,
|
||||||
title="Versicherungsvermittler/-in",
|
title="Versicherungsvermittler/-in",
|
||||||
import_id="Versicherungsvermittler/-in",
|
|
||||||
)
|
)
|
||||||
for user_data in default_users:
|
for user_data in default_users:
|
||||||
CourseSessionUser.objects.create(
|
CourseSessionUser.objects.create(
|
||||||
|
|
@ -186,7 +192,6 @@ def create_course_uk_de():
|
||||||
cs = CourseSession.objects.create(
|
cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_UK,
|
course_id=COURSE_UK,
|
||||||
title="Bern 2023 a",
|
title="Bern 2023 a",
|
||||||
import_id="Bern 2023 a",
|
|
||||||
attendance_courses=[
|
attendance_courses=[
|
||||||
{
|
{
|
||||||
"learningContentId": LearningContentAttendanceCourse.objects.get(
|
"learningContentId": LearningContentAttendanceCourse.objects.get(
|
||||||
|
|
@ -282,7 +287,6 @@ def create_course_uk_de():
|
||||||
cs = CourseSession.objects.create(
|
cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_UK,
|
course_id=COURSE_UK,
|
||||||
title="Zürich 2023 a",
|
title="Zürich 2023 a",
|
||||||
import_id="Zürich 2023 a",
|
|
||||||
)
|
)
|
||||||
# for user_data in default_users:
|
# for user_data in default_users:
|
||||||
# CourseSessionUser.objects.create(
|
# CourseSessionUser.objects.create(
|
||||||
|
|
@ -325,7 +329,6 @@ def create_course_uk_fr():
|
||||||
cs = CourseSession.objects.create(
|
cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_UK_FR,
|
course_id=COURSE_UK_FR,
|
||||||
title="Cours hors établissement année 1 - Région Fribourg",
|
title="Cours hors établissement année 1 - Région Fribourg",
|
||||||
import_id="Cours hors établissement année 1 - Région Fribourg",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
csu = CourseSessionUser.objects.create(
|
csu = CourseSessionUser.objects.create(
|
||||||
|
|
@ -443,22 +446,16 @@ def create_course_training_de():
|
||||||
create_uk_training_competence_profile(course_id=COURSE_UK_TRAINING)
|
create_uk_training_competence_profile(course_id=COURSE_UK_TRAINING)
|
||||||
create_default_media_library(course_id=COURSE_UK_TRAINING)
|
create_default_media_library(course_id=COURSE_UK_TRAINING)
|
||||||
|
|
||||||
cs = CourseSession.objects.create(
|
current_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
course_id=COURSE_UK_TRAINING,
|
print(current_dir)
|
||||||
title="myVBV Training",
|
course = Course.objects.get(id=COURSE_UK_TRAINING)
|
||||||
import_id="myVBV Training",
|
import_course_sessions_from_excel(
|
||||||
attendance_courses=[
|
course,
|
||||||
{
|
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
|
||||||
"learningContentId": LearningContentAttendanceCourse.objects.get(
|
)
|
||||||
slug=f"{course.slug}-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug"
|
|
||||||
).id,
|
for cs in CourseSession.objects.filter(course_id=COURSE_UK_TRAINING):
|
||||||
"start": "2023-05-23T08:30:00+0200",
|
cs.assignment_details_list = [
|
||||||
"end": "2023-05-23T17:00:00+0200",
|
|
||||||
"location": "Handelsschule KV Bern, Zimmer 123, Eigerstrasse 16, 3012 Bern",
|
|
||||||
"trainer": "Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
|
|
||||||
}
|
|
||||||
],
|
|
||||||
assignment_details_list=[
|
|
||||||
{
|
{
|
||||||
"learningContentId": LearningContentAssignment.objects.get(
|
"learningContentId": LearningContentAssignment.objects.get(
|
||||||
slug=f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
|
slug=f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
|
||||||
|
|
@ -473,5 +470,5 @@ def create_course_training_de():
|
||||||
"submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
|
"submissionDeadlineDateTimeUtc": "2023-06-13T19:00:00Z",
|
||||||
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
|
||||||
},
|
},
|
||||||
],
|
]
|
||||||
)
|
cs.save()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 3.2.13 on 2023-05-31 14:56
|
# Generated by Django 3.2.13 on 2023-05-31 15:59
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
@ -23,8 +23,7 @@ class Migration(migrations.Migration):
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='coursesession',
|
model_name='coursesession',
|
||||||
name='import_id',
|
name='import_id',
|
||||||
field=models.TextField(default='', unique=True),
|
field=models.TextField(blank=True, default=''),
|
||||||
preserve_default=False,
|
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='coursesession',
|
model_name='coursesession',
|
||||||
|
|
|
||||||
|
|
@ -216,7 +216,8 @@ class CourseSession(models.Model):
|
||||||
|
|
||||||
course = models.ForeignKey("course.Course", on_delete=models.CASCADE)
|
course = models.ForeignKey("course.Course", on_delete=models.CASCADE)
|
||||||
title = models.TextField(unique=True)
|
title = models.TextField(unique=True)
|
||||||
import_id = models.TextField(unique=True)
|
|
||||||
|
import_id = models.TextField(blank=True, default="")
|
||||||
|
|
||||||
generation = models.TextField(blank=True, default="")
|
generation = models.TextField(blank=True, default="")
|
||||||
region = models.TextField(blank=True, default="")
|
region = models.TextField(blank=True, default="")
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ class CourseCompletionApiTestCase(APITestCase):
|
||||||
self.cs = CourseSession.objects.create(
|
self.cs = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Lehrgang Session",
|
title="Test Lehrgang Session",
|
||||||
import_id="Test Lehrgang Session",
|
|
||||||
)
|
)
|
||||||
csu = CourseSessionUser.objects.create(
|
csu = CourseSessionUser.objects.create(
|
||||||
course_session=self.cs,
|
course_session=self.cs,
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ class CourseCompletionApiTestCase(APITestCase):
|
||||||
self.course_session = CourseSession.objects.create(
|
self.course_session = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Lehrgang Session",
|
title="Test Lehrgang Session",
|
||||||
import_id="Test Lehrgang Session",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.client.login(username="student", password="test")
|
self.client.login(username="student", password="test")
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ class DocumentUploadApiTestCase(APITestCase):
|
||||||
self.course_session = CourseSession.objects.create(
|
self.course_session = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Lehrgang Session",
|
title="Test Lehrgang Session",
|
||||||
import_id="Test Lehrgang Session",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
csu = CourseSessionUser.objects.create(
|
csu = CourseSessionUser.objects.create(
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ class FeedbackApiBaseTestCase(APITestCase):
|
||||||
self.course_session = CourseSession.objects.create(
|
self.course_session = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Lehrgang Session",
|
title="Test Lehrgang Session",
|
||||||
import_id="Test Lehrgang Session",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
csu = CourseSessionUser.objects.create(
|
csu = CourseSessionUser.objects.create(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
from typing import Dict, Any
|
from typing import Dict, Any
|
||||||
|
|
||||||
|
from openpyxl.reader.excel import load_workbook
|
||||||
|
|
||||||
from vbv_lernwelt.core.models import User
|
from vbv_lernwelt.core.models import User
|
||||||
from vbv_lernwelt.course.models import Course, CourseSession
|
from vbv_lernwelt.course.models import Course, CourseSession
|
||||||
from vbv_lernwelt.importer.utils import try_parse_datetime
|
from vbv_lernwelt.importer.utils import try_parse_datetime
|
||||||
|
|
@ -35,6 +37,19 @@ def create_or_update_user(
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
def import_course_sessions_from_excel(course: Course, filename: str):
|
||||||
|
workbook = load_workbook(filename=filename)
|
||||||
|
sheet = workbook["Schulungen Durchführung"]
|
||||||
|
|
||||||
|
header = [cell.value for cell in sheet[1]]
|
||||||
|
|
||||||
|
for row in sheet.iter_rows(min_row=2, values_only=True):
|
||||||
|
row_with_header = list(zip(header, row))
|
||||||
|
cs = create_or_update_course_session(
|
||||||
|
course, dict(row_with_header), circles=["Fahrzeug"]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def create_or_update_course_session(course: Course, data: Dict[str, Any], circles=None):
|
def create_or_update_course_session(course: Course, data: Dict[str, Any], circles=None):
|
||||||
"""
|
"""
|
||||||
:param data: the following keys are required to process the data: Generation, Region, Klasse
|
:param data: the following keys are required to process the data: Generation, Region, Klasse
|
||||||
|
|
@ -45,15 +60,16 @@ def create_or_update_course_session(course: Course, data: Dict[str, Any], circle
|
||||||
circles = []
|
circles = []
|
||||||
|
|
||||||
# TODO: validation
|
# TODO: validation
|
||||||
generation = str(data["Generation"]).strip()
|
|
||||||
region = data["Region"].strip()
|
|
||||||
group = data["Klasse"].strip()
|
group = data["Klasse"].strip()
|
||||||
import_id = data["ID"].strip()
|
import_id = data["ID"].strip()
|
||||||
|
|
||||||
|
generation = str(data["Generation"]).strip()
|
||||||
|
region = data["Region"].strip()
|
||||||
|
|
||||||
title = f"{region} {generation} {group}"
|
title = f"{region} {generation} {group}"
|
||||||
|
|
||||||
cs, _created = CourseSession.objects.get_or_create(
|
cs, _created = CourseSession.objects.get_or_create(
|
||||||
import_id=import_id, course=course
|
import_id=import_id, group=group, course=course
|
||||||
)
|
)
|
||||||
|
|
||||||
cs.additional_json_data["import_data"] = data
|
cs.additional_json_data["import_data"] = data
|
||||||
|
|
@ -67,16 +83,6 @@ def create_or_update_course_session(course: Course, data: Dict[str, Any], circle
|
||||||
|
|
||||||
cs.save()
|
cs.save()
|
||||||
|
|
||||||
"""
|
|
||||||
("Fahrzeug Start", "06.06.2023, 13:30"),
|
|
||||||
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
|
||||||
(
|
|
||||||
"Fahrzeug Raum",
|
|
||||||
"https://teams.microsoft.com/l/meetup-join/19%3ameeting_N2I5YzViZTQtYTM2Ny00OTYwLTgzNzAtYWI4OTQzODcxNTlj%40thread.v2/0?context=%7b%22Tid%22%3a%22fedd03c8-a756-4803-8f27-0db8f7c488f2%22%2c%22Oid%22%3a%22f92e6382-3884-4e71-a2fd-b305a75d9812%22%7d",
|
|
||||||
),
|
|
||||||
("Fahrzeug Standort", None),
|
|
||||||
("Fahrzeug Adresse", None),
|
|
||||||
"""
|
|
||||||
for circle in circles:
|
for circle in circles:
|
||||||
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
|
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
|
||||||
slug=f"{course.slug}-lp-circle-{circle.lower()}-lc-präsenzkurs-{circle.lower()}"
|
slug=f"{course.slug}-lp-circle-{circle.lower()}-lc-präsenzkurs-{circle.lower()}"
|
||||||
|
|
|
||||||
|
|
@ -4,43 +4,32 @@ from django.test import TestCase
|
||||||
from openpyxl.reader.excel import load_workbook
|
from openpyxl.reader.excel import load_workbook
|
||||||
|
|
||||||
from vbv_lernwelt.course.creators.test_course import create_test_course
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
|
from vbv_lernwelt.course.models import CourseSession
|
||||||
from vbv_lernwelt.importer.services import create_or_update_course_session
|
from vbv_lernwelt.importer.services import create_or_update_course_session
|
||||||
|
|
||||||
test_dir = os.path.dirname(os.path.abspath(__file__))
|
test_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
class ImportCourseSessionTestCase(TestCase):
|
class ImportCourseSessionTestCase(TestCase):
|
||||||
def test_open_excel_file(self):
|
def setUp(self):
|
||||||
|
self.course = create_test_course(include_vv=False)
|
||||||
|
|
||||||
|
def test_import_excel_file(self):
|
||||||
workbook = load_workbook(
|
workbook = load_workbook(
|
||||||
filename=f"{test_dir}/Schulungen_Durchfuehrung_Trainer.xlsx"
|
filename=f"{test_dir}/Schulungen_Durchfuehrung_Trainer.xlsx"
|
||||||
)
|
)
|
||||||
sheet = workbook["Schulungen Durchführung"]
|
sheet = workbook["Schulungen Durchführung"]
|
||||||
|
|
||||||
# Read the header row separately
|
|
||||||
header = [cell.value for cell in sheet[1]]
|
header = [cell.value for cell in sheet[1]]
|
||||||
|
|
||||||
# Loop through the remaining rows in the sheet
|
|
||||||
for row in sheet.iter_rows(min_row=2, values_only=True):
|
for row in sheet.iter_rows(min_row=2, values_only=True):
|
||||||
row_with_header = list(zip(header, row))
|
row_with_header = list(zip(header, row))
|
||||||
print(row_with_header)
|
cs = create_or_update_course_session(
|
||||||
|
self.course, dict(row_with_header), circles=["Fahrzeug"]
|
||||||
|
)
|
||||||
|
print(cs.title)
|
||||||
|
|
||||||
def test_create_or_update_course_session(self):
|
self.assertEqual(CourseSession.objects.count(), 6)
|
||||||
row = [
|
|
||||||
("ID", "DE 2023 A"),
|
|
||||||
("Generation", 2023),
|
|
||||||
("Region", "Deutschschweiz"),
|
|
||||||
("Klasse", "A"),
|
|
||||||
("Fahrzeug Start", "06.06.2023, 13:30"),
|
|
||||||
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
|
||||||
(
|
|
||||||
"Fahrzeug Raum",
|
|
||||||
"https://teams.microsoft.com/l/meetup-join/19%3ameeting_N2I5YzViZTQtYTM2Ny00OTYwLTgzNzAtYWI4OTQzODcxNTlj%40thread.v2/0?context=%7b%22Tid%22%3a%22fedd03c8-a756-4803-8f27-0db8f7c488f2%22%2c%22Oid%22%3a%22f92e6382-3884-4e71-a2fd-b305a75d9812%22%7d",
|
|
||||||
),
|
|
||||||
("Fahrzeug Standort", None),
|
|
||||||
("Fahrzeug Adresse", None),
|
|
||||||
]
|
|
||||||
|
|
||||||
print(dict(row))
|
|
||||||
|
|
||||||
|
|
||||||
class CreateOrUpdateCourseSessionTestCase(TestCase):
|
class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
|
|
@ -88,3 +77,54 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
"trainer": "",
|
"trainer": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_update_course_session(self):
|
||||||
|
cs = CourseSession.objects.create(
|
||||||
|
course_id=self.course.id,
|
||||||
|
title="Deutschschweiz 2023 A",
|
||||||
|
import_id="DE 2023",
|
||||||
|
group="A",
|
||||||
|
)
|
||||||
|
|
||||||
|
row = [
|
||||||
|
("ID", "DE 2023"),
|
||||||
|
("Generation", 2023),
|
||||||
|
("Region", "Deutschschweiz"),
|
||||||
|
("Klasse", "A"),
|
||||||
|
("Fahrzeug Start", "06.06.2023, 13:30"),
|
||||||
|
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
||||||
|
(
|
||||||
|
"Fahrzeug Raum",
|
||||||
|
"https://teams.microsoft.com/l/meetup-join/19%3ameeting_N2I5YzViZTQtYTM2Ny00OTYwLTgzNzAtYWI4OTQzODcxNTlj%40thread.v2/0?context=%7b%22Tid%22%3a%22fedd03c8-a756-4803-8f27-0db8f7c488f2%22%2c%22Oid%22%3a%22f92e6382-3884-4e71-a2fd-b305a75d9812%22%7d",
|
||||||
|
),
|
||||||
|
("Fahrzeug Standort", None),
|
||||||
|
("Fahrzeug Adresse", None),
|
||||||
|
]
|
||||||
|
|
||||||
|
data = dict(row)
|
||||||
|
|
||||||
|
cs = create_or_update_course_session(self.course, data, circles=["Fahrzeug"])
|
||||||
|
|
||||||
|
self.assertEqual(1, CourseSession.objects.count())
|
||||||
|
|
||||||
|
self.assertEqual(cs.import_id, "DE 2023")
|
||||||
|
self.assertEqual(cs.title, "Deutschschweiz 2023 A")
|
||||||
|
self.assertEqual(cs.generation, "2023")
|
||||||
|
self.assertEqual(cs.region, "Deutschschweiz")
|
||||||
|
self.assertEqual(cs.group, "A")
|
||||||
|
|
||||||
|
attendance_course = cs.attendance_courses[0]
|
||||||
|
attendance_course = {
|
||||||
|
k: v
|
||||||
|
for k, v in attendance_course.items()
|
||||||
|
if k not in ["learningContentId", "location"]
|
||||||
|
}
|
||||||
|
|
||||||
|
self.assertDictEqual(
|
||||||
|
attendance_course,
|
||||||
|
{
|
||||||
|
"start": "2023-06-06T13:30:00",
|
||||||
|
"end": "2023-06-06T15:00:00",
|
||||||
|
"trainer": "",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,6 @@ class TestRetrieveLearingPathContents(APITestCase):
|
||||||
course_session = CourseSession.objects.create(
|
course_session = CourseSession.objects.create(
|
||||||
course_id=COURSE_TEST_ID,
|
course_id=COURSE_TEST_ID,
|
||||||
title="Test Lehrgang Session",
|
title="Test Lehrgang Session",
|
||||||
import_id="Test Lehrgang Session",
|
|
||||||
)
|
)
|
||||||
CourseSessionUser.objects.create(
|
CourseSessionUser.objects.create(
|
||||||
course_session=course_session,
|
course_session=course_session,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue