Rename content to reflect real data, refactor import
This commit is contained in:
parent
81351aa9fa
commit
9ef2a4e8b3
|
|
@ -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(
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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,63 +319,89 @@ def create_or_update_course_session(
|
|||
end = try_parse_datetime(data[f"{circle} {TRANSLATIONS[language]['ende']}"])[1]
|
||||
|
||||
if attendance_course_lc:
|
||||
csa, _created = CourseSessionAttendanceCourse.objects.get_or_create(
|
||||
course_session=cs, learning_content=attendance_course_lc
|
||||
create_or_update_course_session_attendance(
|
||||
cs,
|
||||
attendance_course_lc,
|
||||
course.slug,
|
||||
circle_data["slug"],
|
||||
location,
|
||||
start,
|
||||
end,
|
||||
)
|
||||
|
||||
csa.location = location
|
||||
expert = CourseSessionUser.objects.filter(
|
||||
course_session_id=cs.id,
|
||||
expert__slug=f"{course.slug}-lp-circle-{circle_data['slug']}",
|
||||
role=CourseSessionUser.Role.EXPERT,
|
||||
).first()
|
||||
|
||||
if expert:
|
||||
csa.trainer = f"{expert.user.first_name} {expert.user.last_name}"
|
||||
|
||||
if start:
|
||||
csa.due_date.start = timezone.make_aware(start)
|
||||
if end:
|
||||
csa.due_date.end = timezone.make_aware(end)
|
||||
csa.due_date.save()
|
||||
csa.save()
|
||||
|
||||
for assignment_slug in circle_data["assignments"]:
|
||||
logger.debug("import", slug=f"{course.slug}-lp-circle-{assignment_slug}")
|
||||
|
||||
learning_content = LearningContentAssignment.objects.filter(
|
||||
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}"
|
||||
),
|
||||
)
|
||||
|
||||
if (
|
||||
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
|
||||
and end
|
||||
):
|
||||
csa.submission_deadline.end = timezone.make_aware(
|
||||
start
|
||||
) + timezone.timedelta(days=30)
|
||||
csa.submission_deadline.save()
|
||||
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
|
||||
)
|
||||
|
||||
csa.location = location
|
||||
expert = CourseSessionUser.objects.filter(
|
||||
course_session_id=cs.id,
|
||||
expert__slug=f"{course_slug}-lp-circle-{circle_slug}",
|
||||
role=CourseSessionUser.Role.EXPERT,
|
||||
).first()
|
||||
|
||||
if expert:
|
||||
csa.trainer = f"{expert.user.first_name} {expert.user.last_name}"
|
||||
|
||||
if start:
|
||||
csa.due_date.start = timezone.make_aware(start)
|
||||
if end:
|
||||
csa.due_date.end = timezone.make_aware(end)
|
||||
csa.due_date.save()
|
||||
csa.save()
|
||||
|
||||
|
||||
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}"
|
||||
).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}"
|
||||
),
|
||||
)
|
||||
|
||||
if (
|
||||
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
|
||||
and end
|
||||
):
|
||||
csa.submission_deadline.end = timezone.make_aware(
|
||||
start
|
||||
) + timezone.timedelta(days=30)
|
||||
csa.submission_deadline.save()
|
||||
|
||||
|
||||
def validate_row_data(data: Dict[str, any], required_headers: List[str]):
|
||||
logger.debug(
|
||||
"validate_row_data_missing_header",
|
||||
|
|
|
|||
Loading…
Reference in New Issue