Esempio n. 1
0
  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)
Esempio n. 2
0
  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)
Esempio n. 3
0
  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)
Esempio n. 4
0
  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)
Esempio n. 5
0
  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)
Esempio n. 6
0
  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)
Esempio n. 7
0
  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)
Esempio n. 8
0
  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)
Esempio n. 9
0
  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)
Esempio n. 10
0
  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)
Esempio n. 11
0
  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)
Esempio n. 12
0
    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)
Esempio n. 13
0
    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)
Esempio n. 14
0
  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)
Esempio n. 15
0
  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)
Esempio n. 16
0
  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)
Esempio n. 17
0
    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)
Esempio n. 18
0
  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)
Esempio n. 19
0
  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)
Esempio n. 20
0
 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)
Esempio n. 21
0
 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)