Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
benjmnxu committed Dec 8, 2024
1 parent f0d2376 commit 542c052
Showing 1 changed file with 33 additions and 37 deletions.
70 changes: 33 additions & 37 deletions backend/ohq/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,10 +210,42 @@ class TagSerializer(CourseRouteMixin):
class Meta:
model = Tag
fields = ("id", "name")

class ReviewSerializer(serializers.ModelSerializer):
"""
Serializer for review, allowing input of a question object via a nested serializer.
"""
question = serializers.PrimaryKeyRelatedField(
queryset=Question.objects.none(),
)
class Meta:
model = Review
fields = ("id", "content", "rating", "question")

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
course_pk = self.context.get('course_pk')
if course_pk:
course = Course.objects.filter(pk=course_pk).first()
self.fields['question'].queryset = Question.objects.filter(queue__course=course)

def create(self, validated_data):
# Extract the nested question data
question = validated_data.pop("question")
validated_data["question"] = question
return super().create(validated_data)

def update(self, instance, validated_data):
# Handle question updates if applicable
question = validated_data.pop("question", None)
validated_data["question"] = question
return super().update(instance, validated_data)

class QuestionSerializer(QueueRouteMixin):
asked_by = UserSerializer(read_only=True)
responded_to_by = UserSerializer(read_only=True)
tags = TagSerializer(many=True)
review = ReviewSerializer(read_only=True, allow_null=True)
position = serializers.IntegerField(default=-1, read_only=True)

class Meta:
Expand All @@ -235,6 +267,7 @@ class Meta:
"resolved_note",
"position",
"student_descriptor",
"review"
)
read_only_fields = (
"time_asked",
Expand Down Expand Up @@ -345,43 +378,6 @@ def create(self, validated_data):
continue
return question

def get_review(self, obj):
review = Review.objects.get(question=obj)
serializer = ReviewSerializer(review)
return serializer.data


class ReviewSerializer(serializers.ModelSerializer):
"""
Serializer for review, allowing input of a question object via a nested serializer.
"""
question = serializers.PrimaryKeyRelatedField(
queryset=Question.objects.none(),
write_only=True
)
class Meta:
model = Review
fields = ("id", "content", "rating", "question")

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
course_pk = self.context.get('course_pk')
if course_pk:
course = Course.objects.filter(pk=course_pk).first()
self.fields['question'].queryset = Question.objects.filter(queue__course=course)

def create(self, validated_data):
# Extract the nested question data
question = validated_data.pop("question")
validated_data["question"] = question
return super().create(validated_data)

def update(self, instance, validated_data):
# Handle question updates if applicable
question = validated_data.pop("question", None)
validated_data["question"] = question
return super().update(instance, validated_data)


class MembershipPrivateSerializer(CourseRouteMixin):
"""
Expand Down

0 comments on commit 542c052

Please sign in to comment.