def test_bulk_send_emails_message_and_messagereceivers_created(self):
     new_deadline = datetime.utcnow()
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start',
                                        long_name='Assignment 1')
     testgroup1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     testgroup2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     testgroup3 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     test_fb1 = group_mommy.feedbackset_first_attempt_published(
         group=testgroup1, grading_points=1, deadline_datetime=new_deadline)
     test_fb2 = group_mommy.feedbackset_first_attempt_published(
         group=testgroup2, grading_points=1, deadline_datetime=new_deadline)
     test_fb3 = group_mommy.feedbackset_first_attempt_published(
         group=testgroup3, grading_points=1, deadline_datetime=new_deadline)
     student1 = mommy.make('core.Candidate', assignment_group=testgroup1)
     mommy.make('devilry_account.UserEmail', user=student1.relatedstudent.user, email='*****@*****.**')
     student2 = mommy.make('core.Candidate', assignment_group=testgroup2)
     mommy.make('devilry_account.UserEmail', user=student2.relatedstudent.user, email='*****@*****.**')
     student3 = mommy.make('core.Candidate', assignment_group=testgroup3)
     mommy.make('devilry_account.UserEmail', user=student3.relatedstudent.user, email='*****@*****.**')
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=testassignment.id,
         feedbackset_id_list=[test_fb1.id, test_fb2.id, test_fb3.id],
         domain_url_start='http://www.example.com/')
     self.assertEqual(len(mail.outbox), 3)
     self.assertEqual(Message.objects.count(), 3)
     self.assertEqual(MessageReceiver.objects.count(), 3)
    def __give_new_attempt(self, deadline, text, assignment_group_ids):
        """
        Give a new attempt to the selected ``AssignmentGroups``. This will create new ``FeedbackSet``s with
        the new deadline, and an attached ``GroupComment``.

        Args:
            deadline: The new deadline.
            text: comment text.
            assignment_group_ids: groups that gets a new attempt.
        """
        now_without_sec_and_micro = timezone.now().replace(microsecond=0)
        with transaction.atomic():
            feedbackset_id_list = []
            for group_id in assignment_group_ids:
                feedbackset_id = self.__create_feedbackset(
                    group_id=group_id,
                    deadline=deadline,
                    created_datetime=now_without_sec_and_micro)
                self.__create_groupcomment(
                    feedback_set_id=feedbackset_id,
                    publishing_time=now_without_sec_and_micro +
                    timezone.timedelta(microseconds=1),
                    text=text)
                feedbackset_id_list.append(feedbackset_id)
            # deadline_email.bulk_send_new_attempt_email(
            #     feedbackset_id_list=feedbackset_id_list,
            #     domain_url_start=self.request.build_absolute_uri('/'))
            deadline_email.bulk_send_new_attempt_email(
                assignment_id=self.assignment.id,
                feedbackset_id_list=feedbackset_id_list,
                domain_url_start=self.request.build_absolute_uri('/'))
    def __give_new_attempt(self, deadline, text, assignment_group_ids):
        """
        Give a new attempt to the selected ``AssignmentGroups``. This will create new ``FeedbackSet``s with
        the new deadline, and an attached ``GroupComment``.

        Args:
            deadline: The new deadline.
            text: comment text.
            assignment_group_ids: groups that gets a new attempt.
        """
        now_without_sec_and_micro = timezone.now().replace(microsecond=0)
        with transaction.atomic():
            feedbackset_id_list = []
            for group_id in assignment_group_ids:
                feedbackset_id = self.__create_feedbackset(
                    group_id=group_id,
                    deadline=deadline,
                    created_datetime=now_without_sec_and_micro
                )
                self.__create_groupcomment(
                    feedback_set_id=feedbackset_id,
                    publishing_time=now_without_sec_and_micro + timezone.timedelta(microseconds=1),
                    text=text
                )
                feedbackset_id_list.append(feedbackset_id)
            # deadline_email.bulk_send_new_attempt_email(
            #     feedbackset_id_list=feedbackset_id_list,
            #     domain_url_start=self.request.build_absolute_uri('/'))
            deadline_email.bulk_send_new_attempt_email(
                assignment_id=self.assignment.id,
                feedbackset_id_list=feedbackset_id_list,
                domain_url_start=self.request.build_absolute_uri('/'))
示例#4
0
 def test_send_new_attempt_email_recipients(self):
     test_feedbackset = self.__setup_feedback_set(
         new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/')
     self.assertEqual(mail.outbox[0].recipients(), ['*****@*****.**'])
 def test_send_new_attempt_email_recipients(self):
     test_feedbackset = self.__setup_feedback_set(new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/'
     )
     self.assertEqual(mail.outbox[0].recipients(), ['*****@*****.**'])
示例#6
0
 def test_send_new_attempt_email_message_and_messagereceivers_created(self):
     test_feedbackset = self.__setup_feedback_set(
         new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/')
     self.assertEqual(Message.objects.count(), 1)
     self.assertEqual(MessageReceiver.objects.count(), 1)
 def test_send_new_attempt_email_message_and_messagereceivers_created(self):
     test_feedbackset = self.__setup_feedback_set(new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/'
     )
     self.assertEqual(Message.objects.count(), 1)
     self.assertEqual(MessageReceiver.objects.count(), 1)
示例#8
0
 def test_send_new_attempt_email_subject(self):
     test_feedbackset = self.__setup_feedback_set(
         new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/')
     self.assertEqual(
         mail.outbox[0].subject, '[Devilry] New attempt for {}'.format(
             test_feedbackset.group.parentnode.long_name))
 def test_send_new_attempt_email_subject(self):
     test_feedbackset = self.__setup_feedback_set(new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/'
     )
     self.assertEqual(
         mail.outbox[0].subject,
         '[Devilry] New attempt for {}'.format(test_feedbackset.group.parentnode.long_name))
示例#10
0
 def test_send_new_attempt_email_link(self):
     test_feedbackset = self.__setup_feedback_set(
         new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/')
     feedback_link = 'http://www.example.com/devilry_group/student/{}/feedbackfeed/'.format(
         test_feedbackset.group.id)
     self.assertEqual(
         htmls.S(mail.outbox[0].message().as_string()).one(
             '.devilry_email_deadline_new_attempt_detail_url').
         alltext_normalized, feedback_link)
 def test_send_new_attempt_email_link(self):
     test_feedbackset = self.__setup_feedback_set(new_deadline=timezone.now() + timezone.timedelta(days=10))
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/'
     )
     feedback_link = 'http://www.example.com/devilry_group/student/{}/feedbackfeed/'.format(
         test_feedbackset.group.id)
     self.assertEqual(
         htmls.S(mail.outbox[0].message().as_string()).one(
             '.devilry_email_deadline_new_attempt_detail_url').alltext_normalized,
         feedback_link)
 def test_send_new_attempt_email_body_text_with_deadline(self):
     test_feedbackset = self.__setup_feedback_set(new_deadline=datetime.utcnow())
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/')
     self.assertEqual(
         htmls.S(mail.outbox[0].message().as_string()).one(
             '.devilry_email_deadline_new_attempt_info_text').alltext_normalized,
         'You have been given a new attempt in {} with deadline {}'.format(
             test_feedbackset.group.parentnode.long_name,
             defaultfilters.date(test_feedbackset.deadline_datetime, 'DATETIME_FORMAT')))
     self.assertEqual(
         htmls.S(mail.outbox[0].message().as_string()).one(
             '.devilry_email_deadline_new_attempt_detail_text').alltext_normalized,
         'See the delivery feed for more details:')
示例#13
0
 def test_send_new_attempt_email_body_text_with_deadline(self):
     test_feedbackset = self.__setup_feedback_set(
         new_deadline=datetime.utcnow())
     deadline_email.bulk_send_new_attempt_email(
         assignment_id=test_feedbackset.group.parentnode_id,
         feedbackset_id_list=[test_feedbackset.id],
         domain_url_start='http://www.example.com/')
     self.assertEqual(
         htmls.S(mail.outbox[0].message().as_string()).one(
             '.devilry_email_deadline_new_attempt_info_text').
         alltext_normalized,
         'You have been given a new attempt in {} with deadline {}'.format(
             test_feedbackset.group.parentnode.long_name,
             defaultfilters.date(test_feedbackset.deadline_datetime,
                                 'DATETIME_FORMAT')))
     self.assertEqual(
         htmls.S(mail.outbox[0].message().as_string()).one(
             '.devilry_email_deadline_new_attempt_detail_text').
         alltext_normalized, 'See the delivery feed for more details:')
示例#14
0
    def test_bulk_send_emails(self):
        new_deadline = datetime.utcnow()
        testassignment = mommy.make_recipe(
            'devilry.apps.core.assignment_activeperiod_start',
            long_name='Assignment 1')
        testgroup1 = mommy.make('core.AssignmentGroup',
                                parentnode=testassignment)
        testgroup2 = mommy.make('core.AssignmentGroup',
                                parentnode=testassignment)
        testgroup3 = mommy.make('core.AssignmentGroup',
                                parentnode=testassignment)
        test_fb1 = group_mommy.feedbackset_first_attempt_published(
            group=testgroup1, grading_points=1, deadline_datetime=new_deadline)
        test_fb2 = group_mommy.feedbackset_first_attempt_published(
            group=testgroup2, grading_points=1, deadline_datetime=new_deadline)
        test_fb3 = group_mommy.feedbackset_first_attempt_published(
            group=testgroup3, grading_points=1, deadline_datetime=new_deadline)
        student1 = mommy.make('core.Candidate', assignment_group=testgroup1)
        mommy.make('devilry_account.UserEmail',
                   user=student1.relatedstudent.user,
                   email='*****@*****.**')
        student2 = mommy.make('core.Candidate', assignment_group=testgroup2)
        mommy.make('devilry_account.UserEmail',
                   user=student2.relatedstudent.user,
                   email='*****@*****.**')
        student3 = mommy.make('core.Candidate', assignment_group=testgroup3)
        mommy.make('devilry_account.UserEmail',
                   user=student3.relatedstudent.user,
                   email='*****@*****.**')
        deadline_email.bulk_send_new_attempt_email(
            assignment_id=testassignment.id,
            feedbackset_id_list=[test_fb1.id, test_fb2.id, test_fb3.id],
            domain_url_start='http://www.example.com/')
        self.assertEqual(len(mail.outbox), 3)

        recipient_list = []
        for mail_item in mail.outbox:
            self.assertEqual(len(mail_item.recipients()), 1)
            recipient_list.append(mail_item.recipients()[0])
        self.assertIn('*****@*****.**', recipient_list)
        self.assertIn('*****@*****.**', recipient_list)
        self.assertIn('*****@*****.**', recipient_list)