Merged in feature/VBV-338-mediathek (pull request #89)
Feature/VBV-338 mediathek Approved-by: Christian Cueni
This commit is contained in:
commit
51eb358a43
|
|
@ -21,7 +21,8 @@ const breakpoints = useBreakpoints(breakpointsTailwind);
|
|||
const userStore = useUserStore();
|
||||
const courseSessionsStore = useCourseSessionsStore();
|
||||
const notificationsStore = useNotificationsStore();
|
||||
const { inCockpit, inCompetenceProfile, inCourse, inLearningPath } = useRouteLookups();
|
||||
const { inCockpit, inCompetenceProfile, inCourse, inLearningPath, inMediaLibrary } =
|
||||
useRouteLookups();
|
||||
|
||||
const { t } = useI18n();
|
||||
const state = reactive({
|
||||
|
|
@ -135,17 +136,29 @@ onMounted(() => {
|
|||
</div>
|
||||
|
||||
<div class="flex items-stretch justify-start space-x-8">
|
||||
<router-link
|
||||
v-if="inCourse() && courseSessionsStore.currentCourseSession"
|
||||
:to="courseSessionsStore.currentCourseSession.media_library_url"
|
||||
data-cy="medialibrary-link"
|
||||
class="nav-item-no-mobile"
|
||||
:class="{ 'nav-item--active': inMediaLibrary() }"
|
||||
>
|
||||
<it-icon-media-library class="h-8 w-8" />
|
||||
</router-link>
|
||||
|
||||
<!-- Notification Bell & Menu -->
|
||||
<div v-if="userStore.loggedIn" class="nav-item">
|
||||
<div v-if="userStore.loggedIn" class="nav-item leading-none">
|
||||
<NotificationPopover>
|
||||
<template #toggleButtonContent>
|
||||
<div class="flex">
|
||||
<it-icon-notification class="h-6 w-6" />
|
||||
<div
|
||||
v-if="notificationsStore.hasUnread"
|
||||
aria-label="unread notifications"
|
||||
class="mt-1 h-1.5 w-1.5 rounded-full bg-sky-500"
|
||||
/>
|
||||
<div class="relative h-8 w-8">
|
||||
<div>
|
||||
<it-icon-notification class="h-8 w-8" />
|
||||
<div
|
||||
v-if="notificationsStore.hasUnread"
|
||||
aria-label="unread notifications"
|
||||
class="absolute inset-y-0 right-0 h-1.5 w-1.5 rounded-full bg-sky-500"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template #popoverContent>
|
||||
|
|
@ -156,7 +169,7 @@ onMounted(() => {
|
|||
|
||||
<div
|
||||
v-if="selectedCourseSessionTitle"
|
||||
class="hidden items-center lg:inline-flex"
|
||||
class="nav-item hidden items-center lg:inline-flex"
|
||||
>
|
||||
<div class="">
|
||||
{{ selectedCourseSessionTitle }}
|
||||
|
|
@ -203,6 +216,10 @@ onMounted(() => {
|
|||
@apply inline-flex items-center border-b-4 border-transparent px-1 pt-1 text-white hover:text-sky-500;
|
||||
}
|
||||
|
||||
.nav-item-no-mobile {
|
||||
@apply hidden items-center border-b-4 border-transparent px-1 pt-1 text-white hover:text-sky-500 lg:inline-flex;
|
||||
}
|
||||
|
||||
.nav-item--active {
|
||||
@apply border-sky-500;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,6 +62,14 @@ const clickLink = (to: string | undefined) => {
|
|||
{{ $t("cockpit.title") }}
|
||||
</button>
|
||||
</li>
|
||||
<li class="mt-6">
|
||||
<button
|
||||
data-cy="medialibrary-link"
|
||||
@click="clickLink(`${courseSession?.media_library_url}`)"
|
||||
>
|
||||
{{ $t("mediaLibrary.title") }}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="mt-6 border-b pb-6">
|
||||
|
|
@ -75,11 +83,6 @@ const clickLink = (to: string | undefined) => {
|
|||
Shop
|
||||
</a>
|
||||
</li>
|
||||
<li class="mt-6">
|
||||
<button data-cy="medialibrary-link" @click="clickLink(mediaUrl)">
|
||||
{{ $t("mediaLibrary.title") }}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<button
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { Popover, PopoverButton, PopoverPanel } from "@headlessui/vue";
|
|||
|
||||
<PopoverPanel>
|
||||
<div
|
||||
class="absolute right-0 mt-2 bg-white px-4 py-4 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none lg:right-2"
|
||||
class="absolute right-0 z-10 mt-2 bg-white px-4 py-4 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none lg:right-2"
|
||||
>
|
||||
<!-- To close the popover withing your content, use the 'PopoverButton'
|
||||
https://headlessui.com/vue/popover#closing-popovers-manually
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@ import PlaceholderBlock from "./blocks/PlaceholderBlock.vue";
|
|||
import RichTextBlock from "./blocks/RichTextBlock.vue";
|
||||
import VideoBlock from "./blocks/VideoBlock.vue";
|
||||
|
||||
log.debug("LearningContent.vue setup");
|
||||
|
||||
const circleStore = useCircleStore();
|
||||
|
||||
const props = defineProps<{
|
||||
learningContent: LearningContent;
|
||||
}>();
|
||||
|
||||
log.debug("LearningContentParent setup", props.learningContent);
|
||||
|
||||
// can't use the type as component name, as some are reserved HTML components, e.g. video
|
||||
const COMPONENTS: Record<LearningContentType, Component> = {
|
||||
"learnpath.LearningContentAssignment": AssignmentBlock,
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
<script setup lang="ts">
|
||||
import LearningContentSimpleLayout from "@/pages/learningPath/learningContentPage/layouts/LearningContentSimpleLayout.vue";
|
||||
import type { LearningContentMediaLibrary } from "@/types";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
import log from "loglevel";
|
||||
|
||||
const props = defineProps<{
|
||||
content: LearningContentMediaLibrary;
|
||||
}>();
|
||||
|
||||
log.debug("LearningContentMediaLibraryBlock.vue created");
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
@ -16,13 +16,17 @@ const props = defineProps<{
|
|||
:learning-content-type="props.content.content_type"
|
||||
>
|
||||
<div class="container-medium">
|
||||
<p class="text-large my-4 lg:my-8">{{ props.content.description }}</p>
|
||||
<router-link
|
||||
:to="`${props.content.content_url}?back=${route.path}`"
|
||||
class="button btn-primary"
|
||||
<!-- eslint-disable vue/no-v-html -->
|
||||
<p class="text-large my-4 lg:my-8" v-html="props.content.description"></p>
|
||||
<a
|
||||
:href="`${props.content.content_url}`"
|
||||
target="_blank"
|
||||
data-cy="media-library-link"
|
||||
class="btn-primary inline-flex items-center"
|
||||
>
|
||||
Mediathek öffnen
|
||||
</router-link>
|
||||
Handlungsfeld anzeigen
|
||||
<it-icon-external-link class="ml-2 h-5 w-5"></it-icon-external-link>
|
||||
</a>
|
||||
</div>
|
||||
</LearningContentSimpleLayout>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ import * as log from "loglevel";
|
|||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
mediaLibraryPageSlug: string;
|
||||
courseSlug: string;
|
||||
mediaCategorySlug: string;
|
||||
}>();
|
||||
|
||||
log.debug("MLMediaListPage created", props.mediaCategorySlug);
|
||||
log.debug("MLMediaListPage created", props.courseSlug);
|
||||
|
||||
const mediaStore = useMediaLibraryStore();
|
||||
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@ import { onMounted } from "vue";
|
|||
log.debug("MediaLibraryView created");
|
||||
|
||||
const props = defineProps<{
|
||||
mediaLibraryPageSlug: string;
|
||||
courseSlug: string;
|
||||
}>();
|
||||
|
||||
const mediaLibraryStore = useMediaLibraryStore();
|
||||
|
||||
onMounted(async () => {
|
||||
log.debug("MediaLibraryView mounted", props.mediaLibraryPageSlug);
|
||||
log.debug("MediaLibraryView mounted", props.courseSlug);
|
||||
|
||||
try {
|
||||
await mediaLibraryStore.loadMediaLibraryPage(props.mediaLibraryPageSlug);
|
||||
await mediaLibraryStore.loadMediaLibraryPage(`${props.courseSlug}-media`);
|
||||
} catch (error) {
|
||||
log.error(error);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ const router = createRouter({
|
|||
component: DashboardPage,
|
||||
},
|
||||
{
|
||||
path: "/media/:mediaLibraryPageSlug",
|
||||
path: "/course/:courseSlug/media",
|
||||
props: true,
|
||||
component: () => import("@/pages/mediaLibrary/MLParentPage.vue"),
|
||||
children: [
|
||||
|
|
|
|||
|
|
@ -23,7 +23,8 @@ export function useRouteLookups() {
|
|||
}
|
||||
|
||||
function inMediaLibrary() {
|
||||
return route.path.startsWith("/media/");
|
||||
const regex = new RegExp("/course/[^/]+/media");
|
||||
return regex.test(route.path);
|
||||
}
|
||||
|
||||
return { inMediaLibrary, inCockpit, inLearningPath, inCompetenceProfile, inCourse };
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ describe("circle page", () => {
|
|||
beforeEach(() => {
|
||||
cy.manageCommand("cypress_reset");
|
||||
|
||||
login("admin", "test");
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/learn/fahrzeug");
|
||||
});
|
||||
|
||||
|
|
@ -16,17 +16,17 @@ describe("circle page", () => {
|
|||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-handlungsfeld-fahrzeug-checkbox"] > .cy-checkbox'
|
||||
).click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-handlungsfeld-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
|
||||
// completion data should still be there after reload
|
||||
cy.reload();
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-handlungsfeld-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
});
|
||||
|
||||
|
|
@ -41,7 +41,10 @@ describe("circle page", () => {
|
|||
cy.get('[data-cy="complete-and-continue"]').click({ force: true });
|
||||
|
||||
cy.get('[data-cy="ls-continue-button"]').click();
|
||||
cy.get('[data-cy="lc-title"]').should("contain", "Mediathek Fahrzeug");
|
||||
cy.get('[data-cy="lc-title"]').should(
|
||||
"contain",
|
||||
"Handlungsfeld «Fahrzeug»"
|
||||
);
|
||||
cy.get('[data-cy="complete-and-continue"]').click({ force: true });
|
||||
|
||||
cy.get('[data-cy="ls-continue-button"]').click();
|
||||
|
|
@ -52,7 +55,7 @@ describe("circle page", () => {
|
|||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-handlungsfeld-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
|
||||
cy.get(
|
||||
|
|
@ -72,12 +75,18 @@ describe("circle page", () => {
|
|||
|
||||
cy.get('[data-cy="ls-continue-button"]').should("contain", "Weiter geht's");
|
||||
cy.get('[data-cy="ls-continue-button"]').click();
|
||||
cy.get('[data-cy="lc-title"]').should("contain", "Mediathek Fahrzeug");
|
||||
cy.get('[data-cy="lc-title"]').should(
|
||||
"contain",
|
||||
"Handlungsfeld «Fahrzeug»"
|
||||
);
|
||||
});
|
||||
|
||||
it("can open learning content by url", () => {
|
||||
cy.visit("/course/test-lehrgang/learn/fahrzeug/mediathek-fahrzeug");
|
||||
cy.get('[data-cy="lc-title"]').should("contain", "Mediathek Fahrzeug");
|
||||
cy.visit("/course/test-lehrgang/learn/fahrzeug/handlungsfeld-fahrzeug");
|
||||
cy.get('[data-cy="lc-title"]').should(
|
||||
"contain",
|
||||
"Handlungsfeld «Fahrzeug»"
|
||||
);
|
||||
|
||||
cy.get('[data-cy="close-learning-content"]').click();
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
|
|
|
|||
|
|
@ -3,35 +3,25 @@ import { login } from "./helpers";
|
|||
describe("learningPath page", () => {
|
||||
beforeEach(() => {
|
||||
cy.manageCommand("cypress_reset");
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/learn");
|
||||
});
|
||||
|
||||
it("can open learningPath page", () => {
|
||||
login("admin", "test");
|
||||
cy.visit("/course/versicherungsvermittler-in/learn");
|
||||
|
||||
cy.get('[data-cy="learning-path-title"]').should(
|
||||
"contain",
|
||||
"Versicherungsvermittler/-in"
|
||||
"Test Lehrgang"
|
||||
);
|
||||
});
|
||||
|
||||
it("can click on circle to open it", () => {
|
||||
login("admin", "test");
|
||||
cy.visit("/course/versicherungsvermittler-in/learn");
|
||||
|
||||
cy.get('[data-cy="circle-Fahrzeug"]').click({ force: true });
|
||||
|
||||
cy.url().should(
|
||||
"include",
|
||||
"/course/versicherungsvermittler-in/learn/fahrzeug"
|
||||
);
|
||||
cy.url().should("include", "/course/test-lehrgang/learn/fahrzeug");
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
});
|
||||
|
||||
it("switch between list and path view", () => {
|
||||
login("admin", "test");
|
||||
cy.visit("/course/versicherungsvermittler-in/learn");
|
||||
|
||||
cy.get('[data-cy="lp-path-view"]').should("be.visible");
|
||||
cy.get('[data-cy="view-switch"]').click();
|
||||
cy.get('[data-cy="lp-list-view"]').should("be.visible");
|
||||
|
|
@ -40,21 +30,18 @@ describe("learningPath page", () => {
|
|||
});
|
||||
|
||||
it("weiter gehts button will open next circle", () => {
|
||||
login("admin", "test");
|
||||
cy.visit("/course/versicherungsvermittler-in/learn");
|
||||
|
||||
// first click will open first circle
|
||||
cy.get('[data-cy="lp-continue-button"]')
|
||||
.filter(":visible")
|
||||
.should("contain", "Los geht's")
|
||||
.click();
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Basis");
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
cy.get('[data-cy="back-to-learning-path-button"]').click();
|
||||
|
||||
// mark a learning content in second circle
|
||||
cy.get('[data-cy="circle-Fahrzeug"]').click({ force: true });
|
||||
cy.get('[data-cy="circle-Reisen"]').click({ force: true });
|
||||
cy.get(
|
||||
'[data-cy="versicherungsvermittler-in-lp-circle-fahrzeug-lc-rafael-fasel-wechselt-sein-auto-einstieg-checkbox"] > .cy-checkbox'
|
||||
'[data-cy="test-lehrgang-lp-circle-reisen-lc-fachcheck-reisen-checkbox"] > .cy-checkbox'
|
||||
).click();
|
||||
cy.get('[data-cy="back-to-learning-path-button"]').click();
|
||||
|
||||
|
|
@ -63,6 +50,6 @@ describe("learningPath page", () => {
|
|||
.filter(":visible")
|
||||
.should("contain", "Weiter geht's")
|
||||
.click();
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Reisen");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -13,40 +13,34 @@ describe("login", () => {
|
|||
it("can login to app with username/password", () => {
|
||||
cy.visit("/");
|
||||
|
||||
cy.get("#username").type("admin");
|
||||
cy.get("#username").type("test-student1@example.com");
|
||||
cy.get("#password").type("test");
|
||||
|
||||
cy.get('[data-cy="login-button"]').click();
|
||||
cy.request("/api/core/me").its("status").should("eq", 200);
|
||||
|
||||
cy.get('[data-cy="welcome-message"]').should(
|
||||
"contain",
|
||||
"Willkommen, Peter"
|
||||
);
|
||||
cy.get('[data-cy="welcome-message"]').should("contain", "Willkommen, Test");
|
||||
});
|
||||
|
||||
it("can login with helper function", () => {
|
||||
login("admin", "test");
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/");
|
||||
cy.request("/api/core/me").its("status").should("eq", 200);
|
||||
cy.get('[data-cy="welcome-message"]').should(
|
||||
"contain",
|
||||
"Willkommen, Peter"
|
||||
);
|
||||
cy.get('[data-cy="welcome-message"]').should("contain", "Willkommen, Test");
|
||||
});
|
||||
|
||||
it("login will redirect to requestet page", () => {
|
||||
cy.visit("/course/versicherungsvermittler-in/learn");
|
||||
cy.visit("/course/test-lehrgang/learn");
|
||||
cy.get("h1").should("contain", "Login");
|
||||
|
||||
cy.get("#username").type("admin");
|
||||
cy.get("#username").type("test-student1@example.com");
|
||||
cy.get("#password").type("test");
|
||||
|
||||
cy.get('[data-cy="login-button"]').click();
|
||||
|
||||
cy.get('[data-cy="learning-path-title"]').should(
|
||||
"contain",
|
||||
"Versicherungsvermittler"
|
||||
"Test Lehrgang"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -4,13 +4,11 @@ describe("MediaLibrary", () => {
|
|||
beforeEach(() => {
|
||||
cy.manageCommand("cypress_reset");
|
||||
|
||||
login("admin", "test");
|
||||
login("test-student1@example.com", "test");
|
||||
});
|
||||
|
||||
it.skip("should be accessible via link in header", () => {
|
||||
// der Link zur Mediathek fehlt aktuell im Header (auch im Design)
|
||||
// das ganze Konzept der Mediathek wird noch überdacht -> skip
|
||||
cy.visit("/course/test-lehrgang");
|
||||
it("should be accessible via link in header", () => {
|
||||
cy.visit("/course/test-lehrgang/learn");
|
||||
cy.get('[data-cy="medialibrary-link"]').click();
|
||||
cy.get('[data-cy="Handlungsfelder-link"]').click();
|
||||
cy.get('[data-cy="Fahrzeug-link"]').click();
|
||||
|
|
@ -18,9 +16,21 @@ describe("MediaLibrary", () => {
|
|||
});
|
||||
|
||||
it("should be accessible via direct url", () => {
|
||||
cy.visit("/media/test-lehrgang-media");
|
||||
cy.visit("/course/test-lehrgang/media");
|
||||
cy.get('[data-cy="Handlungsfelder-link"]').click();
|
||||
cy.get('[data-cy="Fahrzeug-link"]').click();
|
||||
cy.get('[data-cy="hf-title"]').should("contain", "Fahrzeug");
|
||||
});
|
||||
|
||||
it("handlungsfeld should be accessible via direct url", () => {
|
||||
cy.visit("/course/test-lehrgang/media/category/fahrzeug");
|
||||
cy.get('[data-cy="hf-title"]').should("contain", "Fahrzeug");
|
||||
});
|
||||
|
||||
it("should be accessible via learning path circle", () => {
|
||||
cy.visit("/course/test-lehrgang/learn/fahrzeug/handlungsfeld-fahrzeug");
|
||||
cy.get('[data-cy="media-library-link"]')
|
||||
.invoke("attr", "href")
|
||||
.should("contain", "/media/category/fahrzeug");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -217,9 +217,13 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
|||
),
|
||||
)
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
title=f"Handlungsfeld «{title}»",
|
||||
parent=circle,
|
||||
content_url=f"/media/überbetriebliche-kurse-media/category/{slugify(title)}",
|
||||
description=RichText(
|
||||
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>"
|
||||
f"<p>Wir empfehlen dir vor der Absolvierung der weiteren Lerneinheiten dich in die Thematik einzulesen.</p>"
|
||||
),
|
||||
content_url=f"/course/{lp.get_course().slug}/media/category/{slugify(title)}",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Vorbereitungsauftrag",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
import random
|
||||
|
||||
import djclick as click
|
||||
from wagtail.models import Page
|
||||
|
||||
from vbv_lernwelt.assignment.creators.create_assignments import create_uk_assignments
|
||||
from vbv_lernwelt.assignment.models import Assignment
|
||||
|
|
@ -11,6 +12,7 @@ from vbv_lernwelt.competence.create_uk_competence_profile import (
|
|||
from vbv_lernwelt.competence.create_vv_new_competence_profile import (
|
||||
create_vv_new_competence_profile,
|
||||
)
|
||||
from vbv_lernwelt.competence.models import PerformanceCriteria
|
||||
from vbv_lernwelt.core.create_default_users import default_users
|
||||
from vbv_lernwelt.core.models import User
|
||||
from vbv_lernwelt.course.consts import (
|
||||
|
|
@ -27,7 +29,7 @@ from vbv_lernwelt.course.management.commands.create_uk_course import (
|
|||
create_uk_fr_learning_path,
|
||||
create_uk_learning_path,
|
||||
)
|
||||
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
||||
from vbv_lernwelt.course.models import CoursePage, CourseSession, CourseSessionUser
|
||||
from vbv_lernwelt.course.services import mark_course_completion
|
||||
from vbv_lernwelt.feedback.creators.create_demo_feedback import create_feedback
|
||||
from vbv_lernwelt.learnpath.create_vv_new_learning_path import (
|
||||
|
|
@ -35,6 +37,7 @@ from vbv_lernwelt.learnpath.create_vv_new_learning_path import (
|
|||
)
|
||||
from vbv_lernwelt.learnpath.models import (
|
||||
Circle,
|
||||
LearningContent,
|
||||
LearningContentAssignment,
|
||||
LearningContentAttendanceDay,
|
||||
)
|
||||
|
|
@ -334,772 +337,50 @@ def create_course_uk_de_assignment_completion_data(assignment, course_session, u
|
|||
|
||||
|
||||
def create_course_uk_de_completion_data(course_session):
|
||||
# initial completion data
|
||||
for slug, status, email in [
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük5-allgemein",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-e4pvük2-allgemein",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-e4pvük1-allgemein",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük4-allgemein",
|
||||
"fail",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-kickoff-ls-training",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lu-vorbereitung",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük3-allgemein",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-ls-transfer",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük2-allgemein",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-mediathek-fahrzeug",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-training",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük1-allgemein",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük7-allgemein",
|
||||
"fail",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-reflexion",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük11-allgemein",
|
||||
"fail",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-feedback",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-reflexion",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"michael.meier@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lu-vorbereitung",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük5-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-e4pvük2-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-e4pvük1-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük4-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-kickoff-ls-training",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük3-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-ls-transfer",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük2-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-mediathek-fahrzeug",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-training",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük1-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük7-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük11-allgemein",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-reflexion",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-reflexion",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-mediathek-haushalt-teil-2",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"lina.egger@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lu-vorbereitung",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük5-allgemein",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-e4pvük2-allgemein",
|
||||
"fail",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-mediathek",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-e4pvük1-allgemein",
|
||||
"fail",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-reflexion",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük4-allgemein",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-kickoff-ls-training",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-transfer",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük3-allgemein",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-basis-lc-feedback",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük2-allgemein",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-mediathek-fahrzeug",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-ls-training",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-d2pvük1-allgemein",
|
||||
"fail",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük7-allgemein",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-competence-crit-c3pvük11-allgemein",
|
||||
"fail",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-reflexion",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-feedback",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-wissens-und-verständnisfragen",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-unterlagen-für-den-unterricht",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-mediathek-haushalt-teil-1",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-1-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-vorbereitungsauftrag",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-verschaffe-dir-einen-überblick",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-reflexion",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-selbsteinschätzung",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-feedback",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
(
|
||||
"überbetriebliche-kurse-lp-circle-haushalt-teil-2-lc-mediathek-haushalt-teil-2",
|
||||
"success",
|
||||
"evelyn.schmid@example.com",
|
||||
),
|
||||
]:
|
||||
circles = Circle.objects.filter(slug__startswith="überbetriebliche-kurse-lp-circle")
|
||||
for circle in circles:
|
||||
for index, lc in enumerate(circle.get_descendants().type(LearningContent)):
|
||||
mark_course_completion(
|
||||
str(lc.translation_key),
|
||||
User.objects.get(email="lina.egger@example.com"),
|
||||
course_session=course_session,
|
||||
completion_status="success",
|
||||
)
|
||||
|
||||
random_number = random.randint(1, 3)
|
||||
if index % random_number == 0:
|
||||
mark_course_completion(
|
||||
str(lc.translation_key),
|
||||
User.objects.get(email="michael.meier@example.com"),
|
||||
course_session=course_session,
|
||||
completion_status="success",
|
||||
)
|
||||
|
||||
performance_criteria = (
|
||||
CoursePage.objects.get(course_id=COURSE_UK)
|
||||
.get_descendants()
|
||||
.type(PerformanceCriteria)
|
||||
)
|
||||
for index, pc in enumerate(performance_criteria):
|
||||
mark_course_completion(
|
||||
Page.objects.get(slug=slug).translation_key,
|
||||
User.objects.get(email=email),
|
||||
str(pc.translation_key),
|
||||
User.objects.get(email="lina.egger@example.com"),
|
||||
course_session=course_session,
|
||||
completion_status=status,
|
||||
completion_status="success",
|
||||
)
|
||||
|
||||
random_number = random.randint(1, 4)
|
||||
if index % random_number == 0:
|
||||
mark_course_completion(
|
||||
str(pc.translation_key),
|
||||
User.objects.get(email="michael.meier@example.com"),
|
||||
course_session=course_session,
|
||||
completion_status="success",
|
||||
)
|
||||
if index % random_number == 1:
|
||||
mark_course_completion(
|
||||
str(pc.translation_key),
|
||||
User.objects.get(email="michael.meier@example.com"),
|
||||
course_session=course_session,
|
||||
completion_status="fail",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from django.conf import settings
|
|||
from django.core.management import call_command
|
||||
from slugify import slugify
|
||||
from wagtail.models import Locale, Page, Site
|
||||
from wagtail.rich_text import RichText
|
||||
from wagtail_localize.models import LocaleSynchronization
|
||||
|
||||
from vbv_lernwelt.assignment.models import Assignment
|
||||
|
|
@ -166,14 +167,23 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
|||
"Gesundheit",
|
||||
]:
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
title=f"Handlungsfeld «{title}»",
|
||||
parent=circle,
|
||||
content_url=f"/media/überbetriebliche-kurse-media/category/{slugify(first_title)}",
|
||||
description=RichText(
|
||||
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>"
|
||||
f"<p>Wir empfehlen dir vor der Absolvierung der weiteren Lerneinheiten dich in die Thematik einzulesen.</p>"
|
||||
),
|
||||
content_url=f"/course/überbetriebliche-kurse/media/category/{slugify(first_title)}",
|
||||
)
|
||||
else:
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Handlungsfeld «{title}»",
|
||||
parent=circle,
|
||||
description=RichText(
|
||||
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>"
|
||||
f"<p>Wir empfehlen dir vor der Absolvierung der weiteren Lerneinheiten dich in die Thematik einzulesen.</p>"
|
||||
),
|
||||
content_url=f"/course/überbetriebliche-kurse/media",
|
||||
)
|
||||
|
||||
LearningContentPlaceholderFactory(
|
||||
|
|
@ -224,10 +234,14 @@ damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
|||
title="Verschaffe dir einen Überblick",
|
||||
parent=circle,
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title=f"Mediathek {title}",
|
||||
LearningContentMediaLibraryFactory(
|
||||
title=f"Handlungsfeld «{title}»",
|
||||
parent=circle,
|
||||
content_url=f"/media/überbetriebliche-kurse-media/category/{slugify(title)}",
|
||||
description=RichText(
|
||||
f"<p>In der Mediathek unter dem Handlungsfeld «{title}» findest du alle relevanten Ressourcen für deine Fachkompetenzen.</p>"
|
||||
f"<p>Wir empfehlen dir vor der Absolvierung der weiteren Lerneinheiten dich in die Thematik einzulesen.</p>"
|
||||
),
|
||||
content_url=f"/course/überbetriebliche-kurse/media/category/{slugify(title)}",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Vorbereitungsauftrag",
|
||||
|
|
|
|||
|
|
@ -164,6 +164,7 @@ def create_circle_basis(lp, title="Basis"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Qualifikationsprofil und Zulassungsprüfung",
|
||||
|
|
@ -186,6 +187,7 @@ def create_circle_basis(lp, title="Basis"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Mein neuer Job",
|
||||
|
|
@ -216,6 +218,7 @@ def create_circle_basis(lp, title="Basis"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Einstieg in die Versicherung",
|
||||
|
|
@ -277,6 +280,7 @@ wie du dein Netzwerk aufbauen und erweitern kannst, um damit neue Kunden zu gewi
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Die ersten Schritte im Verkauf",
|
||||
|
|
@ -300,6 +304,7 @@ wie du dein Netzwerk aufbauen und erweitern kannst, um damit neue Kunden zu gewi
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Vom Lead zum Termin/Telefon auf Empfehlung/Neukundengewinnung",
|
||||
|
|
@ -341,7 +346,7 @@ def create_circle_fahrzeug(lp, title="Fahrzeug"):
|
|||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
parent=circle,
|
||||
content_url=f"/media/versicherungsvermittler-in-media/category/{slugify(title)}",
|
||||
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Einstieg", parent=circle)
|
||||
|
|
@ -416,7 +421,7 @@ def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"):
|
|||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
parent=circle,
|
||||
content_url=f"/media/versicherungsvermittler-in-media/category/{slugify(title)}",
|
||||
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Rechtsstreitigkeiten", parent=circle)
|
||||
|
|
@ -448,7 +453,7 @@ def create_circle_reisen(lp, title="Reisen"):
|
|||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
parent=circle,
|
||||
content_url=f"/media/versicherungsvermittler-in-media/category/{slugify(title)}",
|
||||
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Einstieg", parent=circle)
|
||||
|
|
@ -512,7 +517,7 @@ def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
|
|||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
parent=circle,
|
||||
content_url=f"/media/versicherungsvermittler-in-media/category/{slugify(title)}",
|
||||
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Einstieg", parent=circle)
|
||||
|
|
@ -581,7 +586,7 @@ def create_circle_standard_small(
|
|||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
parent=circle,
|
||||
content_url=f"/media/versicherungsvermittler-in-media/category/{slugify(title, allow_unicode=True)}",
|
||||
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title, allow_unicode=True)}",
|
||||
)
|
||||
|
||||
if lu_title is None:
|
||||
|
|
@ -611,7 +616,7 @@ def create_circle_standard(lp, title, lc_title, goals=None, description=None):
|
|||
LearningContentMediaLibraryFactory(
|
||||
title=f"Mediathek {title}",
|
||||
parent=circle,
|
||||
content_url=f"/media/versicherungsvermittler-in-media/category/{slugify(title)}",
|
||||
content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Einstieg", parent=circle)
|
||||
|
|
@ -706,6 +711,7 @@ def create_circle_betreuen(lp, title="Betreuen"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Rafael Fasel hat Ärger mit seinem Vermieter",
|
||||
|
|
@ -721,6 +727,7 @@ def create_circle_betreuen(lp, title="Betreuen"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Familie Babic spart auf ein Ziel",
|
||||
|
|
@ -736,6 +743,7 @@ def create_circle_betreuen(lp, title="Betreuen"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Familie Bonsera kauft ein Haus",
|
||||
|
|
@ -751,6 +759,7 @@ def create_circle_betreuen(lp, title="Betreuen"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Patrizia Feller macht sich selbstständig",
|
||||
|
|
@ -766,6 +775,7 @@ def create_circle_betreuen(lp, title="Betreuen"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
LearningContentPlaceholderFactory(
|
||||
title="Davide und Giulia vererben ihr Haus",
|
||||
|
|
@ -796,6 +806,7 @@ def create_circle_vernetzen(lp, title="Vernetzen"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Training", parent=circle)
|
||||
|
|
@ -827,6 +838,7 @@ def create_circle_pruefungsvorbereitung(lp, title="Prüfungsvorbereitung"):
|
|||
LearningContentPlaceholderFactory(
|
||||
title="Mediathek",
|
||||
parent=circle,
|
||||
content_url="/course/versicherungsvermittler-in/media",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Aufbau", parent=circle)
|
||||
|
|
|
|||
|
|
@ -4,16 +4,12 @@ from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID
|
|||
from vbv_lernwelt.course.models import Course, CoursePage
|
||||
from vbv_lernwelt.media_library.tests.media_library_factories import (
|
||||
create_external_link_block,
|
||||
create_internal_link_block,
|
||||
create_learn_media_block,
|
||||
create_media_collection,
|
||||
create_relative_link_block,
|
||||
ExternalLinkBlockFactory,
|
||||
InternalLinkBlockFactory,
|
||||
LearnMediaBlockFactory,
|
||||
MediaCategoryPageFactory,
|
||||
MediaLibraryPageFactory,
|
||||
RelativeLinkBlockFactory,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -124,55 +120,55 @@ die der Fahrzeugbesitzer und die Fahrzeugbesitzerin in einem grösseren Schadenf
|
|||
),
|
||||
],
|
||||
),
|
||||
create_media_collection(
|
||||
title="Verankerung im Lernpfad",
|
||||
description="Anhand der Story von Rafael Fasel und seinem Ford Mustang lernst du in diesem berufstypischem Handlungsfeld alles rund um Motorfahrzeugversicherungen, wie man sein Auto optimal schützen kann, wie du vorgehst bei einem Fahrzeugwechsel, welche Aspekte du bei einer Offerte beachten musst und wie du dem Kunden die Lösung präsentierst.",
|
||||
contents=[
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Einstieg – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/einstieg#lu-fahrzeug",
|
||||
)
|
||||
),
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Analyse – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/analyse#lu-fahrzeug",
|
||||
)
|
||||
),
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Lösung – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/lösung#lu-fahrzeug",
|
||||
)
|
||||
),
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Abschluss – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/abschluss#lu-fahrzeug",
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
create_media_collection(
|
||||
title="Querverweise",
|
||||
contents=[
|
||||
create_relative_link_block(
|
||||
RelativeLinkBlockFactory(
|
||||
title="Rechtsstreitigkeiten",
|
||||
description="VBV 303/12.3 Verkehrsrechtsschutz",
|
||||
url="/media/versicherungsvermittler-in-media/category/rechtsstreitigkeiten",
|
||||
)
|
||||
),
|
||||
create_relative_link_block(
|
||||
RelativeLinkBlockFactory(
|
||||
title="Reisen",
|
||||
description="VBV 303/13 Reiseversicherung",
|
||||
url="/media/versicherungsvermittler-in-media/category/reisen",
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
# create_media_collection(
|
||||
# title="Verankerung im Lernpfad",
|
||||
# description="Anhand der Story von Rafael Fasel und seinem Ford Mustang lernst du in diesem berufstypischem Handlungsfeld alles rund um Motorfahrzeugversicherungen, wie man sein Auto optimal schützen kann, wie du vorgehst bei einem Fahrzeugwechsel, welche Aspekte du bei einer Offerte beachten musst und wie du dem Kunden die Lösung präsentierst.",
|
||||
# contents=[
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Einstieg – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/einstieg#lu-fahrzeug",
|
||||
# )
|
||||
# ),
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Analyse – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/analyse#lu-fahrzeug",
|
||||
# )
|
||||
# ),
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Lösung – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/lösung#lu-fahrzeug",
|
||||
# )
|
||||
# ),
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Abschluss – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/abschluss#lu-fahrzeug",
|
||||
# )
|
||||
# ),
|
||||
# ],
|
||||
# ),
|
||||
# create_media_collection(
|
||||
# title="Querverweise",
|
||||
# contents=[
|
||||
# create_relative_link_block(
|
||||
# RelativeLinkBlockFactory(
|
||||
# title="Rechtsstreitigkeiten",
|
||||
# description="VBV 303/12.3 Verkehrsrechtsschutz",
|
||||
# url="/media/versicherungsvermittler-in-media/category/rechtsstreitigkeiten",
|
||||
# )
|
||||
# ),
|
||||
# create_relative_link_block(
|
||||
# RelativeLinkBlockFactory(
|
||||
# title="Reisen",
|
||||
# description="VBV 303/13 Reiseversicherung",
|
||||
# url="/media/versicherungsvermittler-in-media/category/reisen",
|
||||
# )
|
||||
# ),
|
||||
# ],
|
||||
# ),
|
||||
]
|
||||
),
|
||||
)
|
||||
|
|
@ -229,62 +225,62 @@ Diese können negative Folgen verschiedener Art nach sich ziehen, darunter recht
|
|||
),
|
||||
],
|
||||
),
|
||||
create_media_collection(
|
||||
title="Verankerung im Lernpfad",
|
||||
description="Begleite Emma Durand und Ayla Yilmaz bei den Vorbereitungen auf ihre grosse Reise durch Amerika und lerne dabei, welche Risiken durch welche Versicherungen abgedeckt werden können.",
|
||||
contents=[
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Einstieg – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/einstieg#lu-reisen",
|
||||
)
|
||||
),
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Analyse – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/analyse#lu-reisen",
|
||||
)
|
||||
),
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Lösung – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/lösung#lu-reisen",
|
||||
)
|
||||
),
|
||||
create_internal_link_block(
|
||||
InternalLinkBlockFactory(
|
||||
title="Circle: Abschluss – Lernsequenz: Anwenden",
|
||||
url="/learn/versicherungsvermittler-in-lp/abschluss#lu-reisen",
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
create_media_collection(
|
||||
title="Querverweise",
|
||||
contents=[
|
||||
create_relative_link_block(
|
||||
RelativeLinkBlockFactory(
|
||||
title="Haushalt",
|
||||
description="VBV 303/03 Hausratversicherung",
|
||||
url="/media/versicherungsvermittler-in-media/category/haushalt",
|
||||
)
|
||||
),
|
||||
create_relative_link_block(
|
||||
RelativeLinkBlockFactory(
|
||||
title="Rechtsstreitigkeiten",
|
||||
desciption="VBV 303/12 Rechtschutzversicherung",
|
||||
url="/media/versicherungsvermittler-in-media/category/rechtsstreitigkeiten",
|
||||
)
|
||||
),
|
||||
create_relative_link_block(
|
||||
RelativeLinkBlockFactory(
|
||||
title="Gesundheit",
|
||||
description="VBV 304/Teil E Obligatorische Krankenversicherung",
|
||||
url="/media/versicherungsvermittler-in-media/category/gesundheit",
|
||||
)
|
||||
),
|
||||
],
|
||||
),
|
||||
# create_media_collection(
|
||||
# title="Verankerung im Lernpfad",
|
||||
# description="Begleite Emma Durand und Ayla Yilmaz bei den Vorbereitungen auf ihre grosse Reise durch Amerika und lerne dabei, welche Risiken durch welche Versicherungen abgedeckt werden können.",
|
||||
# contents=[
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Einstieg – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/einstieg#lu-reisen",
|
||||
# )
|
||||
# ),
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Analyse – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/analyse#lu-reisen",
|
||||
# )
|
||||
# ),
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Lösung – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/lösung#lu-reisen",
|
||||
# )
|
||||
# ),
|
||||
# create_internal_link_block(
|
||||
# InternalLinkBlockFactory(
|
||||
# title="Circle: Abschluss – Lernsequenz: Anwenden",
|
||||
# url="/learn/versicherungsvermittler-in-lp/abschluss#lu-reisen",
|
||||
# )
|
||||
# ),
|
||||
# ],
|
||||
# ),
|
||||
# create_media_collection(
|
||||
# title="Querverweise",
|
||||
# contents=[
|
||||
# create_relative_link_block(
|
||||
# RelativeLinkBlockFactory(
|
||||
# title="Haushalt",
|
||||
# description="VBV 303/03 Hausratversicherung",
|
||||
# url="/media/versicherungsvermittler-in-media/category/haushalt",
|
||||
# )
|
||||
# ),
|
||||
# create_relative_link_block(
|
||||
# RelativeLinkBlockFactory(
|
||||
# title="Rechtsstreitigkeiten",
|
||||
# desciption="VBV 303/12 Rechtschutzversicherung",
|
||||
# url="/media/versicherungsvermittler-in-media/category/rechtsstreitigkeiten",
|
||||
# )
|
||||
# ),
|
||||
# create_relative_link_block(
|
||||
# RelativeLinkBlockFactory(
|
||||
# title="Gesundheit",
|
||||
# description="VBV 304/Teil E Obligatorische Krankenversicherung",
|
||||
# url="/media/versicherungsvermittler-in-media/category/gesundheit",
|
||||
# )
|
||||
# ),
|
||||
# ],
|
||||
# ),
|
||||
]
|
||||
),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ class MediaLibraryPage(CourseBasePage):
|
|||
super(MediaLibraryPage, self).save(clean, user, log_action, **kwargs)
|
||||
|
||||
def get_frontend_url(self):
|
||||
return f"/media/{self.slug}"
|
||||
return f"/course/{self.slug.replace('-media', '')}/media"
|
||||
|
||||
|
||||
class MediaCategoryPage(CourseBasePage):
|
||||
|
|
@ -95,7 +95,7 @@ class MediaCategoryPage(CourseBasePage):
|
|||
def get_frontend_url(self):
|
||||
r = re.compile(r"^(?P<coursePart>.+?)-media-cat-(?P<catPart>.+)$")
|
||||
m = r.match(self.slug)
|
||||
return f"/media/{m.group('coursePart')}-media/category/{m.group('catPart')}"
|
||||
return f"/course/{m.group('coursePart')}/media/category/{m.group('catPart')}"
|
||||
|
||||
|
||||
class LibraryDocument(AbstractDocument):
|
||||
|
|
|
|||
Loading…
Reference in New Issue