Skip to content

Commit

Permalink
Remove user field from survey submission read serializer
Browse files Browse the repository at this point in the history
The surveys are supposedly anonymous, they are not when the user field is sent with the submission
  • Loading branch information
eikhr committed Sep 24, 2024
1 parent 297e982 commit 963c53c
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 7 deletions.
8 changes: 5 additions & 3 deletions lego/apps/surveys/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from lego.apps.events.serializers.events import EventForSurveySerializer
from lego.apps.surveys.constants import DISPLAY_TYPES, QUESTION_TYPES
from lego.apps.surveys.models import Answer, Option, Question, Submission, Survey
from lego.apps.users.serializers.users import PublicUserSerializer
from lego.utils.serializers import BasisModelSerializer


Expand Down Expand Up @@ -93,11 +92,14 @@ class Meta:

class SubmissionReadSerializer(BasisModelSerializer):
answers = AnswerSerializer(many=True)
user = PublicUserSerializer()
is_owner = serializers.SerializerMethodField()

class Meta:
model = Submission
fields = ("id", "user", "survey", "answers")
fields = ("id", "is_owner", "survey", "answers")

def get_is_owner(self, submission):
return submission.user == self.context["request"].user


class SubmissionAdminReadSerializer(SubmissionReadSerializer):
Expand Down
3 changes: 2 additions & 1 deletion lego/apps/surveys/tests/test_submissions_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,8 @@ def test_create_answer(self):

expected = submission_data(self.admin_user, 1)
result = response.json()
self.assertEqual(expected["user"], result["user"].get("id", None))
self.assertEqual(expected["survey"], result["survey"])
self.assertTrue(result["isOwner"])

self.assertEqual(len(result["answers"]), 3)
for i, answer in enumerate(result["answers"]):
Expand Down
12 changes: 9 additions & 3 deletions lego/apps/surveys/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,9 @@ def create(self, request, *args, **kwargs):
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
return Response(
SubmissionReadSerializer(serializer.instance).data,
SubmissionReadSerializer(
serializer.instance, context={"request": request}
).data,
status=status.HTTP_201_CREATED,
)

Expand All @@ -198,7 +200,9 @@ def hide(self, request, **kwargs):
submission, answer = self.validate_answer(request, **kwargs)
answer.hide()
return Response(
data=SubmissionAdminReadSerializer(submission).data,
data=SubmissionAdminReadSerializer(
submission, context={"request": request}
).data,
status=status.HTTP_202_ACCEPTED,
)

Expand All @@ -212,7 +216,9 @@ def show(self, request, **kwargs):
submission, answer = self.validate_answer(request, **kwargs)
answer.show()
return Response(
data=SubmissionAdminReadSerializer(submission).data,
data=SubmissionAdminReadSerializer(
submission, context={"request": request}
).data,
status=status.HTTP_202_ACCEPTED,
)

Expand Down

0 comments on commit 963c53c

Please sign in to comment.