def _add_deadlines(self):
     new_deadline = self.CONTENT['deadline']
     text = self.CONTENT['text']
     deadlines = []
     with transaction.commit_manually():
         try:
             groups = self._query_creategroups()
             if len(groups) == 0:
                 raise BadRequestFieldError('createmode',
                                            _('The given option did not match any groups.'))
             for group in groups:
                 deadline = Deadline(assignment_group=group)
                 deadline.deadline = new_deadline
                 deadline.text = text
                 deadline.full_clean()
                 deadline.save()
                 deadlines.append(deadline)
                 logger.info('User=%s created Deadline id=%s (%s)', self.user, deadline.id, deadline.deadline)
         except ValidationError as e:
             transaction.rollback()
             raise ValidationErrorResponse(e)
         except Exception as e:
             transaction.rollback()
             raise
         else:
             transaction.commit()
     return deadlines
Ejemplo n.º 2
0
    def test_deadline_notunique(self):
        self.add_to_path('uni;sub.p1:begins(-2).a1.g1.d1:ends(5)')
        self.add_to_path('uni;sub.p1.a1.g2.d1:ends(5)')

        g1 = self.sub_p1_a1_g1
        d1 = self.sub_p1_a1_g1_d1
        g2_d1 = self.sub_p1_a1_g2_d1

        # Ensure that we are not checking outside the group (the tests below would fail if this fails)
        self.assertEquals(d1.deadline, g2_d1.deadline)

        # Will not fail because id matches in the validator
        d1.full_clean()

        d2 = Deadline(assignment_group=g1, deadline=d1.deadline)
        with self.assertRaises(ValidationError):
            d2.full_clean()
Ejemplo n.º 3
0
 def _addFirstDeadline(self, group):
     from devilry.apps.core.models import Deadline
     deadline = Deadline(assignment_group=group, deadline=group.parentnode.first_deadline)
     deadline.full_clean()
     deadline.save()