示例#1
0
 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)
     )
示例#2
0
 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))
示例#3
0
 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()
示例#4
0
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),
    }
示例#5
0
 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()
示例#6
0
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),
    }
示例#7
0
 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))
示例#8
0
 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})
示例#9
0
 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))
示例#10
0
 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}
     )
示例#11
0
 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)
     )
示例#12
0
 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))
示例#13
0
 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)
     )
示例#14
0
 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)
     )
示例#15
0
    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))