Rename content to reflect real data, refactor import

This commit is contained in:
Christian Cueni 2023-08-17 19:39:30 +02:00
parent 81351aa9fa
commit 9ef2a4e8b3
3 changed files with 90 additions and 63 deletions

View File

@ -2213,7 +2213,7 @@ def create_uk_kickoff_prep_assignment(course_id=COURSE_UK):
assignment = AssignmentFactory(
parent=assignment_list_page,
assignment_type=AssignmentType.PREP_ASSIGNMENT.name,
title="Kickoff - Versicherungswirtschaft",
title="Circle Kickoff",
effort_required="ca. 2 Stunden",
intro_text=replace_whitespace(
"""
@ -2367,7 +2367,7 @@ def create_uk_fr_kickoff_prep_assignment(course_id=COURSE_UK):
assignment = AssignmentFactory(
parent=assignment_list_page,
assignment_type=AssignmentType.PREP_ASSIGNMENT.name,
title="Circle Lancement - Secteur de l'assurance",
title="Circle Lancement",
effort_required="2 heures environ",
intro_text=replace_whitespace(
"""
@ -2515,7 +2515,7 @@ def create_uk_it_kickoff_prep_assignment(course_id=COURSE_UK):
assignment = AssignmentFactory(
parent=assignment_list_page,
assignment_type=AssignmentType.PREP_ASSIGNMENT.name,
title="Circle Introduzione - Settore assicurativo",
title="Circle Introduzione - Incarico di preparazione",
effort_required="circa 2 ore",
intro_text=replace_whitespace(
"""

View File

@ -269,11 +269,11 @@ In diesem Circle erfährst du wie die überbetrieblichen Kurse aufgebaut sind. Z
content_url=f"/course/überbetriebliche-kurse/media",
)
LearningContentAssignmentFactory(
title="Versicherungswirtschaft",
title="Vorbereitungsauftrag Circle Kickoff",
assignment_type="PREP_ASSIGNMENT",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith=f"überbetriebliche-kurse-assignment-kickoff-versicherungswirtschaft"
slug__startswith=f"überbetriebliche-kurse-assignment-circle-kickoff"
),
),
LearningSequenceFactory(title="Training", parent=circle)
@ -382,11 +382,11 @@ Dans ce cercle, tu apprendras comment les cours interentreprises sont structuré
content_url=f"/course/{circle.get_course().slug}/media",
)
LearningContentAssignmentFactory(
title="Secteur de l'assurance",
title="Mission de préparation",
assignment_type="PREP_ASSIGNMENT",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith=f"cours-interentreprises-assignment-circle-lancement-secteur-de-l-assurance"
slug__startswith=f"cours-interentreprises-assignment-circle-lancement",
),
),
LearningSequenceFactory(title="Training", parent=circle)
@ -499,11 +499,11 @@ In questo Circle imparerai come sono strutturati i corsi interaziendali. Imparer
content_url=f"/course/{circle.get_course().slug}/media",
)
LearningContentAssignmentFactory(
title="Settore Assicurativo",
title="Incarico di preparazione",
assignment_type="PREP_ASSIGNMENT",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith=f"{circle.get_course().slug}-assignment-circle-introduzione-settore-assicurativo"
slug__startswith=f"{circle.get_course().slug}-assignment-circle-introduzione-incarico-di-preparazione"
),
),
LearningSequenceFactory(title="Training", parent=circle)
@ -828,7 +828,7 @@ In questo Circle imparerai le basi più importanti del settore assicurativo e de
content_url=f"/course/{circle.get_course().slug}/media",
)
LearningContentAssignmentFactory(
title="Vorbereitungsauftrag Circle Basis",
title="Mandato di preparazione Circle Base",
assignment_type="PREP_ASSIGNMENT",
parent=circle,
content_assignment=Assignment.objects.get(

View File

@ -34,17 +34,18 @@ LP_DATA = {
"slug": "kickoff",
"presence_course": "kickoff-lc-präsenzkurs-kickoff",
"assignments": [
"kickoff-lc-versicherungswirtschaft",
"kickoff-lc-vorbereitungsauftrag-circle-kickoff",
"kickoff-lc-redlichkeitserklärung",
"kickoff-lc-reflexion",
],
"tests": ["kickoff-lc-wissens-und-verständnisfragen"],
},
"fr": {
"title": "Lancement",
"slug": "lancement",
"presence_course": "lancement-lc-cours-de-présence-lancement",
"assignments": [
"lancement-lc-secteur-de-lassurance",
"lancement-lc-mission-de-préparation",
"lancement-lc-redlichkeitserklärung",
"lancement-lc-réflexion",
],
@ -54,7 +55,7 @@ LP_DATA = {
"slug": "introduzione",
"presence_course": "introduzione-lc-corso-di-presenza-introduzione",
"assignments": [
"introduzione-lc-settore-assicurativo",
"introduzione-lc-incarico-di-preparazione",
"introduzione-lc-redlichkeitserklärung",
"introduzione-lc-riflessione",
],
@ -318,6 +319,33 @@ def create_or_update_course_session(
end = try_parse_datetime(data[f"{circle} {TRANSLATIONS[language]['ende']}"])[1]
if attendance_course_lc:
create_or_update_course_session_attendance(
cs,
attendance_course_lc,
course.slug,
circle_data["slug"],
location,
start,
end,
)
for assignment_slug in circle_data["assignments"]:
create_or_update_course_session_assignment(
cs, course.slug, assignment_slug, start, end
)
return cs
def create_or_update_course_session_attendance(
cs: CourseSession,
attendance_course_lc: LearningContentAttendanceCourse,
course_slug: str,
circle_slug: str,
location: str,
start: date,
end: date,
):
csa, _created = CourseSessionAttendanceCourse.objects.get_or_create(
course_session=cs, learning_content=attendance_course_lc
)
@ -325,7 +353,7 @@ def create_or_update_course_session(
csa.location = location
expert = CourseSessionUser.objects.filter(
course_session_id=cs.id,
expert__slug=f"{course.slug}-lp-circle-{circle_data['slug']}",
expert__slug=f"{course_slug}-lp-circle-{circle_slug}",
role=CourseSessionUser.Role.EXPERT,
).first()
@ -339,32 +367,33 @@ def create_or_update_course_session(
csa.due_date.save()
csa.save()
for assignment_slug in circle_data["assignments"]:
logger.debug("import", slug=f"{course.slug}-lp-circle-{assignment_slug}")
def create_or_update_course_session_assignment(
cs: CourseSession, course_slug: str, assignment_slug: str, start: date, end: date
):
logger.debug("import", slug=f"{course_slug}-lp-circle-{assignment_slug}")
learning_content = LearningContentAssignment.objects.filter(
slug=f"{course.slug}-lp-circle-{assignment_slug}"
slug=f"{course_slug}-lp-circle-{assignment_slug}"
).first()
if learning_content:
csa, _created = CourseSessionAssignment.objects.get_or_create(
course_session=cs,
learning_content=LearningContentAssignment.objects.get(
slug=f"{course.slug}-lp-circle-{assignment_slug}"
slug=f"{course_slug}-lp-circle-{assignment_slug}"
),
)
if (
csa.learning_content.assignment_type
== AssignmentType.PREP_ASSIGNMENT.value
csa.learning_content.assignment_type == AssignmentType.PREP_ASSIGNMENT.value
and start
):
csa.submission_deadline.end = timezone.make_aware(start)
csa.submission_deadline.save()
elif (
csa.learning_content.assignment_type
== AssignmentType.CASEWORK.value
csa.learning_content.assignment_type == AssignmentType.CASEWORK.value
and end
):
csa.submission_deadline.end = timezone.make_aware(
@ -372,8 +401,6 @@ def create_or_update_course_session(
) + timezone.timedelta(days=30)
csa.submission_deadline.save()
return cs
def validate_row_data(data: Dict[str, any], required_headers: List[str]):
logger.debug(