def test_feedbackset_created_with_published_feedbackset_with_comment(self): group = mommy.make('core.AssignmentGroup') examiner = mommy.make('core.Examiner', assignmentgroup=group, relatedexaminer=mommy.make('core.RelatedExaminer')) group_mommy.feedbackset_first_attempt_published(group=examiner.assignmentgroup, grading_published_by=examiner.relatedexaminer.user) timestr = (datetimeutils.get_current_datetime() + timezone.timedelta(days=2)).strftime('%Y-%m-%d %H:%M') comment_text = 'New attempt given' self.mock_http302_postrequest( cradmin_role=examiner.assignmentgroup, requestuser=examiner.relatedexaminer.user, viewkwargs={'pk': examiner.assignmentgroup.id}, requestkwargs={ 'data': { 'deadline_datetime': timestr, 'text': comment_text, 'examiner_create_new_feedbackset': 'unused value', } }) feedbacksets = group_models.FeedbackSet.objects.all() self.assertEquals(2, len(feedbacksets)) self.assertEquals(datetime.strptime(timestr, '%Y-%m-%d %H:%M'), feedbacksets[1].deadline_datetime) comments = group_models.GroupComment.objects.all() self.assertEquals(1, len(comments)) self.assertEquals(comments[0].feedback_set_id, feedbacksets[1].id) self.assertEquals(comments[0].text, comment_text)
def __create_new_feedbackset(self, comment, new_deadline): """ Creates a new :class:`devilry.devilry_group.models.FeedbackSet` as long as the ``new_deadline`` is in the future. :Note: Extra constraints to the new deadline and creation of a FeedbackSet may be added. Args: comment (GroupComment): Comment to be posted with the new FeedbackSet new_deadline (DateTime): The deadline. Returns: FeedbackSet: returns the newly created :class:`devilry.devilry_group.models.FeedbackSet` instance. """ # Make sure the deadline is in the future. if new_deadline <= datetimeutils.get_current_datetime(): messages.error(self.request, ugettext_lazy('Deadline must be ahead of current date and time')) return None # Update current last feedbackset in group before # creating the new feedbackset. self.__update_current_feedbackset(comment) # Create a new :class:`~devilry.devilry_group.models.FeedbackSet` and save it. feedbackset = group_models.FeedbackSet( group=self.request.cradmin_role, feedbackset_type=group_models.FeedbackSet.FEEDBACKSET_TYPE_NEW_ATTEMPT, created_by=comment.user, deadline_datetime=new_deadline ) feedbackset.full_clean() feedbackset.save() return feedbackset
def __create_new_feedbackset(self, comment, new_deadline): if new_deadline <= datetimeutils.get_current_datetime(): messages.error(self.request, ugettext_lazy('Deadline must be ahead of current date and time')) return None # Update current last feedbackset in group before # creating the new feedbackset. current_feedbackset = group_models.FeedbackSet.objects.get(id=comment.feedback_set_id) current_feedbackset.is_last_in_group = None current_feedbackset.grading_published_by = comment.user current_feedbackset.full_clean() current_feedbackset.save() feedbackset = group_models.FeedbackSet( group=self.request.cradmin_role, feedbackset_type=group_models.FeedbackSet.FEEDBACKSET_TYPE_NEW_ATTEMPT, created_by=comment.user, deadline_datetime=new_deadline ) feedbackset.full_clean() feedbackset.save() return feedbackset
def __create_new_feedbackset(self, comment, new_deadline): """ Creates a new :class:`devilry.devilry_group.models.FeedbackSet` as long as the ``new_deadline`` is in the future. :Note: Extra constraints to the new deadline and creation of a FeedbackSet may be added. Args: comment (GroupComment): Comment to be posted with the new FeedbackSet new_deadline (DateTime): The deadline. Returns: FeedbackSet: returns the newly created :class:`devilry.devilry_group.models.FeedbackSet` instance. """ # Make sure the deadline is in the future. if new_deadline <= datetimeutils.get_current_datetime(): messages.error( self.request, ugettext_lazy( 'Deadline must be ahead of current date and time')) return None # Update current last feedbackset in group before # creating the new feedbackset. self.__update_current_feedbackset(comment) # Create a new :class:`~devilry.devilry_group.models.FeedbackSet` and save it. feedbackset = group_models.FeedbackSet( group=self.request.cradmin_role, feedbackset_type=group_models.FeedbackSet. FEEDBACKSET_TYPE_NEW_ATTEMPT, created_by=comment.user, deadline_datetime=new_deadline) feedbackset.full_clean() feedbackset.save() return feedbackset