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)