Skip to content
Snippets Groups Projects
Verified Commit 700d80e0 authored by Ernesto Rico Schmidt's avatar Ernesto Rico Schmidt
Browse files

Inject request in the context for the serializers

The seralizers for Host, Note and Show require the request in the
context, but only the `APINoteViewSet` calls `get_serializer_context`.
The other two `APIHostViewSet` and `ShowSerializer` ingnore it, and the
request needs to be added manually.
parent 36da1d5c
No related branches found
No related tags found
No related merge requests found
Pipeline #3281 passed
......@@ -406,7 +406,10 @@ class APIShowViewSet(DisabledObjectPermissionCheckMixin, viewsets.ModelViewSet):
if not request.user.is_superuser:
return Response(status=status.HTTP_401_UNAUTHORIZED)
serializer = ShowSerializer(data=request.data)
serializer = ShowSerializer(
context={"request": request}, # the serializer needs the request in the context
data=request.data,
)
if serializer.is_valid():
serializer.save()
......@@ -428,7 +431,12 @@ class APIShowViewSet(DisabledObjectPermissionCheckMixin, viewsets.ModelViewSet):
partial = kwargs.get("partial", False)
show = self.get_object()
serializer = ShowSerializer(show, data=request.data, partial=partial)
serializer = ShowSerializer(
context={"request": request}, # the serializer needs the request in the context
data=request.data,
instance=show,
partial=partial,
)
if serializer.is_valid():
# Common users mustn't edit the show's name
......@@ -773,6 +781,13 @@ class APINoteViewSet(
pagination_class = LimitOffsetPagination
filterset_class = filters.NoteFilterSet
def get_serializer_context(self):
# the serializer needs the request in the context
context = super().get_serializer_context()
context.update({"request": self.request})
return context
def get_queryset(self):
qs = super().get_queryset().order_by("slug")
# Users should always be able to see notes
......@@ -899,9 +914,13 @@ class APIHostViewSet(ActiveFilterMixin, viewsets.ModelViewSet):
queryset = Host.objects.all()
serializer_class = HostSerializer
pagination_class = LimitOffsetPagination
permission_classes = [permissions.DjangoModelPermissionsOrAnonReadOnly]
def create(self, request, *args, **kwargs):
serializer = HostSerializer(data=request.data)
serializer = HostSerializer(
context={"request": request}, # the serializer needs the request in the context
data=request.data,
)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
......@@ -911,7 +930,14 @@ class APIHostViewSet(ActiveFilterMixin, viewsets.ModelViewSet):
def update(self, request, *args, **kwargs):
partial = kwargs.get("partial", False)
host = self.get_object()
serializer = HostSerializer(host, data=request.data, partial=partial)
serializer = HostSerializer(
context={"request": request}, # the serializer needs the request in the context
data=request.data,
instance=host,
partial=partial,
)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment