commit
2d3234c7ce
|
|
@ -48,7 +48,7 @@ LP_DATA = {
|
|||
"slug": "lancement",
|
||||
"presence_course": "lancement-lc-cours-de-présence-lancement",
|
||||
"assignments": [
|
||||
"lancement-lc-mission-de-préparation",
|
||||
"lancement-lc-mandat-de-préparation",
|
||||
"lancement-lc-déclaration-de-probité",
|
||||
"lancement-lc-réflexion",
|
||||
],
|
||||
|
|
@ -83,7 +83,7 @@ LP_DATA = {
|
|||
"slug": "base",
|
||||
"presence_course": "base-lc-cours-de-présence-base",
|
||||
"assignments": [
|
||||
"base-lc-mission-de-préparation",
|
||||
"base-lc-mandat-de-préparation",
|
||||
],
|
||||
"edoniq_tests": ["base-lc-questions-de-connaissances-et-de-compréhension"],
|
||||
},
|
||||
|
|
@ -103,7 +103,7 @@ LP_DATA = {
|
|||
"slug": "fahrzeug",
|
||||
"presence_course": "fahrzeug-lc-präsenzkurs-fahrzeug",
|
||||
"assignments": [
|
||||
"fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice",
|
||||
"fahrzeug-lc-geleitete-fallarbeit-überprüfen-einer-versicherungspolice",
|
||||
"fahrzeug-lc-fahrzeug-mein-erstes-auto",
|
||||
],
|
||||
"edoniq_tests": [],
|
||||
|
|
@ -113,8 +113,8 @@ LP_DATA = {
|
|||
"slug": "véhicule",
|
||||
"presence_course": "véhicule-lc-cours-de-présence-véhicule",
|
||||
"assignments": [
|
||||
"véhicule-lc-vérification-dune-police-dassurance-de-véhicule-à-moteur",
|
||||
"véhicule-lc-véhicule-à-moteur-ma-première-voiture",
|
||||
"véhicule-lc-mandat-de-préparation",
|
||||
"véhicule-lc-étude-de-cas-dirigée-vérification-dune-police-dassurance",
|
||||
],
|
||||
"edoniq_tests": [],
|
||||
},
|
||||
|
|
@ -123,8 +123,8 @@ LP_DATA = {
|
|||
"slug": "veicolo",
|
||||
"presence_course": "veicolo-lc-corso-di-presenza",
|
||||
"assignments": [
|
||||
"veicolo-lc-verifica-di-una-polizza-di-assicurazione-veicoli-a-motore",
|
||||
"veicolo-lc-veicolo-la-mia-prima-auto",
|
||||
"veicolo-lc-caso-di-studio-guidato-verifica-di-una-polizza-di-assicurazione",
|
||||
"veicolo-lc-incarico-di-preparazione",
|
||||
],
|
||||
"edoniq_tests": [],
|
||||
},
|
||||
|
|
@ -192,7 +192,7 @@ LP_DATA = {
|
|||
"de": {
|
||||
"title": "Reisen & Rechtsstreitigkeiten",
|
||||
"slug": "reisen-rechtsstreitigkeiten",
|
||||
"presence_course": "reisen-rechtsstreitigkeiten-lc-präsenzkurs-reisen-rechtsstreiti",
|
||||
"presence_course": "reisen-rechtsstreitigkeiten-lc-präsenzkurs-reisen-rechtsstreitigkeiten",
|
||||
"assignments": [
|
||||
"reisen-rechtsstreitigkeiten-lc-vorbereitungsauftrag",
|
||||
],
|
||||
|
|
@ -203,7 +203,7 @@ LP_DATA = {
|
|||
"fr": {
|
||||
"title": "Voyages / Litiges juridiques",
|
||||
"slug": "voyages-litiges-juridiques",
|
||||
"presence_course": "voyages--litiges-juridiques-lc-cours-de-présence",
|
||||
"presence_course": "voyages-litiges-juridiques-lc-cours-de-présence-voyages-litiges-juridiques",
|
||||
"assignments": [
|
||||
"voyages-litiges-juridiques-lc-mandat-de-préparation",
|
||||
],
|
||||
|
|
@ -214,7 +214,7 @@ LP_DATA = {
|
|||
"it": {
|
||||
"title": "Viaggi e controversie giuridiche",
|
||||
"slug": "viaggi-e-controversie-giuridiche",
|
||||
"presence_course": "viaggi-e-controversie-giuridiche-lc-corso-di-presenza",
|
||||
"presence_course": "viaggi-e-controversie-giuridiche-lc-corso-di-presenza-viaggi-e-controversie-giuridiche",
|
||||
"assignments": [
|
||||
"viaggi-e-controversie-giuridiche-lc-incarico-di-preparazione",
|
||||
],
|
||||
|
|
@ -237,7 +237,7 @@ LP_DATA = {
|
|||
"fr": {
|
||||
"title": "Propriété du logement",
|
||||
"slug": "propriété-du-logement",
|
||||
"presence_course": "propriété-du-logement-lc-cours-de-présence",
|
||||
"presence_course": "propriété-du-logement-lc-cours-de-présence-propriété-du-logement",
|
||||
"assignments": [
|
||||
"propriété-du-logement-lc-mandat-de-préparation",
|
||||
"propriété-du-logement-lc-etude-de-cas-dirigée",
|
||||
|
|
@ -247,7 +247,7 @@ LP_DATA = {
|
|||
"it": {
|
||||
"title": "Casa di proprietà",
|
||||
"slug": "casa-di-proprietà",
|
||||
"presence_course": "casa-di-proprietà-lc-corso-di-presenza",
|
||||
"presence_course": "casa-di-proprietà-lc-corso-di-presenza-casa-di-proprietà",
|
||||
"assignments": [
|
||||
"casa-di-proprietà-lc-incarico-di-preparazione",
|
||||
"casa-di-proprietà-lc-caso-di-studio-guidato-dal-cantiere-alla-propria-casa",
|
||||
|
|
@ -268,7 +268,7 @@ LP_DATA = {
|
|||
"fr": {
|
||||
"title": "PME, Partie 1",
|
||||
"slug": "pme-partie-1",
|
||||
"presence_course": "pme-partie-1-lc-cours-de-présence",
|
||||
"presence_course": "pme-partie-1-lc-cours-de-présence-pme-partie-1",
|
||||
"assignments": [
|
||||
"pme-partie-1-lc-mandat-de-préparation",
|
||||
],
|
||||
|
|
@ -279,7 +279,7 @@ LP_DATA = {
|
|||
"it": {
|
||||
"title": "PMI parte 1",
|
||||
"slug": "PMI parte 1",
|
||||
"presence_course": "pmi-parte-1-lc-corso-di-presenza",
|
||||
"presence_course": "pmi-parte-1-lc-corso-di-presenza-pmi-parte-1",
|
||||
"assignments": [
|
||||
"pmi-parte-1-lc-incarico-di-preparazione",
|
||||
],
|
||||
|
|
@ -300,7 +300,7 @@ LP_DATA = {
|
|||
"fr": {
|
||||
"title": "PME, Partie 2",
|
||||
"slug": "pme-partie-2",
|
||||
"presence_course": "pme-partie-2-lc-cours-de-présence",
|
||||
"presence_course": "pme-partie-2-lc-cours-de-présence-pme-partie-2",
|
||||
"assignments": [
|
||||
"pme-partie-2-lc-mandat-de-préparation",
|
||||
"pme-partie-2-lc-etude-de-cas-dirigée",
|
||||
|
|
@ -310,10 +310,10 @@ LP_DATA = {
|
|||
"it": {
|
||||
"title": "PMI parte 2",
|
||||
"slug": "PMI parte 2",
|
||||
"presence_course": "pmi-parte-2-lc-corso-di-presenza",
|
||||
"presence_course": "pmi-parte-2-lc-corso-di-presenza-pmi-parte-2",
|
||||
"assignments": [
|
||||
"pmi-parte-2-lc-incarico-di-preparazione",
|
||||
"pmi-parte-2-lc-caso-di-studio-guidato",
|
||||
"pmi-parte-2-lc-caso-di-studio-guidato-visitare-unazienda-pmi",
|
||||
],
|
||||
"edoniq_tests": [],
|
||||
},
|
||||
|
|
@ -322,16 +322,16 @@ LP_DATA = {
|
|||
"de": {
|
||||
"title": "3-säulenkonzept",
|
||||
"slug": "3-säulenkonzept",
|
||||
"presence_course": "3-säulenkonzept-lc-präsenzkurs-3-säulenkonzept",
|
||||
"presence_course": "3-säulensystem-lc-präsenzkurs-3-säulenkonzept",
|
||||
"assignments": [
|
||||
"3-säulenkonzept-lc-vorbereitungsauftrag",
|
||||
"3-säulensystem-lc-vorbereitungsauftrag",
|
||||
],
|
||||
"edoniq_tests": ["3-säulenkonzept-lc-wissens-und-verständnisfragen"],
|
||||
"edoniq_tests": ["3-säulensystem-lc-wissens-und-verständnisfragen"],
|
||||
},
|
||||
"fr": {
|
||||
"title": "Concept des 3 piliers",
|
||||
"slug": "concept-des-3-piliers",
|
||||
"presence_course": "",
|
||||
"presence_course": "concept-des-3-piliers-lc-cours-de-présence-concept-des-3-piliers",
|
||||
"assignments": [
|
||||
"concept-des-3-piliers-lc-mandat-de-préparation",
|
||||
],
|
||||
|
|
@ -342,7 +342,7 @@ LP_DATA = {
|
|||
"it": {
|
||||
"title": "Concetto dei 3 pilastri",
|
||||
"slug": "concetto-dei-3-pilastri",
|
||||
"presence_course": "concetto-dei-3-pilastri-lc-corso-di-presenza",
|
||||
"presence_course": "concetto-dei-3-pilastri-lc-corso-di-presenza-concetto-dei-3-pilastri",
|
||||
"assignments": [
|
||||
"concetto-dei-3-pilastri-lc-incarico-di-preparazione",
|
||||
],
|
||||
|
|
@ -366,7 +366,7 @@ LP_DATA = {
|
|||
"fr": {
|
||||
"title": "Garantie des revenus, Partie 1",
|
||||
"slug": "garantie-des-revenus-partie-1",
|
||||
"presence_course": "garantie-des-revenus-partie-1-lc-cours-de-présence",
|
||||
"presence_course": "garantie-des-revenus-partie-1-lc-cours-de-présence-garantie-des-revenus-partie-1",
|
||||
"assignments": [
|
||||
"garantie-des-revenus-partie-1-lc-mandat-de-préparation",
|
||||
],
|
||||
|
|
@ -377,7 +377,7 @@ LP_DATA = {
|
|||
"it": {
|
||||
"title": "Protezione del reddito parte 1",
|
||||
"slug": "protezione-del-reddito-parte-1",
|
||||
"presence_course": "protezione-del-reddito-parte-1-lc-corso-di-presenza",
|
||||
"presence_course": "protezione-del-reddito-parte-1-lc-corso-di-presenza-protezione-del-reddito-parte-1",
|
||||
"assignments": [
|
||||
"protezione-del-reddito-parte-1-lc-incarico-di-preparazione",
|
||||
],
|
||||
|
|
@ -390,7 +390,7 @@ LP_DATA = {
|
|||
"de": {
|
||||
"title": "Einkommenssicherung (Todesfall)",
|
||||
"slug": "einkommenssicherung-todesfall",
|
||||
"presence_course": "einkommenssicherung-invalidität-lc-präsenzkurs-einkommenssicherung-invalidität",
|
||||
"presence_course": "einkommenssicherung-todesfall-lc-präsenzkurs-einkommenssicherung-todesfall",
|
||||
"assignments": [
|
||||
"einkommenssicherung-todesfall-lc-vorbereitungsauftrag",
|
||||
],
|
||||
|
|
@ -401,7 +401,7 @@ LP_DATA = {
|
|||
"fr": {
|
||||
"title": "Garantie des revenus, Partie 2",
|
||||
"slug": "garantie-des-revenus-partie-2",
|
||||
"presence_course": "garantie-des-revenus-partie-2-lc-cours-de-présence",
|
||||
"presence_course": "garantie-des-revenus-partie-2-lc-cours-de-présence-garantie-des-revenus-partie-2",
|
||||
"assignments": [
|
||||
"garantie-des-revenus-partie-2-lc-mandat-de-préparation",
|
||||
],
|
||||
|
|
@ -410,14 +410,15 @@ LP_DATA = {
|
|||
],
|
||||
},
|
||||
"it": {
|
||||
"title": "Casa di proprietà",
|
||||
"slug": "casa-di-proprietà",
|
||||
"presence_course": "",
|
||||
"title": "Protezione del reddito parte 2",
|
||||
"slug": "protezione-del-reddito-parte-2",
|
||||
"presence_course": "protezione-del-reddito-parte-2-lc-corso-di-presenza-protezione-del-reddito-parte-2",
|
||||
"assignments": [
|
||||
"",
|
||||
"",
|
||||
"protezione-del-reddito-parte-2-lc-incarico-di-preparazione",
|
||||
],
|
||||
"edoniq_tests": [
|
||||
"protezione-del-reddito-parte-2-lc-domande-di-conoscenza-e-di-comprensione"
|
||||
],
|
||||
"edoniq_tests": [],
|
||||
},
|
||||
},
|
||||
"Pensionierung": {
|
||||
|
|
@ -427,14 +428,14 @@ LP_DATA = {
|
|||
"presence_course": "pensionierung-lc-präsenzkurs-pensionierung",
|
||||
"assignments": [
|
||||
"pensionierung-lc-vorbereitungsauftrag",
|
||||
"pensionierung-lc-geleitete-fallarbeit-geleitete-fallarbeit",
|
||||
"pensionierung-lc-geleitete-fallarbeit",
|
||||
],
|
||||
"edoniq_tests": [],
|
||||
},
|
||||
"fr": {
|
||||
"title": "Retraite",
|
||||
"slug": "retraite",
|
||||
"presence_course": "retraite-lc-cours-de-présence",
|
||||
"presence_course": "retraite-lc-cours-de-présence-retraite",
|
||||
"assignments": [
|
||||
"retraite-lc-mandat-de-préparation",
|
||||
"retraite-lc-etude-de-cas-dirigée",
|
||||
|
|
@ -444,7 +445,7 @@ LP_DATA = {
|
|||
"it": {
|
||||
"title": "Pensionamento",
|
||||
"slug": "pensionamento",
|
||||
"presence_course": "pensionamento-lc-corso-di-presenza",
|
||||
"presence_course": "pensionamento-lc-corso-di-presenza-pensionamento",
|
||||
"assignments": [
|
||||
"pensionamento-lc-incarico-di-preparazione",
|
||||
"pensionamento-lc-caso-di-studio-guidato",
|
||||
|
|
@ -648,7 +649,8 @@ def create_or_update_course_session(
|
|||
presence_day_end = try_parse_datetime(
|
||||
data[f"{circle} {TRANSLATIONS[language]['ende']}"]
|
||||
)[1]
|
||||
except KeyError:
|
||||
except KeyError as e:
|
||||
logger.debug("import", type="presence_data", key_error=e)
|
||||
continue
|
||||
|
||||
if attendance_course_lc:
|
||||
|
|
@ -662,6 +664,14 @@ def create_or_update_course_session(
|
|||
presence_day_end,
|
||||
)
|
||||
|
||||
else:
|
||||
logger.debug(
|
||||
"import",
|
||||
type="course_session_attendance",
|
||||
slug=f"{course.slug}-lp-circle-{circle_data['presence_course']}",
|
||||
error="Does not exist",
|
||||
)
|
||||
|
||||
for assignment_slug in circle_data["assignments"]:
|
||||
create_or_update_course_session_assignment(
|
||||
cs, course.slug, assignment_slug, presence_day_start
|
||||
|
|
@ -758,6 +768,13 @@ def create_or_update_course_session_assignment(
|
|||
) + timezone.timedelta(days=45)
|
||||
csa.evaluation_deadline.end = None
|
||||
csa.evaluation_deadline.save()
|
||||
else:
|
||||
logger.debug(
|
||||
"import",
|
||||
type="course_session_assignment",
|
||||
slug=f"{course_slug}-lp-circle-{assignment_slug}",
|
||||
error="Does not exist",
|
||||
)
|
||||
|
||||
|
||||
def create_or_update_course_session_edoniq_test(
|
||||
|
|
@ -779,6 +796,13 @@ def create_or_update_course_session_edoniq_test(
|
|||
)
|
||||
cset.deadline.end = None
|
||||
cset.deadline.save()
|
||||
else:
|
||||
logger.debug(
|
||||
"import",
|
||||
type="course_session_edoniq_test",
|
||||
slug=f"{course_slug}-lp-circle-{test_slug}",
|
||||
error="Does not exist",
|
||||
)
|
||||
|
||||
|
||||
def validate_row_data(data: Dict[str, any], required_headers: List[str]):
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ from vbv_lernwelt.importer.utils import (
|
|||
calc_header_tuple_list_from_pyxl_sheet,
|
||||
try_parse_datetime,
|
||||
)
|
||||
from vbv_lernwelt.learnpath.models import Circle
|
||||
from vbv_lernwelt.learnpath.models import Circle, LearningContentAssignment
|
||||
|
||||
test_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
|
@ -54,6 +54,15 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
|||
def setUp(self):
|
||||
create_default_users()
|
||||
self.course = create_test_course(include_vv=False)
|
||||
# update slug to reflect the real data
|
||||
assignment_slug = (
|
||||
"fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
|
||||
)
|
||||
casework = LearningContentAssignment.objects.filter(
|
||||
slug=f"{self.course.slug}-lp-circle-{assignment_slug}"
|
||||
).first()
|
||||
casework.title = "Geleitete Fallarbeit: Überprüfen einer Versicherungspolice"
|
||||
casework.save()
|
||||
|
||||
def test_create_course_session(self):
|
||||
row = [
|
||||
|
|
|
|||
Loading…
Reference in New Issue