def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ sender_user = request.user school = self.get_object() enrollment = get_object_or_404(ProgramEnrollment, hash=request.data['enrollment_hash']) mailgun_response = MailgunClient.send_individual_email( subject="MicroMasters Program Record", body=render_to_string( 'grades_record_email.html', { 'user_full_name': sender_user.profile.full_name, 'pathway_name': school.name, 'program_name': enrollment.program.title, 'record_link': request.build_absolute_uri( reverse('grade_records', args=[request.data['enrollment_hash']]) ), }), recipient=school.email, sender_address=sender_user.email, sender_name=sender_user.profile.display_name, ) return Response( status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response) )
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ sender_user = request.user school = self.get_object() enrollment = get_object_or_404(ProgramEnrollment, hash=request.data['enrollment_hash']) mailgun_response = MailgunClient.send_individual_email( subject="MicroMasters Program Record", body=render_to_string( 'grades_record_email.html', { 'user_full_name': sender_user.profile.full_name, 'pathway_name': school.name, 'program_name': enrollment.program.title, 'record_link': request.build_absolute_uri( reverse('grade_records', args=[request.data['enrollment_hash']])), }), recipient=school.email, sender_address=sender_user.email, sender_name=sender_user.profile.display_name, ) return Response(status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response))
def test_generate_mailgun_response_json(self): """ Tests that generate_mailgun_response_json() returns response.json() """ response = Mock(spec=Response, status_code=status.HTTP_200_OK, json=mocked_json()) assert generate_mailgun_response_json(response) == response.json()
def _make_batch_response_dict(response, exception): """ Helper function to format a portion of a batch response """ if exception is not None: return {"data": str(exception)} return { "status_code": response.status_code, "data": generate_mailgun_response_json(response), }
def test_generate_mailgun_response_json(self): """ Tests that generate_mailgun_response_json() returns response.json() """ response = Mock( spec=Response, status_code=status.HTTP_200_OK, json=mocked_json() ) assert generate_mailgun_response_json(response) == response.json()
def _make_batch_response_dict(response, exception): """ Helper function to format a portion of a batch response """ if exception is not None: return { "data": str(exception) } return { "status_code": response.status_code, "data": generate_mailgun_response_json(response), }
def post(self, request, *args, **kwargs): # pylint: disable=unused-argument """ Post request to send emails to an individual learner """ financial_aid = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_financial_aid_email( body=serializer.data['email_body'], acting_user=request.user, subject=serializer.data['email_subject'], financial_aid=financial_aid) return Response(status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response))
def test_generate_mailgun_response_json_with_failed_json_call(self): """ Tests that generate_mailgun_response_json() returns without erroring if Response.json() call fails for non 401 status code """ # Response.json() error response = Mock( spec=Response, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, json=lambda: (_ for _ in []).throw( ValueError), # To get .json() to throw ValueError reason="reason") self.assertDictEqual(generate_mailgun_response_json(response), {"message": response.reason})
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ user = request.user course = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_course_team_email( user=user, course=course, subject=serializer.data['email_subject'], body=serializer.data['email_body']) return Response(status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response))
def test_generate_mailgun_response_json_with_failed_json_call(self): """ Tests that generate_mailgun_response_json() returns without erroring if Response.json() call fails for non 401 status code """ # Response.json() error response = Mock( spec=Response, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, json=lambda: (_ for _ in []).throw(ValueError), # To get .json() to throw ValueError reason="reason" ) self.assertDictEqual( generate_mailgun_response_json(response), {"message": response.reason} )
def post(self, request, *args, **kwargs): """ Post request to send emails to an individual learner """ financial_aid = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_financial_aid_email( body=serializer.data['email_body'], acting_user=request.user, subject=serializer.data['email_subject'], financial_aid=financial_aid ) return Response( status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response) )
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ sender_user = request.user recipient_user = self.get_object().user serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_individual_email( subject=request.data['email_subject'], body=request.data['email_body'], recipient=recipient_user.email, sender_address=sender_user.email, sender_name=sender_user.profile.display_name, ) return Response(status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response))
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ user = request.user course = self.get_object() serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_course_team_email( user=user, course=course, subject=serializer.data['email_subject'], body=serializer.data['email_body'] ) return Response( status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response) )
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ sender_user = request.user recipient_user = self.get_object().user serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) mailgun_response = MailgunClient.send_individual_email( subject=request.data['email_subject'], body=request.data['email_body'], recipient=recipient_user.email, sender_address=sender_user.email, sender_name=sender_user.profile.display_name, ) return Response( status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response) )
def post(self, request, *args, **kargs): # pylint: disable=unused-argument """ POST method handler """ sender_user = request.user school = self.get_object() enrollment = get_object_or_404( ProgramEnrollment, share_hash=request.data['enrollment_hash']) mailgun_response = MailgunClient.send_individual_email( subject="MicroMasters Program Record", body=render_to_string( 'grades_record_email.html', { 'user_full_name': sender_user.profile.full_name, 'pathway_name': school.name, 'program_name': enrollment.program.title, 'record_link': request.build_absolute_uri( reverse("shared_grade_records", kwargs=dict( enrollment_id=enrollment.id, record_share_hash=enrollment.share_hash))), }), recipient=school.email, sender_address=sender_user.email, sender_name=sender_user.profile.display_name, ) if mailgun_response.status_code == 200: _ = MicromastersLearnerRecordShare.objects.get_or_create( user=sender_user, program=enrollment.program, partner_school=school) return Response(status=mailgun_response.status_code, data=generate_mailgun_response_json(mailgun_response))