def put(self, request, id): self.assignment = self._get_assignment(id) marker = MarkAsPassedInPreviousPeriod(self.assignment) gradeeditor_config, shortformat = self._get_gradeeditor_config_and_shortformat() with transaction.commit_on_success(): for item in self.CONTENT: group = self.assignment.assignmentgroups.get(id=item['id']) newfeedback_shortformat = item['newfeedback_shortformat'] try: shortformat.validate(gradeeditor_config, newfeedback_shortformat) except ShortFormatValidationError as e: raise ValidationErrorResponse(e) feedback = shortformat.to_staticfeedback_kwargs(gradeeditor_config, newfeedback_shortformat) if not feedback['is_passing_grade']: raise BadRequestFieldError('newfeedback_shortformat', 'Must be a passing grade') feedback['rendered_view'] = '' feedback['saved_by'] = self.request.user oldgroup = None try: oldgroup = marker.find_previously_passed_group(group) except MarkAsPassedInPreviousPeriodError: pass created_feedback = marker.mark_as_delivered_in_previous(group, oldgroup=oldgroup, feedback=feedback) return self._get_result()
def handle(self, *args, **kwargs): from devilry.apps.core.models import Subject, Period, Assignment if len(args) != 3: raise CommandError('Subject, period and assignment short_name is required. See --help.') subject_short_name = args[0] period_short_name = args[1] assignment_short_name = args[2] subject = self._get_or_error(Subject, short_name=subject_short_name) period = self._get_or_error(Period, short_name=period_short_name, parentnode=subject) assignment = self._get_or_error(Assignment, short_name=assignment_short_name, parentnode=period) marker = MarkAsPassedInPreviousPeriod(assignment) result = marker.mark_all(pretend=kwargs['pretend']) print print '#' * 70 print '# Ignored groups, ordered by reason for ignoring' print '#' * 70 for reason, groups in result['ignored'].iteritems(): print print reason print '-' * 70 pprint(groups) print print '#' * 70 print '# Groups marked as passed in previous period' print '#' * 70 marked = result['marked'] if marked: for group, oldgroup in result['marked']: feedback = oldgroup.feedback if feedback.is_passing_grade: status = 'Passed' else: status = 'Failed' print '- {0}'.format(group) print ' copied from: {0}'.format(oldgroup) print ' feedback: {0} ({1}) (points:{2})'.format(status, feedback.grade, feedback.points) else: print 'No groups with passing grade in previous periods found'
def put(self, request, id): self.assignment = self._get_assignment(id) marker = MarkAsPassedInPreviousPeriod(self.assignment) with transaction.commit_on_success(): for item in self.CONTENT: group = self.assignment.assignmentgroups.get(id=item['id']) newfeedback_points = item['newfeedback_points'] feedback = StaticFeedback.from_points( assignment=self.assignment, points=newfeedback_points, rendered_view='', saved_by=self.request.user) if not feedback.is_passing_grade: raise BadRequestFieldError('newfeedback_points', 'Must be a passing grade') oldgroup = None try: oldgroup = marker.find_previously_passed_group(group) except MarkAsPassedInPreviousPeriodError: pass marker.mark_as_delivered_in_previous(group, oldgroup=oldgroup, feedback=feedback) return self._get_result()
def _get_result(self): marker = MarkAsPassedInPreviousPeriod(self.assignment) result = marker.mark_all(pretend=True) gradeeditor_config, shortformat = self._get_gradeeditor_config_and_shortformat() return ResultSerializer(gradeeditor_config, shortformat, result).serialize()
def _get_result(self): marker = MarkAsPassedInPreviousPeriod(self.assignment) result = marker.mark_all(pretend=True) return ResultSerializer(result).serialize()