def retrieve(self, request, pk): deel = self.get_object() # permission check deny_on_fail(request.user.has_perm('forum.view_forumdeel', deel)) return Response(EntireForumDeelSerializer(deel).data)
def retrieve(self, request, *args, **kwargs): deel = self.get_object() # permission check deny_on_fail(request.user.has_perm('forum.view_forumdeel', deel)) return Response(self.get_serializer(deel).data)
def create(self, request, *args, **kwargs): # check if we can validly deserialize the json data serializer = self.get_serializer(data=request.data) if serializer.is_valid(): draad = serializer.validated_data['draad'] # make sure the user can post in the forum draad deny_on_fail(request.user.has_perm('forum.post_in_forumdeel', draad.forum)) deny_on_fail(not draad.gesloten) # create the post post = serializer.save(user=request.profiel, datum_tijd=datetime.now(), laatst_gewijzigd=datetime.now()) # update the draad draad.laatste_post_id = post.pk draad.save() # subscribe to the draad ForumDraadVolgen.objects.get_or_create(draad=draad, user=request.profiel) # notify subscribers of this draad notify_subscribers(draad, post) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def destroy(self, request, *args, **kwargs): post = self.get_object() # check delete permission deny_on_fail(request.user.has_perm('forum.delete_forumpost', post)) return super().destroy(request, *args, **kwargs)
def retrieve(self, request, pk): draad = self.get_object() # make sure the user can view the forum draad deny_on_fail(request.user.has_perm('forum.view_forumdeel', draad.forum)) return Response(self.EntireForumDraadSerializer(draad).data)
def retrieve(self, request, *args, **kwargs): draad = self.get_object() # make sure the user can view the forum draad deny_on_fail(request.user.has_perm('forum.view_forumdeel', draad.forum)) return Response(self.get_serializer(instance=draad).data)
def aanmelden(self, request, pk): """ Maaltijd aanmelden --- parameters_strategy: replace parameters: - name: aantal_gasten required: true type: integer - name: gasten_eetwens required: true type: string serializer: MaaltijdAanmeldingSerializer """ mlt = self.get_object() # make sure the maaltijd isn't closed if mlt.gesloten: return Response({"details": "Maaltijd closed"}, status=status.HTTP_400_BAD_REQUEST) # check that the user can sign in on this one deny_on_fail(request.user.has_perm('maaltijden.view_maaltijd', mlt)) serializer = MaaltijdAanmeldingSerializer(data=request.data) if serializer.is_valid(): serializer.save(laatst_gewijzigd=datetime.now(), user=request.profiel, maaltijd=mlt) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def retrieve(self, request, *args, **kwargs): draad = self.get_object() # make sure the user can view the forum draad deny_on_fail(request.user.has_perm('forum.view_forumdeel', draad.forum)) return Response(self.get_serializer(draad).data)
def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) deny_on_fail(request.user.has_perm('mededelingen.add_mededeling')) serializer.save(user=request.user) return Response(serializer.data, status=status.HTTP_201_CREATED)
def post(self, request, pk): """ Forum post in draad --- serializer: ForumPostSerializer parameters_strategy: replace parameters: - name: tekst required: true type: string - name: pk required: true paramType: path """ draad = self.get_object() # make sure the user can post in the forum draad deny_on_fail(request.user.has_perm('forum.post_in_forumdeel', draad.forum)) deny_on_fail(not draad.gesloten) request.data.update({ 'draad': draad.pk, 'user': request.profiel.pk, 'datum_tijd': datetime.now(), 'laatst_gewijzigd': datetime.now(), 'bewerkt_tekst': "", 'auteur_ip': "" }) # check if we can validly deserialize the json data serializer = ForumPostSerializer(data=request.data) if serializer.is_valid(): # create the post post = serializer.save() # update the draad draad.laatst_gewijzigd = request.data['laatst_gewijzigd'] draad.laatste_wijziging_user_id = request.profiel.pk draad.laatste_post_id = post.pk draad.save() # subscribe to the draad ForumDraadVolgen.objects.get_or_create(draad=draad, user=request.profiel) # notify subscribers of this draad notify_subscribers(draad, post) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def update(self, request, pk, *args, **kwargs): mededeling = self.get_object() # initializing the serializer with both an instance and new data # will cause the instance to update when we call .save() later on the serializer serializer = self.get_serializer(mededeling, data=request.data) serializer.is_valid(raise_exception=True) deny_on_fail(request.user.has_perm('mededelingen.change_mededeling', mededeling)) # the owner is unchanged # update the existing mededeling serializer.save() return Response(serializer.data, status=status.HTTP_200_OK)
def update(self, request, pk, *args, **kwargs): mededeling = self.get_object() # initializing the serializer with both an instance and new data # will cause the instance to update when we call .save() later on the serializer serializer = self.get_serializer(mededeling, data=request.data) serializer.is_valid(raise_exception=True) deny_on_fail( request.user.has_perm('mededelingen.change_mededeling', mededeling)) # the owner is unchanged # update the existing mededeling serializer.save() return Response(serializer.data, status=status.HTTP_200_OK)
def create(self, request, *args, **kwargs): """ Create a new forum thread including the first post --- parameters: - name: tekst description: Text of the first post required: true type: string """ serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) forum = serializer.validated_data['forum'] # check that the user can create a thread in this forum deny_on_fail(request.user.has_perm('forum.post_in_forumdeel', forum)) # validate the tekst field tekst = request.data.get('tekst', None) if tekst is None or len(tekst.strip()) < 15: raise ValidationError("Tekst moet minstens 15 tekens bevatten") # save the new thread... thread = serializer.save(user=request.profiel, datum_tijd=datetime.now()) # create the first post post = ForumPost.objects.create( user=request.profiel, tekst=request.data.get('tekst', None), draad=thread ) # close the loop thread.laatste_post = post thread.save() return Response(serializer.data, status=status.HTTP_201_CREATED)
def destroy(self, request, *args, **kwargs): deny_on_fail( request.user.has_perm('mededelingen.delete_mededeling', self.get_object())) return super().destroy(request, *args, **kwargs)
def destroy(self, request, *args, **kwargs): deny_on_fail(request.user.has_perm('mededelingen.delete_mededeling', self.get_object())) return super().destroy(request, *args, **kwargs)