Skip to content
Snippets Groups Projects
Commit 8515fa1b authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Allow accessing coursebook for different object types (courses, groups, ...)

parent 7beae884
No related branches found
No related tags found
2 merge requests!352Draft: Resolve "Add dialog with each lesson's students",!350Resolve "Add simple course book list"
Pipeline #168147 failed
...@@ -43,11 +43,16 @@ export default { ...@@ -43,11 +43,16 @@ export default {
props: { props: {
// Either as props OR route params // Either as props OR route params
// TODO: Remove default? // TODO: Remove default?
courseId: { objId: {
type: [Number, String], type: [Number, String],
required: false, required: false,
default: 0, default: 0,
}, },
objType: {
type: String,
required: false,
default: "group",
},
// Next two in ISODate // Next two in ISODate
dateStart: { dateStart: {
type: String, type: String,
...@@ -69,7 +74,8 @@ export default { ...@@ -69,7 +74,8 @@ export default {
gqlQueryArgs() { gqlQueryArgs() {
return { return {
// Assure courseId is a number // Assure courseId is a number
courseId: Number(this.courseId), objId: Number(this.objId),
objType: this.objType.toUpperCase(),
dateStart: this.dateStart, dateStart: this.dateStart,
dateEnd: this.dateEnd, dateEnd: this.dateEnd,
}; };
......
query gqlDocumentationsForCoursebook($courseId: ID!, $dateStart: Date!, $dateEnd: Date!) { query gqlDocumentationsForCoursebook($objId: ID!, $objType: String!, $dateStart: Date!, $dateEnd: Date!) {
items: documentationsForCoursebook(courseId: $courseId, dateStart: $dateStart, dateEnd: $dateEnd) { items: documentationsForCoursebook(objId: $objId, objType: $objType, dateStart: $dateStart, dateEnd: $dateEnd) {
id id
course { course {
id id
......
...@@ -394,19 +394,20 @@ export default { ...@@ -394,19 +394,20 @@ export default {
}, },
}, },
{ {
path: "coursebook/:courseId(\\d+)/", path: "coursebook/:objType(group|course|teacher)/:objId(\\d+)/",
component: () => import("./components/Coursebook.vue"), component: () => import("./components/Coursebook.vue"),
redirect: to => { redirect: to => {
console.log('redirect to', to); console.log('redirect to', to);
return { name: "alsijil.coursebook_by_course_id_and_date", return { name: "alsijil.coursebook_by_obj_id_and_date",
params: { params: {
courseId: to.params.courseId, objType: to.params.objType,
objId: to.params.objId,
dateStart: DateTime.now().toISODate(), dateStart: DateTime.now().toISODate(),
dateEnd: DateTime.now().plus({ weeks: 1 }).toISODate(), dateEnd: DateTime.now().plus({ weeks: 1 }).toISODate(),
}, },
}; };
}, },
name: "alsijil.coursebook_by_course_id", name: "alsijil.coursebook_by_obj_id",
props: true, props: true,
meta: { meta: {
inMenu: true, inMenu: true,
......
...@@ -23,7 +23,8 @@ class Query(graphene.ObjectType): ...@@ -23,7 +23,8 @@ class Query(graphene.ObjectType):
) )
documentations_for_coursebook = FilterOrderList( documentations_for_coursebook = FilterOrderList(
DocumentationType, DocumentationType,
course_id = graphene.ID(required=True), obj_type = graphene.String(required=True),
obj_id = graphene.ID(required=True),
date_start=graphene.Date(required=True), date_start=graphene.Date(required=True),
date_end=graphene.Date(required=True), date_end=graphene.Date(required=True),
) )
...@@ -34,12 +35,11 @@ class Query(graphene.ObjectType): ...@@ -34,12 +35,11 @@ class Query(graphene.ObjectType):
) )
return documentations return documentations
def resolve_documentations_for_coursebook(root, info, course_id, date_start, date_end, **kwargs): def resolve_documentations_for_coursebook(root, info, obj_type, obj_id, date_start, date_end, **kwargs):
datetime_start = datetime.combine(date_start, datetime.min.time()) datetime_start = datetime.combine(date_start, datetime.min.time())
datetime_end = datetime.combine(date_end, datetime.max.time()) datetime_end = datetime.combine(date_end, datetime.max.time())
# TODO: later on, allow getting documentations for other types than courses, e.g. groups or persons return Documentation.get_for_coursebook(obj_type, obj_id, datetime_start, datetime_end, info.context)
return Documentation.get_for_coursebook("COURSE", course_id, datetime_start, datetime_end, info.context)
class Mutation(graphene.ObjectType): class Mutation(graphene.ObjectType):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment