Add IT uk and training course

This commit is contained in:
Christian Cueni 2023-06-15 14:24:52 +02:00
parent 1cda586f61
commit f2438f6d57
23 changed files with 1834 additions and 73 deletions

227
client/src/locales/it.json Normal file
View File

@ -0,0 +1,227 @@
{
"Benutzername": "Nome utente",
"Hier findest du die Trainerunterlagen (Lösungsblätter, Präsentationen etc.) für deinen Circle.": "Qui trovi i documenti del/della trainer (soluzioni, presentazioni ecc.) per il tuo Circle.",
"Klicke auf den Button, um dich über SSO anzumelden oder zu registrieren.": "Clicca sul pulsante per effettuare il login o registrarti tramite SSO.",
"MS Teams öffnen": "Aprire MS Teams",
"Nächste Termine:": "Prossime scadenze:",
"Passwort": "Password",
"SSO Login/Registration": "Login/Registrazione SSO",
"Trainerunterlagen": "Documenti del/della trainer",
"Zur Zeit sind keine Termine vorhanden": "Al momento non ci sono scadenze",
"assignment": {
"acceptConditionsDisclaimer": "Accettare le condizioni e consegnare i risultati",
"assessmentDocumentDisclaimer": "Questa analisi guidata del caso viene valutata sulla base del seguente strumento di valutazione:",
"assessmentTitle": "Valutazione",
"assignmentSubmitted": "I tuoi risultati sono stati consegnati con successo.",
"confirmSubmitPerson": "Confermo che i miei risultati dovranno essere valutati dalla seguente persona.",
"confirmSubmitResults": "Confermo di aver controllato il riepilogo dei miei risultati e di volerli consegnare.",
"dueDateIntroduction": "Presenta i tuoi risultati entro il {date} alle {time}.",
"dueDateNotSet": "Non sono stati registrati dati di consegna per questo svolgimento",
"dueDateSubmission": "Termine di presentazione: {date}",
"dueDateTitle": "Termine di consegna",
"edit": "Modificare",
"effortTitle": "Tempo richiesto",
"initialSituationTitle": "Situazione di partenza",
"lastChangesNotSaved": "Non è stato possibile salvare lultima modifica.",
"performanceObjectivesTitle": "Obiettivi di valutazione",
"showAssessmentDocument": "Mostrare lo strumento di valutazione",
"submissionNotificationDisclaimer": "I tuoi risultati saranno valutati da {name}. Riceverai una notifica non appena la tua valutazione sarà disponibile.",
"submitAssignment": "Consegnare i risultati",
"taskDefinition": "Svolgi le attività parziali e documenta i tuoi risultati.",
"taskDefinitionTitle": "Compito"
},
"circlePage": {
"circleContentBoxTitle": "Cosa apprenderai in questo Circle",
"contactExpertButton": "Contattare il/la trainer",
"contactExpertDescription": "Confrontati con il/la trainer per il Circle {circleName}.",
"documents": {
"action": "Caricare i documenti",
"chooseLearningSequence": "Seleziona una sequenza di apprendimento",
"chooseName": "Seleziona un nome",
"chooseSequence": "Seleziona una sequenza di apprendimento",
"deleteModalTitle": "Eliminare il documento",
"deleteModalWarning": "Desideri davvero eliminare il documento <strong>\"{title}\"</strong>?<br> Una volta eseguita, loperazione non potrà più essere annullata.",
"expertDescription": "Fornisci ai tuoi allievi e alle tue allieve contenuti aggiuntivi.",
"fileLabel": "File",
"maxFileSize": "Dimensioni massime del file: 20 MB",
"modalAction": "Selezionare il file",
"modalFileName": "Nome",
"modalNameInformation": "Max. 70 caratteri",
"selectFile": "Seleziona un file",
"title": "Documenti",
"trainerDescription": "Trova contenuti aggiuntivi per la tua lezione su Teams.",
"trainerLinkSrc": "https://vbvbern.sharepoint.com/sites/myVBV-AFA_K-CI",
"trainerLinkText": "Visualizzare i contenuti su Teams",
"trainerTitle": "Supporto per trainer",
"uploadErrorMessage": "Si è verificato un errore durante il caricamento. Riprova.",
"userDescription": "Qui trovi ulteriori documenti che ti supporteranno nellapprendimento in questo Circle."
},
"duration": "Durata",
"gotQuestions": "Hai domande?",
"learnMore": "Ottieni maggiori informazioni"
},
"cockpit": {
"examsDone": "Esami sostenuti dal/dalla partecipante.",
"feedbacksDone": "Feedback inviati dal/dalla partecipante.",
"notifyTask": "Inviare notifica",
"notifyTaskDescription": "Inviare notifica al/alla partecipante",
"profileLink": "Mostrare il profilo",
"progress": "Partecipanti / Stato",
"tasksDone": "Incarichi di trasferimento completati dal/dalla partecipante.",
"title": "Cockpit"
},
"competences": {
"assessAgain": "Nuova auto-valutazione",
"assessment": "Valutazioni",
"competences": "Competenze",
"lastImprovements": "Ultime competenze migliorate",
"notAssessed": "Non valutato",
"title": "Navigatore Competenze"
},
"constants": {
"no": "No",
"satisfied": "soddisfatto/a",
"unsatisfied": "insoddisfatto/a",
"verySatisfied": "molto soddisfatto/a",
"veryUnsatisfied": "molto insoddisfatto/a",
"yes": "Sì"
},
"dashboard": {
"courses": "Corso",
"nocourses": "Non sei ancora stato/a assegnato/a a nessun corso.",
"welcome": "Ti diamo il benvenuto, {name}"
},
"feedback": {
"answers": "Risposte",
"areYouSatisfied": "Quanto sei soddisfatto/a?",
"average": "Media",
"circleFeedback": "Feedback sul Circle",
"completionDescription": "Il tuo feedback è anonimo. Il/La trainer non visualizzerà il tuo nome e cognome.",
"completionTitle": "Invia il tuo feedback a {name}",
"courseNegativeFeedbackLabel": "Dove vedi un potenziale di miglioramento?",
"coursePositiveFeedbackLabel": "Coshai apprezzato particolarmente?",
"feedbackPageInfo": "I/Le partecipanti hanno fornito il feedback",
"feedbackPageTitle": "Feedback sul corso",
"feedbackSent": "Il tuo feedback è stato inviato",
"goalAttainmentLabel": "Raggiungimento complessivo degli obiettivi",
"happy": "Soddisfatto/a",
"instructorCompetenceLabel": "Come valuti il livello di preparazione sui temi e le competenze specialistiche dellistruttore/istruttrice del corso?",
"instructorOpenFeedbackLabel": "Cosaltro vorresti ancora dire allistruttore/istruttrice del corso?",
"instructorRespectLabel": "Le domande e i suggerimenti dei/delle partecipanti al corso sono stati accolti e presi sul serio?",
"intro": "{name}, il tuo/la tua trainer ti invita a fornire un feedback su di lui/lei. È facoltativo, ma sarebbe utile per migliorare la tua esperienza di apprendimento.",
"materialsRatingLabel": "Se sì: qual è la valutazione dei documenti di preparazione (ad es. eLearning)?",
"noFeedbacks": "Non è stato fornito ancora nessun feedback",
"preparationTaskClarityLabel": "Gli incarichi di preparazione erano chiari e comprensibili?",
"proficiencyLabel": "Come valuti il tuo livello di preparazione sui temi dopo il corso?",
"questionTitle": "Domanda",
"recommendLabel": "Raccomanderesti il corso?",
"satisfactionLabel": "Soddisfazione complessiva",
"sendFeedback": "Inviare il feedback",
"sentByUsers": "Fornito da {count} partecipanti",
"showDetails": "Mostrare i dettagli",
"unhappy": "Insoddisfatto/a",
"veryHappy": "Molto soddisfatto/a",
"veryUnhappy": "Molto insoddisfatto/a"
},
"footer": {
"contact": "Contatti",
"contactLink": "https://www.vbv.ch/it/afa/organizzazione/contatto",
"contactText": "Contatti",
"copyright": "© 2023 AFA",
"dataProtectionLink": "https://www.vbv.ch/it/dichiarazione-di-protezione-dei-dati",
"dataProtectionText": "Dichiarazione sulla protezione dei dati",
"imprintLink": "https://www.vbv.ch/it/impressum",
"imprintText": "Impressum"
},
"general": {
"back": "Indietro",
"backCapitalized": "@.capitalize:general.back",
"backToCircle": "Torna al Circle",
"backToLearningPath": "Torna al percorso formativo",
"certificate": "Certificato | Certificati",
"circles": "Circle",
"close": "Chiudere",
"exam": "Esame| Esami",
"examResult": "Risultato dellesame | Risultati degli esami",
"feedback": "Feedback | Feedback",
"introduction": "Introduzione",
"learningPath": "Percorso formativo",
"learningSequence": "Sequenza di apprendimento",
"learningUnit": "Unità di apprendimento",
"next": "Avanti",
"nextStep": "Continua",
"no": "No",
"notification": "Notifica | Notifiche",
"profileLink": "Mostrare i dettagli",
"save": "Salvare",
"send": "Inviare",
"settings": "Impostazioni account",
"shop": "Shop",
"show": "Visualizzare",
"showAll": "Visualizzare tutto",
"start": "Si comincia",
"submission": "Consegna",
"title": "myAFA",
"transferTask": "Incarico di trasferimento | Incarichi di trasferimento",
"yes": "Sì"
},
"language": {
"de": "Deutsch",
"fr": "Français",
"it": "Italiano"
},
"learningContent": {
"markAsDone": "Contrassegnare come completato"
},
"learningPathPage": {
"currentCircle": "Circle attuale",
"listView": "Vista elenco",
"nextStep": "Prossimo passo",
"pathView": "Vista percorso",
"progressText": "Hai svolto { inProgressCount } Circle su { allCount }",
"showListView": "Mostrare la vista elenco",
"topics": "Temi:",
"welcomeBack": "Bentornato/a al tuo corso:"
},
"mainNavigation": {
"logout": "Logout",
"profile": "Profilo"
},
"mediaLibrary": {
"handlungsfelder": {
"description": "Trova tutte le risorse dei campi dazione, come materiali didattici, link e altre informazioni utili.",
"title": "Campo dazione | Campi dazione"
},
"learningMedia": {
"description": "Trova un elenco completo di libri e altri materiali a cui si rimanda nel corso.",
"titel": "Materiali didattici"
},
"title": "Mediateca"
},
"messages": {
"sendMessage": "Scrivere un messaggio"
},
"notifications": {
"load_more": "Caricare altro",
"no_notifications": "Al momento non hai nessuna notifica"
},
"selfEvaluation": {
"instruction": [
"Überprüfe, ob du in der Lernheinheit",
"alles verstanden hast.",
"Lies die folgende Aussage und bewerte sie:"
],
"no": "Devo riguardarlo ancora una volta",
"progressLink": "Aprire Navigatore Competenze",
"progressText": "Controlla i tuoi progressi nel Navigatore Competenze:",
"selfEvaluation": "Auto-valutazione",
"selfEvaluationNo": "@:selfEvaluation: Devo riguardarlo ancora una volta.",
"selfEvaluationYes": "@:selfEvaluation: Ho compreso tutto.",
"steps": "Passo {current} di {max}",
"title": "@:selfEvaluation.selfEvaluation {title}",
"yes": "Sì, ho compreso tutto"
},
"settings": {
"emailNotifications": "Notifiche e-mail"
}
}

View File

@ -943,6 +943,478 @@ def create_uk_fr_fahrzeug_casework(course_id=COURSE_UK_FR):
return assignment
def create_uk_it_fahrzeug_casework(course_id=COURSE_UK_FR):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
.get_children()
.exact_type(AssignmentListPage)
.first()
)
assignment = AssignmentFactory(
parent=assignment_list_page,
title="Verifica di una polizza di assicurazione veicoli a motore",
effort_required="Circa 3 ore",
intro_text=replace_whitespace(
"""
<h3>Situazione di partenza</h3>
<p>Un tuo amico/una tua amica o un tuo/una tua familiare vorrebbe sottoporre a verifica la propria polizza
assicurativa. Sapendo che conosci bene il ramo assicurativo, te la mostra chiedendoti di verificarla con sguardo
critico e di proporre eventualmente qualche modifica. In questo compito di controllo delle competenze puoi dare
prova delle tue conoscenze e capacità nel settore dellassicurazione veicoli a motore.
</p>
"""
),
performance_objectives=[
(
"performance_objective",
PerformanceObjectiveBlockFactory(
text="d2.pv.ci3: Illustrare le prestazioni e i prodotti nel settore assicurativo. (C2)"
),
),
(
"performance_objective",
PerformanceObjectiveBlockFactory(
text="c3.pv.ci11: Valutare con competenza le soluzioni assicurative più comuni (C3)."
),
),
],
evaluation_document_url="/static/media/assignments/it_üK1_FZ_09_NACH_KN_Beurteilungsraster.pdf",
evaluation_description="Strumento di valutazione del caso di studio guidato: «Verifica di una polizza di assicurazione veicoli a motore»",
)
assignment.evaluation_tasks = []
assignment.evaluation_tasks.append(
(
"task",
EvaluationTaskBlockFactory(
title="Situazione di partenza dellincarico",
description=RichText(
"Lapprendista ha descritto in modo completo la situazione di partenza dellincarico?"
),
max_points=6,
sub_tasks=ListValue(
ListBlock(EvaluationSubTaskBlock()),
values=[
EvaluationSubTaskBlockFactory(
title="La situazione di partenza dellincarico è stata descritta in modo completo:",
description=RichText(
replace_whitespace(
"""
<ul>
<li>Di cosa si tratta? Qual è il compito?</li>
<li>Il profilo del/della cliente e il rapporto con il/la cliente sono stati illustrati in modo chiaro e completo?</li>
<li>Letà del veicolo è stata documentata?</li>
<li>Quali sono le risorse a disposizione?</li>
</ul>
"""
)
),
points=6,
),
EvaluationSubTaskBlockFactory(
title="La situazione di partenza è stata descritta in larga misura in modo completo.",
points=4,
),
EvaluationSubTaskBlockFactory(
title="La situazione di partenza è incompleta: sono stati descritti solo due punti.",
points=2,
),
EvaluationSubTaskBlockFactory(
title="La situazione di partenza dellincarico è incompleta: nella descrizione mancano più di due punti.",
points=0,
),
],
),
),
),
)
assignment.evaluation_tasks.append(
(
"task",
EvaluationTaskBlockFactory(
title="Analisi contenutistica e struttura",
max_points=6,
description=RichText(
"Le coperture della polizza sono state documentate in modo chiaro e completo?"
),
sub_tasks=ListValue(
ListBlock(EvaluationSubTaskBlock()),
values=[
EvaluationSubTaskBlockFactory(
title="Lanalisi contiene tutte le coperture presenti nella polizza ed è ben strutturata.",
points=6,
),
EvaluationSubTaskBlockFactory(
title="Lanalisi contiene la maggior parte delle coperture presenti nella polizza ed è in larga misura ben strutturata.",
points=4,
),
EvaluationSubTaskBlockFactory(
title="Lanalisi è incompleta (mancano più di tre coperture) e non emerge un filo conduttore.",
points=2,
),
EvaluationSubTaskBlockFactory(
title="Nel complesso lanalisi non è chiara e mancano alcune coperture.",
points=0,
),
],
),
),
),
)
assignment.evaluation_tasks.append(
(
"task",
EvaluationTaskBlockFactory(
title="Raccomandazioni utili",
max_points=6,
description=RichText(
"Lapprendista ha ricavato raccomandazioni utili e appropriate?"
),
sub_tasks=ListValue(
ListBlock(EvaluationSubTaskBlock()),
values=[
EvaluationSubTaskBlockFactory(
title="Le raccomandazioni sono utili e motivate con chiarezza.",
points=6,
),
EvaluationSubTaskBlockFactory(
title="Le raccomandazioni sono in larga misura utili e motivate con chiarezza.",
points=4,
),
EvaluationSubTaskBlockFactory(
title="Le raccomandazioni non sono di grande utilità e sono motivate in modo incompleto.",
points=2,
),
EvaluationSubTaskBlockFactory(
title="Le raccomandazioni non sono né utili né motivate con chiarezza.",
points=0,
),
],
),
),
),
)
assignment.evaluation_tasks.append(
(
"task",
EvaluationTaskBlockFactory(
title="Qualità della riflessione",
max_points=3,
description=RichText(
"Lapprendista ha riflettuto sullo svolgimento dellanalisi guidata del caso?"
),
sub_tasks=ListValue(
ListBlock(EvaluationSubTaskBlock()),
values=[
EvaluationSubTaskBlockFactory(
title="La riflessione si riferisce allanalisi guidata del caso e include aspetti positivi e negativi illustrati con chiarezza.",
points=3,
),
EvaluationSubTaskBlockFactory(
title="La riflessione si riferisce allanalisi guidata del caso e include in larga misura aspetti positivi e negativi illustrati con chiarezza.",
points=2,
),
EvaluationSubTaskBlockFactory(
title="La riflessione è incompleta.",
points=1,
),
EvaluationSubTaskBlockFactory(
title="La riflessione non si riferisce al caso di studio guidato.",
points=0,
),
],
),
),
),
)
assignment.evaluation_tasks.append(
(
"task",
EvaluationTaskBlockFactory(
title="doneità degli insegnamenti",
max_points=3,
description=RichText(
"Lapprendista ha tratto insegnamenti idonei dalla riflessione?"
),
sub_tasks=ListValue(
ListBlock(EvaluationSubTaskBlock()),
values=[
EvaluationSubTaskBlockFactory(
title="Gli insegnamenti si riferiscono al caso di studio guidato e si rivelano utili.",
points=3,
),
EvaluationSubTaskBlockFactory(
title="Gli insegnamenti si riferiscono in larga misura al caso di studio guidato e si rivelano utili.",
points=2,
),
EvaluationSubTaskBlockFactory(
title="Gli insegnamenti si riferiscono solo in parte allanalisi guidata del caso e non si rivelano molto utili.",
points=1,
),
EvaluationSubTaskBlockFactory(
title="Gli insegnamenti non si riferiscono al caso di studio guidato.",
points=0,
),
],
),
),
),
)
assignment.tasks = []
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 1: Trovare unesempio di una polizza assicurativa",
# it is hard to create a StreamValue programmatically, we have to
# create a `StreamValue` manually. Ask Daniel and/or Ramon
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Chiedi a un amico/unamica o a un/una familiare di fornirti la sua polizza di assicurazione veicoli a motore."
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText(
"Sì, ho ricevuto una polizza assicurativa auto da qualcuno della mia famiglia o cerchia di amici."
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 2: Situazione del cliente e situazione iniziale",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
replace_whitespace(
"""
Illustra il caso del/della cliente e la situazione iniziale.
<ul>
<li>Disponi di tutte le informazioni che ti servono per effettuare la verifica della polizza?</li>
<li>Annotati le informazioni principali riguardanti lattuale rapporto assicurativo (ad es. da quanto tempo è assicurato il/la cliente e presso quale compagnia assicurativa, quanti anni ha il veicolo, qual è il profilo del/della cliente ecc.).</li>
</ul>
"""
)
)
),
),
("user_text_input", UserTextInputBlockFactory()),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 3: Assicurazione attuale",
# TODO: add document upload
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Mostra ora in dettaglio lattuale situazione assicurativa del tuo/della tua cliente."
)
),
),
("user_text_input", UserTextInputBlockFactory()),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 4: Le tue raccomandazioni",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Sulla base delle informazioni raccolte, elabora ora una raccomandazione."
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Consiglieresti al/alla cliente di stipulare coperture complementari? Motiva la tua raccomandazione."
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Elimineresti qualche copertura? Motiva la tua raccomandazione."
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Quando hai terminato il lavoro, spiega perché con la tua proposta il/la cliente beneficia di unassicurazione ottimale."
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 5: Riflessione",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Rifletti sul lavoro svolto e annotati le informazioni finora acquisite. Domandati:"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Ho affrontato bene questo caso di studio guidato? Motiva la tua valutazione."
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Cosa ha funzionato durante lo svolgimento di questo incarico?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Cosa non ha funzionato durante lo svolgimento di questo incarico?"
)
),
),
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Annotati tutte queste informazioni e caricale sulla piattaforma di apprendimento per sottoporle a valutazione."
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 6: Apprendimenti",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Trai i tuoi insegnamenti personali dallcompito parziale 5"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Cosa cambieresti nel tuo approccio se potessi ripetere lesperienza?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Coshai imparato di nuovo dallelaborazione dellincarico?"
)
),
),
],
),
),
)
)
# assignment.tasks.append(
# (
# "task",
# TaskBlockFactory(
# title="Compito parziale 7",
# content=StreamValue(
# TaskContentStreamBlock(),
# stream_data=[
# (
# "explanation",
# ExplanationBlockFactory(
# text=RichText(
# "Redigi un documento chiaro e ben strutturato e presentalo entro la scadenza."
# )
# ),
# ),
# ],
# ),
# ),
# )
# )
assignment.save()
return assignment
def create_uk_fahrzeug_prep_assignment(course_id=COURSE_UK_FR):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
@ -1280,7 +1752,7 @@ def create_uk_fr_fahrzeug_prep_assignment(course_id=COURSE_UK):
Situation de travail 4 : Conseiller les clients et soccuper des processus correspondants<br/>
<ul>
<li>d2.pv.ci3: Ils expliquent les services et les produits dans le domaine de lassurance. (C2)</li>
<li>2pv.ci4: Ils expliquent les processus et procédures dans le domaine de lassurance privée. (C2)</li>
<li>d2pv.ci4: Ils expliquent les processus et procédures dans le domaine de lassurance privée. (C2)</li>
</ul>
</p>
@ -1496,6 +1968,240 @@ def create_uk_fr_fahrzeug_prep_assignment(course_id=COURSE_UK):
return assignment
def create_uk_it_fahrzeug_prep_assignment(course_id=COURSE_UK):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
.get_children()
.exact_type(AssignmentListPage)
.first()
)
assignment = AssignmentFactory(
parent=assignment_list_page,
assignment_type=AssignmentType.PREP_ASSIGNMENT.name,
title="Veicolo, la mia prima auto",
effort_required="circa 3 ore",
intro_text=replace_whitespace(
"""
<h3>Competenze operative, situazioni di lavoro e obiettivi di valutazione</h3>
<p>
Competenza operativa d2: condurre colloqui informativi e di consulenza con la clientela o i fornitori<br/>
Situazione di lavoro 4: fornire consulenza alla clientela e gestire i relativi processi<br/>
<ul>
<li>d2.pv.ci3: Illustrare le prestazioni e i prodotti nel settore assicurativo. (C2)</li>
<lid2.pv.ci4: Illustrare i processi e le procedure nel settore delle assicurazioni private. (C2)</li>
</ul>
</p>
<p>
Competenza operativa e4: preparare a livello multimediale contenuti riferiti allazienda<br/>
Situazione di lavoro 1: integrare le caratteristiche del settore e i punti di forza dellazienda<br/>
<ul>
<li>e4.pv.ci1: Illustrare i servizi dellazienda. (C2)</li>
<li>e4.pv.ci2: Distinguere i concorrenti nel ramo assicurativo privato sulla base di criteri rilevanti. (C2)</li>
<li>e4.pv.ci4: Illustrare gli elementi di base dei prodotti delle assicurazioni private. (C2)</li>
</ul>
</p>
<h3>Situazione di partenza</h3>
<p>
Fai finta di aver appena superato lesame di guida e di poterti finalmente spostare in autonomia.
Quale sarà la tua prima auto? Naturalmente vuoi anche proteggerla e assicurarla come si deve.
</p>
"""
),
performance_objectives=[],
)
assignment.tasks = []
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 1: Ottieni una panoramica iniziale dell'argomento",
# it is hard to create a StreamValue programmatically, we have to
# create a `StreamValue` manually. Ask Daniel and/or Ramon
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
'Fatti una prima idea dellargomento. Guarda il seguente video: <a href="https://www.youtube.com/watch?v=Z1icU7IZ7yI" target="_blank">Come funziona unassicurazione auto? I punti chiave</a>'
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText("Sì, ho visto il video e ho capito.")
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 2: Leggere il capitolo “Il diritto della responsabilità civile e Lassicurazione dei veicoli a motore”",
# it is hard to create a StreamValue programmatically, we have to
# create a `StreamValue` manually. Ask Daniel and/or Ramon
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Leggi e studia i capitoli inerenti allargomento nel libro Diritto della responsabilità civile e assicurazione veicoli a motore."
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText("Sì, ho letto e compreso il capitolo.")
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 3: Creare unofferta",
# it is hard to create a StreamValue programmatically, we have to
# create a `StreamValue` manually. Ask Daniel and/or Ramon
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
replace_whitespace(
"""
<p>Ora si comincia! Redigi unofferta per la tua prima auto. Rifletti sulle coperture assolutamente indispensabili e su quelle che vorresti stipulare in aggiunta.
Per farlo, utilizza lapposito strumento messo a disposizione dalla tua azienda. In alternativa puoi anche avvalerti di uno strumento online.</p>
<p>
Potresti dover «ritoccare» un po il tuo anno di nascita per poter redigere unofferta destinata a te.
</p>
"""
)
)
),
),
(
"user_confirmation",
ExplanationBlockFactory(
text=RichText("Sì, ho fatto un'offerta.")
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 4: Note e domande",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"Durante il processo prendi appunti rispondendo alle seguenti domande:"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Quali passaggi hai seguito per redigere lofferta?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Quali difficoltà hai incontrato nel redigere lofferta? Come le hai risolte?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Quali dati sono assolutamente necessari per poter redigere unofferta accurata riguardante un veicolo a motore?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Quali ulteriori coperture hai scelto? Quali sono state le tue considerazioni in merito?"
)
),
),
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Quali sono i fattori/gli elementi che determinano in misura maggiore lammontare del premio?"
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Sottocompito 5: Formazione di presenza",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"explanation",
ExplanationBlockFactory(
text=RichText(
"<p>Porta lofferta e gli appunti al training in presenza.</p>"
"<p>Non dimenticare le relative CGA. Va bene anche se porti con te i documenti solo in formato elettronico.</p>"
)
),
),
],
),
),
)
)
assignment.save()
return assignment
def create_uk_kickoff_prep_assignment(course_id=COURSE_UK):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
@ -2276,6 +2982,159 @@ def create_uk_fr_reflection(course_id=COURSE_UK_FR, circle_title="Véhicule"):
return assignment
def create_uk_it_reflection(course_id=COURSE_UK_FR, circle_title="Véhicule"):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)
.get_children()
.exact_type(AssignmentListPage)
.first()
)
assignment = AssignmentFactory(
parent=assignment_list_page,
assignment_type=AssignmentType.REFLECTION.name,
title=f"Reflexion",
effort_required="",
intro_text=replace_whitespace(
"""
<p>
Tu as reçu beaucoup de nouveaux contenus et d'inputs dans ce Circle. Il est maintenant temps de jeter à nouveau un coup d'œil sur ton profil de compétences. Répondre aux questions de réflexion t'aide à rendre visible et compréhensible ton propre processus d'apprentissage et de réflexion. Elle met en évidence tes forces et tes faiblesses personnelles pendant l'élaboration et t'aide à t'améliorer en permanence.
</p>
"""
),
performance_objectives=[],
)
assignment.tasks = []
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Question 1: Qu'est-ce que je réussis déjà bien?",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"user_text_input",
UserTextInputBlockFactory(),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Question 2: Approfondissment",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Où dois-je encore approfondir ou répéter? "
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Question 3: Qu'est-ce que je retiens?",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"user_text_input",
UserTextInputBlockFactory(),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Question 4: Préparation",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Comment me suis-je préparé(e) au Cercle (par ex. en prévoyant du temps d'étude)?"
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Question 5: Cours de présence",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Quel a été mon degré d'engagement dans les cours de présence?"
)
),
),
],
),
),
)
)
assignment.tasks.append(
(
"task",
TaskBlockFactory(
title="Question 6: Amélioration",
content=StreamValue(
TaskContentStreamBlock(),
stream_data=[
(
"user_text_input",
UserTextInputBlockFactory(
text=RichText(
"Qu'est-ce que je veux changer/améliorer dans le processus d'apprentissage pour le prochain Circle?"
)
),
),
],
),
),
)
)
assignment.save()
return assignment
def create_uk_it_reflection(course_id=COURSE_UK_FR, circle_title="Véhicule"):
assignment_list_page = (
CoursePage.objects.get(course_id=course_id)

View File

@ -4,7 +4,7 @@ from vbv_lernwelt.competence.factories import (
PerformanceCriteriaFactory,
)
from vbv_lernwelt.competence.models import CompetencePage
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR, COURSE_UK_IT
from vbv_lernwelt.course.models import CoursePage
from vbv_lernwelt.learnpath.models import LearningPath, LearningUnit
@ -281,7 +281,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="c3.pv.ci2",
title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -291,7 +291,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="c3.pv.ci7",
title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -301,7 +301,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="c3.pv.ci11",
title="Je suis capable de d'évaluer de manière compétente les solutions dassurance courantes dans le domaine d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -311,7 +311,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="d2.pv.ci1",
title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -321,7 +321,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="d2.pv.ci2",
title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -331,7 +331,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="d2.pv.ci3",
title="Je suis capable de d'expliquer les services et les produits dans le champ d&#39;action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -341,7 +341,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="d2.pv.ci4",
title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -351,7 +351,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="e4.pv.ci1",
title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -361,7 +361,7 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="e4.pv.ci2",
title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -371,6 +371,159 @@ def create_uk_fr_competence_profile(course_id=COURSE_UK_FR):
competence_id="e4.pv.ci4",
title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
def create_uk_it_competence_profile(course_id=COURSE_UK_IT):
course_page = CoursePage.objects.get(course_id=course_id)
slug_prefix = course_page.get_children().exact_type(LearningPath).first().slug
competence_profile_page = CompetenceProfilePageFactory(
title="KompetenzNavi",
parent=course_page,
)
competences = [
{
"competence_id": "e4",
"title": "Betriebsbezogene Inhalte multimedial aufbereiten",
"items": [],
},
{
"competence_id": "c3",
"title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
"items": [],
},
{
"competence_id": "e2",
"title": "Informationen im wirtschaftlichen und kaufmännischen Bereich recherchieren",
"items": [],
},
{
"competence_id": "d2",
"title": "Informations- und Beratungsgespräche mit Kunden oder Lieferanten führen",
"items": [],
},
{
"competence_id": "d3",
"title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
"items": [],
},
{
"competence_id": "d1",
"title": "Anliegen von Kunden oder Lieferanten entgegennehmen",
"items": [],
},
]
for c in competences:
CompetencePageFactory(
parent=competence_profile_page,
competence_id=c["competence_id"],
title=c["title"],
items=[("item", i) for i in c["items"]],
)
# Circle Fahrzeug
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ci2",
title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ci7",
title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ci11",
title="Je suis capable de d'évaluer de manière compétente les solutions dassurance courantes dans le domaine d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci1",
title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci2",
title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci3",
title="Je suis capable de d'expliquer les services et les produits dans le champ d&#39;action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci4",
title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ci1",
title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ci2",
title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ci4",
title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)

View File

@ -220,7 +220,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="c3.pv.ci2",
title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -230,7 +230,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="c3.pv.ci7",
title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -240,7 +240,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="c3.pv.ci11",
title="Je suis capable de d'évaluer de manière compétente les solutions dassurance courantes dans le domaine d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -250,7 +250,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="d2.pv.ci1",
title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -260,7 +260,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="d2.pv.ci2",
title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -270,7 +270,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="d2.pv.ci3",
title="Je suis capable de d'expliquer les services et les produits dans le champ d&#39;action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -280,7 +280,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="d2.pv.ci4",
title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -290,7 +290,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="e4.pv.ci1",
title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -300,7 +300,7 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="e4.pv.ci2",
title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
PerformanceCriteriaFactory(
@ -310,6 +310,159 @@ def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
competence_id="e4.pv.ci4",
title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-véhicule-lu-vorbereitung"
slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
),
)
def create_uk_it_training_competence_profile(course_id=COURSE_UK):
course_page = CoursePage.objects.get(course_id=course_id)
slug_prefix = course_page.get_children().exact_type(LearningPath).first().slug
competence_profile_page = CompetenceProfilePageFactory(
title="KompetenzNavi",
parent=course_page,
)
competences = [
{
"competence_id": "c3",
"title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
"items": [],
},
{
"competence_id": "e2",
"title": "Informationen im wirtschaftlichen und kaufmännischen Bereich recherchieren",
"items": [],
},
{
"competence_id": "e4",
"title": "Betriebsbezogene Inhalte multimedial aufbereiten",
"items": [],
},
{
"competence_id": "d2",
"title": "Informations- und Beratungsgespräche mit Kunden oder Lieferanten führen",
"items": [],
},
{
"competence_id": "d3",
"title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
"items": [],
},
{
"competence_id": "d1",
"title": "Anliegen von Kunden oder Lieferanten entgegennehmen",
"items": [],
},
]
for c in competences:
print(c["title"])
CompetencePageFactory(
parent=competence_profile_page,
competence_id=c["competence_id"],
title=c["title"],
items=[("item", i) for i in c["items"]],
)
# Circle Fahrzeug
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ci2",
title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ci7",
title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
),
competence_id="c3.pv.ci11",
title="Je suis capable de d'évaluer de manière compétente les solutions dassurance courantes dans le domaine d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci1",
title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci2",
title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci3",
title="Je suis capable de d'expliquer les services et les produits dans le champ d&#39;action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
),
competence_id="d2.pv.ci4",
title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ci1",
title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ci2",
title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)
PerformanceCriteriaFactory(
parent=CompetencePage.objects.get(
slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
),
competence_id="e4.pv.ci4",
title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
learning_unit=LearningUnit.objects.get(
slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
),
)

View File

@ -5,3 +5,5 @@ COURSE_VERSICHERUNGSVERMITTLERIN_ID = -4
COURSE_UK_FR = -5
COURSE_UK_TRAINING = -6
COURSE_UK_TRAINING_FR = -7
COURSE_UK_IT = -8
COURSE_UK_TRAINING_IT = -9

View File

@ -0,0 +1,45 @@
UK_IT_CIRCLE_GOALS = {
"fahrzeug": """
<p class="mt-4">Per molte persone l'auto è il loro più grande orgoglio e gioia. Ma è anche un grande potenziale
di pericolo. Con i prezzi dei veicoli e i costi di riparazione di oggi, si arriva rapidamente a somme considerevoli,
che spesso il proprietario del veicolo ha difficoltà a pagare da solo in caso di sinistro grave. L'assicurazione
dei veicoli a motore serve a proteggere te e gli altri utenti della strada in caso di incidente e a fornire una
protezione finanziaria. Questo Circle ti aiuta a tenere una visione d'insieme della giungla assicurativa dei
veicoli a motore e ad essere sicuri sulla strada! </p>
<p class="mt-4">In questo Circle, costruirai la tua capacità di agire su questi temi:</p>
<ul>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Come proteggere l'auto in modo ottimale</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Le caratteristiche principali del diritto sulla responsabilità civile</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Quali sono gli aspetti da considerare quando si fa un'offerta</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Come si presenta la soluzione al cliente</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>Il processo dalla domanda alla politica</li>
</ul>
<p class="mt-4">Lavorate sui seguenti obiettivi di valutazione del profilo di qualificazione:</p>
<ul>
<li class="flex items-center"><it-icon-check class="hidden h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci2: Spiegano in modo appropriato alla situazione le basi giuridiche rilevanti del loro settore. (C2)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci7: Spiegano le disposizioni legali inerenti i sinistri e i casi di prestazioni. (C2)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci11: Valutano in modo competente le usuali soluzioni assicurative. (C3)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci1: Illustrano in modo completo le principali basi legali per il settore assicurativo. (C2)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci2: Indicano i prodotti e i servizi rilevanti in campo assicurativo. (C1)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci3: Spiegano i prodotti e le prestazioni in ambito assicurativo. (C2)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci4: Spiegano in modo comprensivo i processi e le procedure inerenti le assicurazioni private. (C2)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>e4.pv.ci1: Spiegano i servizi dell'azienda. (C2)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>e4.pv.ci2: Fanno distinzione fra i concorrenti del settore dell'assicurazione privata sulla base dei criteri rilevanti. (C2)</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>e4.pv.ci4: Illustrano gli elementi fondamentali dei prodotti delle assicurazioni private. (C2)</li>
</ul>
<h3 class="mt-4">Obiettivi di valutazione per l'autovalutazione:</h3>
<p class="mt-4">Sono capace...</p>
<ul>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci2: ... di spiegare le basi giuridiche rilevanti nel campo dazione del veicolo in modo adeguato alla situazione.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci7: ... di spiegare le disposizioni di legge per le richieste di risarcimento e le prestazioni nel campo d'azione del veicolo.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>c3.pv.ci11: ... di valutare con competenza le attuali soluzioni assicurative nel campo dazione del veicolo.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci1: ... di descrivere in modo esauriente le basi giuridiche più importanti nel campo dell'assicurazione dei veicoli a motore.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci2: ... di nominare i servizi e i prodotti rilevanti nel campo d'azione del veicolo.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci3: ... di spiegare i servizi e i prodotti nel campo d'azione del veicolo.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>d2.pv.ci4: ... di spiegare i processi e le procedure nel campo d'azione del veicolo.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>e4.pv.ci1: ... di spiegare i servizi della propria azienda nel campo d'azione del veicolo.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>e4.pv.ci2: ... di distinguere i concorrenti del settore assicurativo privato nel campo d'azione del veicolo sulla base dei criteri pertinenti.</li>
<li class="flex items-center"><it-icon-check class="h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>e4.pv.ci4: ... di spiegare le basi dei prodotti assicurativi per veicoli a motore.</li>
</ul>
""",
}

View File

@ -8,8 +8,9 @@ from wagtail_localize.models import LocaleSynchronization
from vbv_lernwelt.assignment.models import Assignment
from vbv_lernwelt.core.admin import User
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR, COURSE_UK_IT
from vbv_lernwelt.course.creators.uk_circle_goals_fr import UK_FR_CIRCLE_GOALS
from vbv_lernwelt.course.creators.uk_circle_goals_it import UK_IT_CIRCLE_GOALS
from vbv_lernwelt.course.models import CoursePage
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
CircleFactory,
@ -143,6 +144,62 @@ def create_uk_fr_learning_path(course_id=COURSE_UK_FR, user=None, skip_locales=T
Page.objects.update(owner=user)
def create_uk_it_learning_path(course_id=COURSE_UK_IT, user=None, skip_locales=True):
if user is None:
user = User.objects.get(username="info@iterativ.ch")
site = Site.objects.filter(is_default_site=True).first()
if not site:
site = wagtail_factories.SiteFactory(is_default_site=True)
if settings.APP_ENVIRONMENT == "development":
site.port = 8000
site.save()
course_page = CoursePage.objects.get(course_id=course_id)
lp = LearningPathFactory(
title="Lernpfad",
parent=course_page,
)
TopicFactory(title="1ère année", is_visible=True, parent=lp)
create_uk_fr_circle_kickoff(lp, title="Introduzione")
create_uk_fr_circle_basis(lp, title="Base")
create_uk_it_circle_fahrzeug(lp, title="Veicolo")
create_uk_circle(lp, title="Budget Partie 1")
create_uk_circle(lp, title="Budget Partie 2")
TopicFactory(title="2ème année", is_visible=True, parent=lp)
create_uk_circle(lp, title="Voyages / Protection juridique")
create_uk_circle(lp, title="Proprieté du logement")
create_uk_circle(lp, title="PME Partie 1")
create_uk_circle(lp, title="PME Partie 2")
create_uk_circle(lp, title="Concept des 3")
create_uk_circle(lp, title="Garantie des revenus, Partie 1")
create_uk_circle(lp, title="Garantie des revenus, Partie 2")
create_uk_circle(lp, title="Retraite")
TopicFactory(title="3ème année", is_visible=True, parent=lp)
create_uk_circle(lp, title="Santé")
create_uk_circle(lp, title="Préparation à l'examen, Partie 1")
create_uk_circle(lp, title="Préparation à l'examen, Partie 2")
# locales
if not skip_locales:
locale_de = Locale.objects.get(language_code="de-CH")
locale_fr, _ = Locale.objects.get_or_create(language_code="fr-CH")
LocaleSynchronization.objects.get_or_create(
locale_id=locale_fr.id, sync_from_id=locale_de.id
)
locale_it, _ = Locale.objects.get_or_create(language_code="it-CH")
LocaleSynchronization.objects.get_or_create(
locale_id=locale_it.id, sync_from_id=locale_de.id
)
call_command("sync_locale_trees")
# all pages belong to 'admin' by default
Page.objects.update(owner=user)
def create_uk_circle(lp, title="Kickoff"):
circle = CircleFactory(
title=title,
@ -198,15 +255,15 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
title="Unterlagen für den Unterricht",
parent=circle,
)
LearningContentFeedbackFactory(
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Kompetenznachweis", title_hidden=True, parent=circle)
LearningContentPlaceholderFactory(
title="Wissens- und Verständnisfragen",
parent=circle,
)
LearningContentFeedbackFactory(
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Transfer", parent=circle)
LearningContentPlaceholderFactory(
title="Reflexion",
@ -475,6 +532,11 @@ In diesem Circle lernst du die wichtigsten Grundlagen bezüglich Versicherungswi
),
],
)
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
LearningContentFeedbackFactory(
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Kompetenznachweis", title_hidden=True, parent=circle)
LearningContentTestFactory(
title="Wissens- und Verständnisfragen",
@ -485,12 +547,7 @@ In diesem Circle lernst du die wichtigsten Grundlagen bezüglich Versicherungswi
checkbox_text="Hiermit bestätige ich, dass ich die Anweisungen verstanden habe und den Test durchführen möchte.",
content_url="https://exam.vbv-afa.ch/",
)
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
LearningContentFeedbackFactory(
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Reflexion", parent=circle)
LearningUnitFactory(title="Reflexion", title_hidden=True, parent=circle)
LearningContentAssignmentFactory(
title="Reflexion",
assignment_type="REFLECTION",
@ -583,6 +640,11 @@ In diesem Circle lernst du die wichtigsten Grundlagen bezüglich Versicherungswi
),
],
)
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
LearningContentFeedbackFactory(
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Kompetenznachweis", title_hidden=True, parent=circle)
LearningContentTestFactory(
title="Wissens- und Verständnisfragen",
@ -593,12 +655,7 @@ In diesem Circle lernst du die wichtigsten Grundlagen bezüglich Versicherungswi
checkbox_text="Hiermit bestätige ich, dass ich die Anweisungen verstanden habe und den Test durchführen möchte.",
content_url="https://exam.vbv-afa.ch/",
)
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
LearningContentFeedbackFactory(
parent=circle,
)
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(title="Reflexion", parent=circle)
LearningUnitFactory(title="Reflexion", title_hidden=True, parent=circle)
LearningContentAssignmentFactory(
title="Reflexion",
assignment_type="REFLECTION",
@ -754,7 +811,7 @@ def create_uk_fr_circle_fahrzeug(lp, title="Véhicule"):
)
course_slug = lp.slug.replace("-lp", "")
LearningSequenceFactory(title="Préparation", parent=circle, icon="it-icon-ls-start")
LearningUnitFactory(title="Vorbereitung", title_hidden=True, parent=circle)
LearningUnitFactory(title="Préparation", title_hidden=True, parent=circle)
LearningContentMediaLibraryFactory(
title=f"Champs daction «Véhicule à moteur»",
parent=circle,
@ -828,7 +885,7 @@ def create_uk_fr_circle_fahrzeug(lp, title="Véhicule"):
title="Aperçu casco",
description="",
icon_url="/static/icons/demo/icon-hf-book.png",
link_display_text="Aperçu casco",
link_display_text="Afficher le document",
url="/static/media/uk/fr_üK1_FZ_07_Kasko.pdf",
),
),
@ -881,6 +938,144 @@ def create_uk_fr_circle_fahrzeug(lp, title="Véhicule"):
),
def create_uk_it_circle_fahrzeug(lp, title="Veicolo"):
circle = CircleFactory(
title=title,
parent=lp,
description="In questo Cercle imparerai tutto ciò che riguarda l'assicurazione dei veicoli a motore.",
goals=UK_IT_CIRCLE_GOALS["fahrzeug"],
)
course_slug = lp.slug.replace("-lp", "")
LearningSequenceFactory(
title="Preparazione", parent=circle, icon="it-icon-ls-start"
)
LearningUnitFactory(title="Preparazione", title_hidden=True, parent=circle)
LearningContentMediaLibraryFactory(
title=f"Campo dazione «Veicolo»",
parent=circle,
description=RichText(
f"<p>Nella mediateca, sotto il campo d'azione «Veicolo», troverai tutte le risorse rilevanti per le tue competenze professionali.</p>"
f"<p>Si consiglia di leggere l'argomento prima di completare le altre unità di apprendimento.</p>"
),
content_url=f"/course/{course_slug}/media/category/{slugify(title)}",
)
LearningContentAssignmentFactory(
title="Veicolo, la mia prima auto",
assignment_type="PREP_ASSIGNMENT",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith=f"{course_slug}-assignment-veicolo-la-mia-prima-auto"
),
),
LearningSequenceFactory(title="Formazione", parent=circle)
LearningUnitFactory(title="Corso di presenza", title_hidden=True, parent=circle)
LearningContentAttendanceCourseFactory(
title="Corso di presenza veicolo",
parent=circle,
)
LearningContentDocumentListFactory(
title="Documenti",
parent=circle,
documents=[
# (
# "document",
# LearnMediaBlockFactory(
# title="Présentation",
# description="",
# icon_url="/static/icons/demo/icon-hf-book.png",
# link_display_text="Afficher le document",
# url="/static/media/uk/fr_üK1_FZ_00_Prгentation.pdf",
# ),
# ),
(
"document",
LearnMediaBlockFactory(
title="Termini",
description="",
icon_url="/static/icons/demo/icon-hf-book.png",
link_display_text="Mostra documento",
url="/static/media/uk/it_üK1_FZ_02_Begriffe.pdf",
),
),
(
"document",
LearnMediaBlockFactory(
title="Lista di controllo",
description="",
icon_url="/static/icons/demo/icon-hf-book.png",
link_display_text="Mostra documento",
url="/static/media/uk/it_üK1_FZ_04_Checkliste.pdf",
),
),
(
"document",
LearnMediaBlockFactory(
title="Scheda sinistri",
description="",
icon_url="/static/icons/demo/icon-hf-book.png",
link_display_text="Mostra documento",
url="/static/media/uk/it_üK1_FZ_05_A_Schaden.pdf",
),
),
(
"document",
LearnMediaBlockFactory(
title="Panoramica casco",
description="",
icon_url="/static/icons/demo/icon-hf-book.png",
link_display_text="Mostra documento",
url="/static/media/uk/it_üK1_FZ_07_Kasko.pdf",
),
),
(
"document",
LearnMediaBlockFactory(
title="Offerta e successivo colloquio di vendita",
description="",
icon_url="/static/icons/demo/icon-hf-book.png",
link_display_text="Mostra documento",
url="/static/media/uk/it_üK1_FZ_08_A_Offerte-und-Verkaufsgespraech.pdf",
),
),
(
"document",
LearnMediaBlockFactory(
title="Riserva scheda sinistri",
description="",
icon_url="/static/icons/demo/icon-hf-book.png",
link_display_text="Mostra documento",
url="/static/media/uk/it_üK1_FZ_A_Reserve_Schaden.pdf",
),
),
],
)
LearningUnitFactory(title="Feedback", title_hidden=True, parent=circle)
LearningContentFeedbackFactory(
parent=circle,
)
LearningSequenceFactory(title="Trasferimento", parent=circle, icon="it-icon-ls-end")
LearningUnitFactory(
title="Controllo delle competenze", title_hidden=True, parent=circle
)
LearningContentAssignmentFactory(
title="Verifica di una polizza di assicurazione veicoli a motore",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith=f"{course_slug}-assignment-verifica-di-una-polizza-di-assicurazione-veicoli-a-motore"
),
),
LearningUnitFactory(title="Riflessione", title_hidden=True, parent=circle)
LearningContentAssignmentFactory(
title="Riflessione",
assignment_type="REFLECTION",
parent=circle,
content_assignment=Assignment.objects.get(
slug__startswith=f"{course_slug}-assignment-riflessione"
),
),
UK_CIRCLE_GOALS = {
"kickoff": """
<p class="mt-4">Hey, willkommen im ersten überbetrieblichen Kurs! Du bist in einer spannenden Branche gelandet. Wir wissen, dass es am Anfang oft eine Herausforderung sein kann, sich in einem neuen Umfeld zurechtzufinden und die vielen neuen Eindrücke zu verarbeiten. Aber keine Sorge, wir sind hier, um dir dabei zu helfen. In deiner Ausbildung wirst du viele neue Fähigkeiten erlernen und dein Wissen vertiefen. In diesem Circle helfen wir dir dabei, den Überblick zu gewinnen und dich mit den neuen Arbeitsabläufen und myVBV vertraut zu machen. Lass uns gemeinsam diese neue Herausforderung meistern und das Beste aus deiner Ausbildung herausholen! </p>

View File

@ -5,10 +5,15 @@ from wagtail.models import Locale, Page, Site
from wagtail_localize.models import LocaleSynchronization
from vbv_lernwelt.core.admin import User
from vbv_lernwelt.course.consts import COURSE_UK_TRAINING, COURSE_UK_TRAINING_FR
from vbv_lernwelt.course.consts import (
COURSE_UK_TRAINING,
COURSE_UK_TRAINING_FR,
COURSE_UK_TRAINING_IT,
)
from vbv_lernwelt.course.creators.uk_course import (
create_uk_circle_fahrzeug,
create_uk_fr_circle_fahrzeug,
create_uk_it_circle_fahrzeug,
)
from vbv_lernwelt.course.models import CoursePage
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
@ -44,6 +49,9 @@ def create_uk_training_learning_path(
elif course_id == COURSE_UK_TRAINING_FR:
TopicFactory(title="Training", is_visible=True, parent=lp)
create_uk_fr_circle_fahrzeug(lp)
elif course_id == COURSE_UK_TRAINING_IT:
TopicFactory(title="Training", is_visible=True, parent=lp)
create_uk_it_circle_fahrzeug(lp)
# locales
if not skip_locales:

View File

@ -10,6 +10,9 @@ from vbv_lernwelt.assignment.creators.create_assignments import (
create_uk_fr_fahrzeug_casework,
create_uk_fr_fahrzeug_prep_assignment,
create_uk_fr_reflection,
create_uk_it_fahrzeug_casework,
create_uk_it_fahrzeug_prep_assignment,
create_uk_it_reflection,
create_uk_kickoff_prep_assignment,
create_uk_reflection,
create_vv_einkommenssicherung_casework,
@ -23,9 +26,11 @@ from vbv_lernwelt.assignment.tests.assignment_factories import AssignmentListPag
from vbv_lernwelt.competence.create_uk_competence_profile import (
create_uk_competence_profile,
create_uk_fr_competence_profile,
create_uk_it_competence_profile,
)
from vbv_lernwelt.competence.create_uk_training_competence_profile import (
create_uk_fr_training_competence_profile,
create_uk_it_training_competence_profile,
create_uk_training_competence_profile,
)
from vbv_lernwelt.competence.create_vv_new_competence_profile import (
@ -38,13 +43,16 @@ from vbv_lernwelt.course.consts import (
COURSE_TEST_ID,
COURSE_UK,
COURSE_UK_FR,
COURSE_UK_IT,
COURSE_UK_TRAINING,
COURSE_UK_TRAINING_FR,
COURSE_UK_TRAINING_IT,
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
)
from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.creators.uk_course import (
create_uk_fr_learning_path,
create_uk_it_learning_path,
create_uk_learning_path,
)
from vbv_lernwelt.course.creators.uk_training_course import (
@ -92,8 +100,10 @@ ADMIN_EMAILS = ["info@iterativ.ch", "admin"]
COURSE_UK,
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
COURSE_UK_FR,
COURSE_UK_IT,
COURSE_UK_TRAINING,
COURSE_UK_TRAINING_FR,
COURSE_UK_TRAINING_IT,
],
)
def command(course):
@ -118,6 +128,9 @@ def command(course):
if COURSE_UK_FR in course:
create_course_uk_fr()
if COURSE_UK_IT in course:
create_course_uk_it()
if COURSE_TEST_ID in course:
create_test_course(with_sessions=True)
@ -127,6 +140,9 @@ def command(course):
if COURSE_UK_TRAINING_FR in course:
create_course_training_fr()
if COURSE_UK_TRAINING_IT in course:
create_course_training_it()
def create_versicherungsvermittlerin_course():
# Versicherungsvermittler/in mit neuen Circles
@ -392,6 +408,29 @@ def create_course_uk_fr():
csu.expert.add(fr_circle)
def create_course_uk_it():
# Überbetriebliche Kurse FR
course = create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK_IT, title="Corso interaziendale"
)
# assignments create assignments parent page
_assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage,
)
create_uk_it_fahrzeug_casework(course_id=COURSE_UK_IT)
create_uk_it_fahrzeug_prep_assignment(course_id=COURSE_UK_IT)
create_uk_it_reflection(course_id=COURSE_UK_IT)
create_uk_it_learning_path(course_id=COURSE_UK_IT)
create_uk_it_competence_profile(course_id=COURSE_UK_IT)
create_default_media_library(course_id=COURSE_UK_IT)
_cs = CourseSession.objects.create(
course_id=COURSE_UK_IT,
title="Corso interaziendale Ticino",
)
def create_course_uk_de_assignment_completion_data(assignment, course_session, user):
subtasks = assignment.filter_user_subtasks(subtask_types=["user_text_input"])
for index, subtask in enumerate(subtasks):
@ -632,3 +671,90 @@ def create_course_training_fr():
)
csu.save()
def create_course_training_it():
# Test Lehrgang für üK Trainer FR
course = create_versicherungsvermittlerin_with_categories(
course_id=COURSE_UK_TRAINING_IT, title="myVBV Training (IT)"
)
# assignments create assignments parent page
_assignment_list_page = AssignmentListPageFactory(
parent=course.coursepage,
)
create_uk_it_fahrzeug_casework(course_id=COURSE_UK_TRAINING_IT)
create_uk_it_fahrzeug_prep_assignment(course_id=COURSE_UK_TRAINING_IT)
create_uk_it_reflection(course_id=COURSE_UK_TRAINING_IT)
create_uk_training_learning_path(course_id=COURSE_UK_TRAINING_IT)
create_uk_it_training_competence_profile(course_id=COURSE_UK_TRAINING_IT)
create_default_media_library(course_id=COURSE_UK_TRAINING_IT)
current_dir = os.path.dirname(os.path.realpath(__file__))
print(current_dir)
course = Course.objects.get(id=COURSE_UK_TRAINING_IT)
import_course_sessions_from_excel(
course,
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
language="it",
)
import_trainers_from_excel(
course,
f"{current_dir}/../../../importer/tests/Schulungen_Durchfuehrung_Trainer.xlsx",
language="it",
)
import_students_from_excel(
f"{current_dir}/../../../importer/tests/Schulungen_Teilnehmende.xlsx",
)
for cs in CourseSession.objects.filter(course_id=COURSE_UK_TRAINING_IT):
cs.assignment_details_list = [
{
"learningContentId": LearningContentAssignment.objects.get(
slug=f"{course.slug}-lp-circle-veicolo-lc-verifica-di-una-polizza-di-assicurazione-veicoli-a-motore"
).id,
"submissionDeadlineDateTimeUtc": "2023-06-20T19:00:00Z",
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
},
{
"learningContentId": LearningContentAssignment.objects.get(
slug=f"{course.slug}-lp-circle-veicolo-lc-veicolo-la-mia-prima-auto"
).id,
"submissionDeadlineDateTimeUtc": "2023-06-20T19:00:00Z",
"evaluationDeadlineDateTimeUtc": "2023-06-27T19:00:00Z",
},
]
cs.save()
# attach users as trainers to ÜK course
course_uk = Course.objects.filter(id=COURSE_UK_IT).first()
if course_uk:
users = [
csu.user
for csu in CourseSessionUser.objects.filter(
course_session__course_id=COURSE_UK_TRAINING_IT
)
]
cs = CourseSession.objects.get(
course_id=COURSE_UK_IT,
title="Corso interaziendale Ticino",
)
for user in users:
csu, _created = CourseSessionUser.objects.get_or_create(
course_session_id=cs.id, user_id=user.id
)
csu.role = CourseSessionUser.Role.EXPERT
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-kickoff")
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-basis")
)
csu.expert.add(
Circle.objects.get(slug="überbetriebliche-kurse-lp-circle-fahrzeug")
)
csu.save()

View File

@ -108,52 +108,45 @@ def create_or_update_course_session(
cs.import_id = import_id
cs.save()
for circle in circles:
if language == "de":
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
slug=f"{course.slug}-lp-circle-{circle.lower()}-lc-präsenzkurs-{circle.lower()}"
)
if attendance_course_lp_qs.exists():
cs.attendance_courses.append(
{
"learningContentId": attendance_course_lp_qs.first().id,
"start": try_parse_datetime(data[f"{circle} Start"])[
1
].isoformat(),
"end": try_parse_datetime(data[f"{circle} Ende"])[
1
].isoformat(),
"location": data[f"{circle} Raum"],
"trainer": "",
}
)
cs.save()
add_attendance_course_date(cs, attendance_course_lp_qs, circle, data)
elif language == "fr":
# todo: this is a hack remove me
print(f"{course.slug}-lp-circle-véhicule-lc-cours-de-présence-véhicule")
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
slug=f"{course.slug}-lp-circle-véhicule-lc-cours-de-présence-véhicule-à-moteur"
)
if attendance_course_lp_qs.exists():
cs.attendance_courses.append(
{
"learningContentId": attendance_course_lp_qs.first().id,
"start": try_parse_datetime(data[f"{circle} Start"])[
1
].isoformat(),
"end": try_parse_datetime(data[f"{circle} Ende"])[
1
].isoformat(),
"location": data[f"{circle} Raum"],
"trainer": "",
}
)
cs.save()
add_attendance_course_date(cs, attendance_course_lp_qs, circle, data)
elif language == "it":
print(course.slug, f"{course.slug}-lp-circle-veicolo-lc-classi-di-frequenza-veicolo")
# todo: this is a hack remove me
attendance_course_lp_qs = LearningContentAttendanceCourse.objects.filter(
slug=f"{course.slug}-lp-circle-veicolo-lc-corso-di-presenza-veicolo"
)
print(attendance_course_lp_qs)
add_attendance_course_date(cs, attendance_course_lp_qs, circle, data)
return cs
def add_attendance_course_date(course_session, attendance_course_lp_qs, circle, data):
if attendance_course_lp_qs.exists():
course_session.attendance_courses.append(
{
"learningContentId": attendance_course_lp_qs.first().id,
"start": try_parse_datetime(data[f"{circle} Start"])[1].isoformat(),
"end": try_parse_datetime(data[f"{circle} Ende"])[1].isoformat(),
"location": data[f"{circle} Raum"],
"trainer": "",
}
)
course_session.save()
def import_trainers_from_excel(course: Course, filename: str, language="de"):
workbook = load_workbook(filename=filename)
sheet = workbook["Schulungen Trainer"]