Use page id for feedbacks, filter by course session id
This commit is contained in:
parent
5e9617c9b0
commit
6195c9d32a
|
|
@ -111,7 +111,7 @@ const sendFeedback = () => {
|
|||
proficiency,
|
||||
would_recommend: wouldRecommend,
|
||||
},
|
||||
page: props.page.translation_key,
|
||||
page: props.page.id,
|
||||
course_session: courseSession.id,
|
||||
});
|
||||
const variables = reactive({
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ function makeSummary(
|
|||
const props = defineProps<{
|
||||
selctedCircles: string[];
|
||||
circles: Circle[];
|
||||
courseId: number;
|
||||
courseSessionId: number;
|
||||
url: string;
|
||||
}>();
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ const feedbackSummary = ref<FeedbackDisplaySummary[]>([]);
|
|||
let feedbackData: FeedbackSummary[] = [];
|
||||
|
||||
onMounted(async () => {
|
||||
feedbackData = await itGet(`/api/core/feedback/${props.courseId}/summary`);
|
||||
feedbackData = await itGet(`/api/core/feedback/${props.courseSessionId}/summary`);
|
||||
feedbackSummary.value = makeSummary(
|
||||
feedbackData,
|
||||
props.circles,
|
||||
|
|
|
|||
|
|
@ -528,7 +528,7 @@ export type SendFeedbackInput = {
|
|||
clientMutationId?: InputMaybe<Scalars['String']['input']>;
|
||||
course_session: Scalars['Int']['input'];
|
||||
data?: InputMaybe<Scalars['GenericScalar']['input']>;
|
||||
page: Scalars['String']['input'];
|
||||
page: Scalars['Int']['input'];
|
||||
};
|
||||
|
||||
export type SendFeedbackPayload = {
|
||||
|
|
|
|||
|
|
@ -467,7 +467,7 @@ type ErrorType {
|
|||
}
|
||||
|
||||
input SendFeedbackInput {
|
||||
page: String!
|
||||
page: Int!
|
||||
course_session: Int!
|
||||
data: GenericScalar
|
||||
clientMutationId: String
|
||||
|
|
@ -492,4 +492,4 @@ enum AssignmentCompletionStatus {
|
|||
SUBMITTED
|
||||
EVALUATION_IN_PROGRESS
|
||||
EVALUATION_SUBMITTED
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ const feedbackData = reactive<FeedbackData>({ amount: 0, questions: {} });
|
|||
onMounted(async () => {
|
||||
log.debug("FeedbackPage mounted");
|
||||
const data = await itGet(
|
||||
`/api/core/feedback/${courseSession.value.course.id}/${props.circleId}`
|
||||
`/api/core/feedback/${courseSession.value.id}/${props.circleId}`
|
||||
);
|
||||
Object.assign(feedbackData, data);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ const numFeedbacks = computed(() => {
|
|||
|
||||
onMounted(async () => {
|
||||
const data = await itGet(
|
||||
`/api/core/feedback/${props.courseSession.course.id}/${props.circleId}/`
|
||||
`/api/core/feedback/${props.courseSession.id}/${props.circleId}/`
|
||||
);
|
||||
completeFeedbacks.value = data.amount;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -136,10 +136,10 @@ urlpatterns = [
|
|||
name='file_upload_local'),
|
||||
|
||||
# feedback
|
||||
path(r'api/core/feedback/<str:course_id>/summary/', get_expert_feedbacks_for_course,
|
||||
path(r'api/core/feedback/<str:course_session_id>/summary/', get_expert_feedbacks_for_course,
|
||||
name='feedback_summary'),
|
||||
|
||||
path(r'api/core/feedback/<str:course_id>/<str:circle_id>/', get_feedback_for_circle,
|
||||
path(r'api/core/feedback/<str:course_session_id>/<str:circle_id>/', get_feedback_for_circle,
|
||||
name='feedback_for_circle'),
|
||||
|
||||
path("server/graphql/",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import structlog
|
||||
from graphene import ClientIDMutation, Field, Int, List, String
|
||||
from graphene import ClientIDMutation, Field, Int, List
|
||||
from graphene.types.generic import GenericScalar
|
||||
from graphene_django.types import ErrorType
|
||||
|
||||
|
|
@ -20,19 +20,17 @@ class SendFeedback(ClientIDMutation):
|
|||
)
|
||||
|
||||
class Input:
|
||||
page = String(required=True)
|
||||
page = Int(required=True)
|
||||
course_session = Int(required=True)
|
||||
data = GenericScalar()
|
||||
|
||||
@classmethod
|
||||
def mutate_and_get_payload(cls, _, info, **input):
|
||||
page_key = input["page"]
|
||||
page_id = input["page"]
|
||||
course_session_id = input["course_session"]
|
||||
logger.info("creating feedback")
|
||||
|
||||
learning_content = Page.objects.get(
|
||||
translation_key=page_key, locale__language_code="de-CH"
|
||||
)
|
||||
learning_content = Page.objects.get(id=page_id)
|
||||
circle = learning_content.get_parent().specific
|
||||
course_session = CourseSession.objects.get(id=course_session_id)
|
||||
data = input.get("data", {})
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ class CourseFeedbackSerializer(serializers.Serializer):
|
|||
satisfaction = FeedbackIntegerField()
|
||||
goal_attainment = FeedbackIntegerField()
|
||||
proficiency = serializers.IntegerField(required=False, allow_null=True)
|
||||
preparation_task_clarity = serializers.BooleanField()
|
||||
preparation_task_clarity = serializers.BooleanField(required=False, allow_null=True)
|
||||
materials_rating = FeedbackIntegerField()
|
||||
instructor_competence = FeedbackIntegerField()
|
||||
instructor_respect = FeedbackIntegerField()
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
|
|||
).save()
|
||||
|
||||
response = self.client.get(
|
||||
f"/api/core/feedback/{csu.course_session.course.id}/summary/"
|
||||
f"/api/core/feedback/{csu.course_session.id}/summary/"
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
|
@ -159,7 +159,7 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
|
|||
).save()
|
||||
|
||||
response = self.client.get(
|
||||
f"/api/core/feedback/{csu.course_session.course.id}/summary/"
|
||||
f"/api/core/feedback/{csu.course_session.id}/summary/"
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
|
@ -180,7 +180,7 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
|
|||
).save()
|
||||
|
||||
response = self.client.get(
|
||||
f"/api/core/feedback/{csu.course_session.course.id}/summary/"
|
||||
f"/api/core/feedback/{csu.course_session.id}/summary/"
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
|
@ -235,7 +235,7 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
|
|||
).save()
|
||||
|
||||
response = self.client.get(
|
||||
f"/api/core/feedback/{csu.course_session.course.id}/{circle.id}/"
|
||||
f"/api/core/feedback/{csu.course_session.id}/{circle.id}/"
|
||||
)
|
||||
self.maxDiff = None
|
||||
|
||||
|
|
@ -258,7 +258,7 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
|
|||
FeedbackResponseFactory(circle=circle, course_session=csu.course_session).save()
|
||||
|
||||
response = self.client.get(
|
||||
f"/api/core/feedback/{csu.course_session.course.id}/{circle.id}/"
|
||||
f"/api/core/feedback/{csu.course_session.id}/{circle.id}/"
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
|
@ -274,7 +274,7 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
|
|||
FeedbackResponseFactory(circle=circle, course_session=csu.course_session).save()
|
||||
|
||||
response = self.client.get(
|
||||
f"/api/core/feedback/{csu.course_session.course.id}/{circle.id}/"
|
||||
f"/api/core/feedback/{csu.course_session.id}/{circle.id}/"
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ FEEDBACK_FIELDS = [
|
|||
|
||||
|
||||
@api_view(["GET"])
|
||||
def get_expert_feedbacks_for_course(request, course_id):
|
||||
def get_expert_feedbacks_for_course(request, course_session_id):
|
||||
feedbacks = FeedbackResponse.objects.filter(
|
||||
course_session__course_id=course_id, circle__expert__user=request.user
|
||||
course_session__id=course_session_id, circle__expert__user=request.user
|
||||
).order_by("circle_id")
|
||||
circle_count = []
|
||||
|
||||
|
|
@ -43,9 +43,9 @@ def get_expert_feedbacks_for_course(request, course_id):
|
|||
|
||||
|
||||
@api_view(["GET"])
|
||||
def get_feedback_for_circle(request, course_id, circle_id):
|
||||
def get_feedback_for_circle(request, course_session_id, circle_id):
|
||||
feedbacks = FeedbackResponse.objects.filter(
|
||||
course_session__course_id=course_id,
|
||||
course_session__id=course_session_id,
|
||||
circle__expert__user=request.user,
|
||||
circle_id=circle_id,
|
||||
).order_by("created_at")
|
||||
|
|
|
|||
Loading…
Reference in New Issue