Import without changing file
This commit is contained in:
parent
ab2e4c5df2
commit
5f534dee9f
|
|
@ -127,6 +127,8 @@ def import_trainers_from_excel(course: Course, filename: str):
|
||||||
header = [cell.value for cell in sheet[1]]
|
header = [cell.value for cell in sheet[1]]
|
||||||
|
|
||||||
for row in sheet.iter_rows(min_row=2, values_only=True):
|
for row in sheet.iter_rows(min_row=2, values_only=True):
|
||||||
|
if all(cell_value is None for cell_value in row):
|
||||||
|
continue
|
||||||
row_with_header = list(zip(header, row))
|
row_with_header = list(zip(header, row))
|
||||||
create_or_update_trainer(course, dict(row_with_header))
|
create_or_update_trainer(course, dict(row_with_header))
|
||||||
|
|
||||||
|
|
@ -147,11 +149,11 @@ def create_or_update_trainer(course: Course, data: Dict[str, Any]):
|
||||||
|
|
||||||
# TODO: handle language
|
# TODO: handle language
|
||||||
|
|
||||||
import_id = data["Generation"].strip()
|
|
||||||
groups = [g.strip() for g in data["Klasse"].strip().split(",")]
|
groups = [g.strip() for g in data["Klasse"].strip().split(",")]
|
||||||
|
|
||||||
# general expert handling
|
# general expert handling
|
||||||
for group in groups:
|
for group in groups:
|
||||||
|
import_id = f"{data['Generation'].strip()} {group}"
|
||||||
course_session = CourseSession.objects.filter(
|
course_session = CourseSession.objects.filter(
|
||||||
import_id=import_id, group=group, course=course
|
import_id=import_id, group=group, course=course
|
||||||
).first()
|
).first()
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -24,6 +24,7 @@ class ImportCourseSessionTestCase(TestCase):
|
||||||
|
|
||||||
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(
|
cs = create_or_update_course_session(
|
||||||
self.course, dict(row_with_header), circles=["Fahrzeug"]
|
self.course, dict(row_with_header), circles=["Fahrzeug"]
|
||||||
)
|
)
|
||||||
|
|
@ -38,7 +39,7 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
|
|
||||||
def test_create_course_session(self):
|
def test_create_course_session(self):
|
||||||
row = [
|
row = [
|
||||||
("ID", "DE 2023"),
|
("ID", "DE 2023 A"),
|
||||||
("Generation", 2023),
|
("Generation", 2023),
|
||||||
("Region", "Deutschschweiz"),
|
("Region", "Deutschschweiz"),
|
||||||
("Klasse", "A"),
|
("Klasse", "A"),
|
||||||
|
|
@ -56,7 +57,7 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
|
|
||||||
cs = create_or_update_course_session(self.course, data, circles=["Fahrzeug"])
|
cs = create_or_update_course_session(self.course, data, circles=["Fahrzeug"])
|
||||||
|
|
||||||
self.assertEqual(cs.import_id, "DE 2023")
|
self.assertEqual(cs.import_id, "DE 2023 A")
|
||||||
self.assertEqual(cs.title, "Deutschschweiz 2023 A")
|
self.assertEqual(cs.title, "Deutschschweiz 2023 A")
|
||||||
self.assertEqual(cs.generation, "2023")
|
self.assertEqual(cs.generation, "2023")
|
||||||
self.assertEqual(cs.region, "Deutschschweiz")
|
self.assertEqual(cs.region, "Deutschschweiz")
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
import os
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from django.test import TestCase
|
||||||
|
from openpyxl.reader.excel import load_workbook
|
||||||
|
|
||||||
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
|
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
||||||
|
from vbv_lernwelt.importer.services import create_or_update_trainer
|
||||||
|
|
||||||
|
test_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
class ImportStudentsTestCase(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.course = create_test_course(include_vv=False)
|
||||||
|
|
||||||
|
def test_import_excel_file(self):
|
||||||
|
workbook = load_workbook(filename=f"{test_dir}/Schulungen_Teilnehmende.xlsx")
|
||||||
|
sheet = workbook.active
|
||||||
|
|
||||||
|
header = [cell.value for cell in sheet[1]]
|
||||||
|
|
||||||
|
for row in sheet.iter_rows(min_row=2, values_only=True):
|
||||||
|
if all(cell_value is None for cell_value in row):
|
||||||
|
continue
|
||||||
|
row_with_header = list(zip(header, row))
|
||||||
|
print(row_with_header)
|
||||||
|
|
||||||
|
|
||||||
|
class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.course = create_test_course(include_vv=False)
|
||||||
|
self.course_session_a = CourseSession.objects.create(
|
||||||
|
course=self.course,
|
||||||
|
title="Deutschschweiz 2023 A",
|
||||||
|
import_id="DE 2023",
|
||||||
|
group="A",
|
||||||
|
)
|
||||||
|
self.course_session_a = CourseSession.objects.create(
|
||||||
|
course=self.course,
|
||||||
|
title="Deutschschweiz 2023 B",
|
||||||
|
import_id="DE 2023",
|
||||||
|
group="B",
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_create_course_session(self):
|
||||||
|
row = [
|
||||||
|
("Name", "Hänni"),
|
||||||
|
("Vorname", "Fabienne"),
|
||||||
|
("Email", "fabienne.haenni@vbv-afa.ch"),
|
||||||
|
("Sprache", "de"),
|
||||||
|
("Generation", "DE 2023"),
|
||||||
|
("Klasse", "A, B"),
|
||||||
|
("Circles", "Fahrzeug (A, B), Reisen (A), KMU (B)"),
|
||||||
|
("Status Referenten", "ok"),
|
||||||
|
(None, "Schulung D"),
|
||||||
|
("Klasse foo", datetime(2023, 6, 6, 0, 0)),
|
||||||
|
]
|
||||||
|
|
||||||
|
create_or_update_trainer(self.course, dict(row))
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
CourseSessionUser.objects.filter(
|
||||||
|
user__email="fabienne.haenni@vbv-afa.ch"
|
||||||
|
).count(),
|
||||||
|
2,
|
||||||
|
)
|
||||||
|
|
||||||
|
csu = CourseSessionUser.objects.get(
|
||||||
|
course_session=self.course_session_a,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(csu.role, CourseSessionUser.Role.EXPERT)
|
||||||
|
self.assertEqual(csu.user.email, "fabienne.haenni@vbv-afa.ch")
|
||||||
|
self.assertEqual(csu.expert.all().first().title, "Fahrzeug")
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import os
|
import os
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from openpyxl.reader.excel import load_workbook
|
from openpyxl.reader.excel import load_workbook
|
||||||
|
|
@ -25,6 +24,8 @@ class ImportTrainerTestCase(TestCase):
|
||||||
|
|
||||||
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))
|
||||||
|
if all(cell_value is None for cell_value in row):
|
||||||
|
continue
|
||||||
print(row_with_header)
|
print(row_with_header)
|
||||||
create_or_update_trainer(self.course, dict(row_with_header))
|
create_or_update_trainer(self.course, dict(row_with_header))
|
||||||
|
|
||||||
|
|
@ -35,13 +36,13 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
self.course_session_a = CourseSession.objects.create(
|
self.course_session_a = CourseSession.objects.create(
|
||||||
course=self.course,
|
course=self.course,
|
||||||
title="Deutschschweiz 2023 A",
|
title="Deutschschweiz 2023 A",
|
||||||
import_id="DE 2023",
|
import_id="DE 2023 A",
|
||||||
group="A",
|
group="A",
|
||||||
)
|
)
|
||||||
self.course_session_a = CourseSession.objects.create(
|
self.course_session_a = CourseSession.objects.create(
|
||||||
course=self.course,
|
course=self.course,
|
||||||
title="Deutschschweiz 2023 B",
|
title="Deutschschweiz 2023 B",
|
||||||
import_id="DE 2023",
|
import_id="DE 2023 B",
|
||||||
group="B",
|
group="B",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -56,7 +57,6 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
("Circles", "Fahrzeug (A, B), Reisen (A), KMU (B)"),
|
("Circles", "Fahrzeug (A, B), Reisen (A), KMU (B)"),
|
||||||
("Status Referenten", "ok"),
|
("Status Referenten", "ok"),
|
||||||
(None, "Schulung D"),
|
(None, "Schulung D"),
|
||||||
("Klasse foo", datetime(2023, 6, 6, 0, 0)),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
create_or_update_trainer(self.course, dict(row))
|
create_or_update_trainer(self.course, dict(row))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue