From c3a16a7becc95d972a3cb5c493b5784e1e22aa99 Mon Sep 17 00:00:00 2001 From: Livio Bieri Date: Tue, 12 Dec 2023 15:39:18 +0100 Subject: [PATCH] chore: render mentor / expert cockpit based on role --- .../pages/cockpit/cockpitPage/CockpitPage.vue | 26 ++++++++++++------- client/src/router/index.ts | 2 +- client/src/stores/cockpit.ts | 21 +++++++++++++++ server/config/urls.py | 2 +- server/vbv_lernwelt/api/tests/test_cockpit.py | 2 +- server/vbv_lernwelt/api/user.py | 2 +- 6 files changed, 41 insertions(+), 14 deletions(-) create mode 100644 client/src/stores/cockpit.ts diff --git a/client/src/pages/cockpit/cockpitPage/CockpitPage.vue b/client/src/pages/cockpit/cockpitPage/CockpitPage.vue index 15dab124..b39c49cf 100644 --- a/client/src/pages/cockpit/cockpitPage/CockpitPage.vue +++ b/client/src/pages/cockpit/cockpitPage/CockpitPage.vue @@ -1,20 +1,26 @@ diff --git a/client/src/router/index.ts b/client/src/router/index.ts index 328e22f7..ee1e1237 100644 --- a/client/src/router/index.ts +++ b/client/src/router/index.ts @@ -136,7 +136,7 @@ const router = createRouter({ children: [ { path: "", - component: () => import("@/pages/cockpit/cockpitPage/CockpitExpertPage.vue"), + component: () => import("@/pages/cockpit/cockpitPage/CockpitPage.vue"), props: true, }, { diff --git a/client/src/stores/cockpit.ts b/client/src/stores/cockpit.ts new file mode 100644 index 00000000..17e39a88 --- /dev/null +++ b/client/src/stores/cockpit.ts @@ -0,0 +1,21 @@ +import { itGetCached } from "@/fetchHelpers"; +import { defineStore } from "pinia"; +import type { Ref } from "vue"; +import { ref } from "vue"; + +type CockpitType = "mentor" | "expert" | null; + +export const useCockpitStore = defineStore("cockpit", () => { + const cockpitType: Ref = ref(null); + const cockpitTypeIsLoading = ref(false); + + async function fetchCockpitType(courseId: string) { + cockpitTypeIsLoading.value = true; + const url = `/api/course/${courseId}/cockpit/`; + const response = await itGetCached(url); + cockpitType.value = response.type; + cockpitTypeIsLoading.value = false; + } + + return { cockpitType, cockpitTypeIsLoading, fetchCockpitType }; +}); diff --git a/server/config/urls.py b/server/config/urls.py index 10a3e932..924d072e 100644 --- a/server/config/urls.py +++ b/server/config/urls.py @@ -125,7 +125,7 @@ urlpatterns = [ path(r"api/course/completion///", request_course_completion_for_user, name="request_course_completion_for_user"), - path(r"api/course//cockpit/", + path(r"api/course//cockpit/", get_cockpit_type, name="get_cockpit_type"), diff --git a/server/vbv_lernwelt/api/tests/test_cockpit.py b/server/vbv_lernwelt/api/tests/test_cockpit.py index 4802101e..603c821e 100644 --- a/server/vbv_lernwelt/api/tests/test_cockpit.py +++ b/server/vbv_lernwelt/api/tests/test_cockpit.py @@ -56,4 +56,4 @@ class MeUserViewTest(APITestCase): # THEN self.assertEqual(response.status_code, status.HTTP_200_OK) - self.assertEquals(response.data["type"], "trainer") + self.assertEquals(response.data["type"], "expert") diff --git a/server/vbv_lernwelt/api/user.py b/server/vbv_lernwelt/api/user.py index e59f51d0..c240cc56 100644 --- a/server/vbv_lernwelt/api/user.py +++ b/server/vbv_lernwelt/api/user.py @@ -22,6 +22,6 @@ def get_cockpit_type(request, course_id: int): course_session__course=course, role=CourseSessionUser.Role.EXPERT, ).exists(): - cockpit_type = "trainer" + cockpit_type = "expert" return Response({"type": cockpit_type})