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
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()
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()