39 lines
1019 B
Python
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
|