vbv/server/vbv_lernwelt/feedback/graphql/queries.py

39 lines
1019 B
Python

import itertools
import graphene
from graphene import ObjectType
from vbv_lernwelt.feedback.models import FeedbackResponse
class FeedbackSummary(ObjectType):
circle_id = graphene.Int()
count = graphene.Int()
class FeedbackForCourseQuery(object):
course_feedback_summary = graphene.List(
FeedbackSummary, course_id=graphene.Int(required=True)
)
def resolve_course_feedback_summary(self, info, **kwargs):
course_id = kwargs.get("course_id")
user = info.context.user
feedbacks = FeedbackResponse.objects.filter(
course_session__course_id=course_id, circle__expert__user=user
).order_by("circle_id")
summary = []
grouped_feedbacks = itertools.groupby(feedbacks, lambda x: x.circle_id)
for key, feedbacks in grouped_feedbacks:
summary.append(
{
"circle_id": key,
"count": len(list(feedbacks)),
}
)
return summary