From 0ec716c459d9f004ccf4642fd2656537006b7af2 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Sun, 7 Aug 2022 18:26:31 -0400
Subject: [PATCH] Update views to add {created,update}_by to Host, Show, Note
 serializers

---
 program/views.py | 32 ++++++++++++++++++++++++++++----
 1 file changed, 28 insertions(+), 4 deletions(-)

diff --git a/program/views.py b/program/views.py
index 78be1f36..0336d507 100644
--- a/program/views.py
+++ b/program/views.py
@@ -293,7 +293,9 @@ 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(
+            data=request.data, context={"created_by": request.user.username}
+        )
 
         if serializer.is_valid():
             serializer.save()
@@ -315,7 +317,7 @@ class APIShowViewSet(DisabledObjectPermissionCheckMixin, viewsets.ModelViewSet):
 
         show = self.get_object()
         serializer = ShowSerializer(
-            show, data=request.data, context={"user": request.user}
+            show, data=request.data, context={"updated_by": request.user.username}
         )
 
         if serializer.is_valid():
@@ -667,7 +669,7 @@ class APINoteViewSet(
 
         serializer = NoteSerializer(
             data={"show": show_pk, "timeslot": timeslot_pk} | request.data,
-            context={"user_id": request.user.id},
+            context={"created_by": request.user.username},
         )
 
         if serializer.is_valid():
@@ -695,7 +697,9 @@ class APINoteViewSet(
             return Response(status=status.HTTP_401_UNAUTHORIZED)
 
         note = self.get_object()
-        serializer = NoteSerializer(note, data=request.data)
+        serializer = NoteSerializer(
+            note, data=request.data, context={"updated_by": request.user.username}
+        )
 
         if serializer.is_valid():
             hosts = Host.objects.filter(
@@ -825,3 +829,23 @@ class APIHostViewSet(ActiveFilterMixin, viewsets.ModelViewSet):
     queryset = Host.objects.all()
     serializer_class = HostSerializer
     pagination_class = LimitOffsetPagination
+
+    def create(self, request, *args, **kwargs):
+        serializer = HostSerializer(
+            data=request.data, context={"created_by": request.user.username}
+        )
+        if serializer.is_valid():
+            serializer.save()
+            return Response(serializer.data, status=status.HTTP_201_CREATED)
+        else:
+            Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
+
+    def update(self, request, *args, **kwargs):
+        serializer = HostSerializer(
+            data=request.data, context={"updated_by": request.user.username}
+        )
+        if serializer.is_valid():
+            serializer.save()
+            return Response(serializer.data, status=status.HTTP_201_CREATED)
+        else:
+            Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
-- 
GitLab