Esempio n. 1
0
    def create(self, request, message_pk):
        """Create a response for a message"""
        if not self.user.is_postulant:
            content = {
                'unauthorized': '401 - only postulant can send response'
            }
            return Response(content, status=status.HTTP_401_UNAUTHORIZED)

        message = UserMessage(id=message_pk, postulant=request.user)

        if not message:
            content = {'badrequest': '400 - message not found'}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)

        serializer = UserMessageSerializer(data=request.data)
        if serializer.is_valid():
            # XXX use request.data because when get from serializer.data raise
            # KeyError for some fields.

            # make the response message
            response = UserMessage()
            response.message = request.data['message']
            response.employer = message.employer
            response.postulant = message.postulant

            if message.postulation:
                response.postulation = message.postulation

            elif message.cvrequest:
                response.cvrequest = message.cvrequest

            response.save()

            # make relation between message and response
            message.response = response
            message.save()

            # Send email to employer if the preference is set, this setting
            # depend if the message generated by spontaneous cv or by
            # postulation
            if (response.postulation
                    and response.postulation.job.send_cvs_by_mail):
                response.employer.send_usermessage_email(response)

            elif response.employer.cv_spontany:
                response.employer.send_usermessage_email(response)

            return Response({'status': _('Mensaje enviado')})

        else:
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)