Adapt api so it can fetch assignment page by id
This commit is contained in:
parent
b0cc789549
commit
8f84ef7502
|
|
@ -0,0 +1,41 @@
|
||||||
|
import { itGet } from "@/fetchHelpers";
|
||||||
|
import type { MediaLibraryPage } from "@/types";
|
||||||
|
import log from "loglevel";
|
||||||
|
import { defineStore } from "pinia";
|
||||||
|
|
||||||
|
export type MediaLibraryStoreState = {
|
||||||
|
mediaLibraryPage: MediaLibraryPage | undefined;
|
||||||
|
selectedLearningPath: { id: number; name: string };
|
||||||
|
availableLearningPaths: { id: number; name: string }[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const useMediaLibraryStore = defineStore({
|
||||||
|
id: "mediaLibrary",
|
||||||
|
state: () => {
|
||||||
|
return {
|
||||||
|
mediaLibraryPage: undefined,
|
||||||
|
selectedLearningPath: { id: 1, name: "Alle Lehrgänge" },
|
||||||
|
availableLearningPaths: [
|
||||||
|
{ id: 1, name: "Alle Lehrgänge" },
|
||||||
|
{ id: 2, name: "Versicherungsvermittler/-in" },
|
||||||
|
],
|
||||||
|
} as MediaLibraryStoreState;
|
||||||
|
},
|
||||||
|
getters: {},
|
||||||
|
actions: {
|
||||||
|
async loadMediaLibraryPage(slug: string, reload = false) {
|
||||||
|
if (this.mediaLibraryPage && !reload) {
|
||||||
|
return this.mediaLibraryPage;
|
||||||
|
}
|
||||||
|
log.debug("load mediaLibraryPageData");
|
||||||
|
const mediaLibraryPageData = await itGet(`/api/course/page/${slug}/`);
|
||||||
|
|
||||||
|
if (!mediaLibraryPageData) {
|
||||||
|
throw `No mediaLibraryPageData found with: ${slug}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.mediaLibraryPage = mediaLibraryPageData;
|
||||||
|
return this.mediaLibraryPage;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
@ -83,7 +83,7 @@ urlpatterns = [
|
||||||
path(r"api/course/sessions/", get_course_sessions, name="get_course_sessions"),
|
path(r"api/course/sessions/", get_course_sessions, name="get_course_sessions"),
|
||||||
path(r"api/course/sessions/<course_slug>/users/", get_course_session_users,
|
path(r"api/course/sessions/<course_slug>/users/", get_course_session_users,
|
||||||
name="get_course_session_users"),
|
name="get_course_session_users"),
|
||||||
path(r"api/course/page/<slug>/", course_page_api_view,
|
path(r"api/course/page/<slug_or_id>/", course_page_api_view,
|
||||||
name="course_page_api_view"),
|
name="course_page_api_view"),
|
||||||
path(r"api/course/completion/mark/", mark_course_completion_view,
|
path(r"api/course/completion/mark/", mark_course_completion_view,
|
||||||
name="mark_course_completion"),
|
name="mark_course_completion"),
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,15 @@ class TaskBlock(blocks.StructBlock):
|
||||||
|
|
||||||
|
|
||||||
class Assignment(CourseBasePage):
|
class Assignment(CourseBasePage):
|
||||||
|
serialize_field_names = [
|
||||||
|
"starting_position",
|
||||||
|
"effort_required",
|
||||||
|
"performance_objectives",
|
||||||
|
"assessment_description",
|
||||||
|
"assessment_document_url",
|
||||||
|
"tasks",
|
||||||
|
]
|
||||||
|
|
||||||
starting_position = models.TextField(help_text="Erläuterung der Ausgangslage")
|
starting_position = models.TextField(help_text="Erläuterung der Ausgangslage")
|
||||||
effort_required = models.CharField(
|
effort_required = models.CharField(
|
||||||
max_length=100, help_text="Zeitaufwand als Text", blank=True
|
max_length=100, help_text="Zeitaufwand als Text", blank=True
|
||||||
|
|
|
||||||
|
|
@ -33,9 +33,12 @@ logger = structlog.get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@api_view(["GET"])
|
@api_view(["GET"])
|
||||||
def course_page_api_view(request, slug):
|
def course_page_api_view(request, slug_or_id):
|
||||||
try:
|
try:
|
||||||
page = Page.objects.get(slug=slug, locale__language_code="de-CH")
|
if slug_or_id.isdigit():
|
||||||
|
page = Page.objects.get(id=slug_or_id)
|
||||||
|
else:
|
||||||
|
page = Page.objects.get(slug=slug_or_id, locale__language_code="de-CH")
|
||||||
if not has_course_access_by_page_request(request, page):
|
if not has_course_access_by_page_request(request, page):
|
||||||
raise PermissionDenied()
|
raise PermissionDenied()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue