vbv/server/vbv_lernwelt/course/schema.py

47 lines
1.3 KiB
Python

import graphene
from graphene_django import DjangoObjectType
from vbv_lernwelt.course.models import Course
from vbv_lernwelt.course.permissions import has_course_access
from vbv_lernwelt.learnpath.models import LearningPath
class CoursePageInterface(graphene.Interface):
id = graphene.ID()
title = graphene.String()
slug = graphene.String()
content_type = graphene.String()
live = graphene.Boolean()
translation_key = graphene.String()
frontend_url = graphene.String()
def resolve_frontend_url(self, info):
return self.get_frontend_url()
class LearningPathType(DjangoObjectType):
class Meta:
model = LearningPath
interfaces = (CoursePageInterface,)
class CourseType(DjangoObjectType):
learning_path = graphene.Field(LearningPathType)
class Meta:
model = Course
fields = ("id", "title", "category_name", "slug", "learning_path")
def resolve_learning_path(self, info):
return self.get_learning_path()
class CourseQuery(graphene.ObjectType):
course = graphene.Field(CourseType, id=graphene.Int())
def resolve_course(root, info, id):
course = Course.objects.get(pk=id)
if has_course_access(info.context.user, course):
return course
raise PermissionError("You do not have access to this course")