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