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/<course_slug>/users/", 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"),
|
||||
path(r"api/course/completion/mark/", mark_course_completion_view,
|
||||
name="mark_course_completion"),
|
||||
|
|
|
|||
|
|
@ -74,6 +74,15 @@ class TaskBlock(blocks.StructBlock):
|
|||
|
||||
|
||||
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")
|
||||
effort_required = models.CharField(
|
||||
max_length=100, help_text="Zeitaufwand als Text", blank=True
|
||||
|
|
|
|||
|
|
@ -33,9 +33,12 @@ logger = structlog.get_logger(__name__)
|
|||
|
||||
|
||||
@api_view(["GET"])
|
||||
def course_page_api_view(request, slug):
|
||||
def course_page_api_view(request, slug_or_id):
|
||||
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):
|
||||
raise PermissionDenied()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue