Example #1
0
    def test_where_is_examiner(self):
        self.assertEquals(StaticFeedback.where_is_examiner(self.examiner1).count(), 0)
        self.add_feedback(self.inf1100_period1_assignment1_g1_deliveries[0], verdict=self.okVerdict)
        self.add_feedback(self.inf1100_period1_assignment1_g1_deliveries[1], verdict=self.okVerdict)
        self.assertEquals(StaticFeedback.where_is_examiner(self.examiner1).count(), 2)

        # Create feedback on different assignmentgroup
        self.add_to_path('uio.ifi;inf1100.period1.assignment2.group1:candidate(student2):examiner(examiner1).d1')
        self.add_delivery("inf1100.period1.assignment2.group1", self.goodFile)
        self.add_feedback(self.inf1100_period1_assignment2_group1_deliveries[0], verdict=self.okVerdict)
        self.assertEquals(StaticFeedback.where_is_examiner(self.examiner1).count(), 3)
Example #2
0
 def to_staticfeedback(self, assignment=None):
     return StaticFeedback.from_points(
         self.points,
         assignment=assignment,
         delivery=self.delivery,
         rendered_view=self.feedbacktext_html,
         saved_by=self.saved_by)
            def create_old_delivery_structure():
                deadlinebuilder = groupbuilder \
                    .add_deadline(
                        deadline=Deadline.reduce_datetime_precision(
                            assignmentbuilder.assignment.first_deadline))

                deliverybuilder = deadlinebuilder.add_delivery_x_hours_before_deadline(
                    hours=random.randint(1, 30))
                used_filenames = set()
                for number in xrange(filecount):
                    while True:
                        deliveryfile = random.choice(programs)
                        filename = deliveryfile['filename']
                        if filename not in used_filenames:
                            used_filenames.add(filename)
                            break
                    deliverybuilder.add_filemeta(
                        filename=deliveryfile['filename'],
                        data=deliveryfile['data'])

                if random.randint(0, 100) <= feedback_percent:
                    feedback = StaticFeedback.from_points(
                        assignment=assignmentbuilder.assignment,
                        saved_by=examiner,
                        delivery=deliverybuilder.delivery,
                        rendered_view=self._lorem_paras(random.randint(1, 5)),
                        points=random.randint(minpoints, maxpoints))
                    feedback.save()
Example #4
0
    def test_save_autoset_as_last_feedback_on_delivery_False(self):
        # Setup
        deliverybuilder = self.assignment1builder.add_group()\
            .add_deadline_in_x_weeks(weeks=1)\
            .add_delivery_x_hours_before_deadline(hours=1)
        feedback = StaticFeedback(
            delivery=deliverybuilder.delivery,
            points=10,
            grade='A',
            saved_by=self.testuser,
            is_passing_grade=True
        )

        # Test
        self.assertIsNone(deliverybuilder.delivery.last_feedback)
        feedback.save(autoupdate_related_models=False)
        deliverybuilder.reload_from_db()
        self.assertIsNone(deliverybuilder.delivery.last_feedback)
Example #5
0
    def test_save_autoset_as_active_feedback_on_group(self):
        # Setup
        groupbuilder = self.assignment1builder.add_group()
        delivery = groupbuilder\
            .add_deadline_in_x_weeks(weeks=1)\
            .add_delivery_x_hours_before_deadline(hours=1).delivery
        feedback = StaticFeedback(
            delivery=delivery,
            points=10,
            grade='A',
            saved_by=self.testuser,
            is_passing_grade=True
        )

        # Test
        self.assertIsNone(groupbuilder.group.feedback)
        feedback.save()
        groupbuilder.reload_from_db()
        self.assertEquals(groupbuilder.group.feedback, feedback)
Example #6
0
    def test_save_groupclose_False(self):
        # Setup
        groupbuilder = self.assignment1builder.add_group()
        delivery = groupbuilder\
            .add_deadline_in_x_weeks(weeks=1)\
            .add_delivery_x_hours_before_deadline(hours=1).delivery
        feedback = StaticFeedback(
            delivery=delivery,
            points=10,
            grade='A',
            saved_by=self.testuser,
            is_passing_grade=True
        )

        # Test
        self.assertTrue(groupbuilder.group.is_open)
        feedback.save(autoupdate_related_models=False)
        groupbuilder.reload_from_db()
        self.assertTrue(groupbuilder.group.is_open)
Example #7
0
 def test_clean_over_max_points(self):
     self.assignment1builder.update(
         points_to_grade_mapper='raw-points',
         passing_grade_min_points=4,
         max_points=19)
     deliverybuilder = self.assignment1builder.add_group()\
         .add_deadline_in_x_weeks(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1)
     with self.assertRaisesRegexp(ValidationError,
             '.*You are not allowed to give more than 19 points on this assignment.*'):
         feedback = StaticFeedback.from_points(
             assignment=self.assignment1builder.assignment,
             points=20)
Example #8
0
 def test_from_points(self):
     self.assignment1builder.update(
         points_to_grade_mapper='raw-points',
         passing_grade_min_points=4,
         max_points=10)
     deliverybuilder = self.assignment1builder.add_group()\
         .add_deadline_in_x_weeks(weeks=1)\
         .add_delivery_x_hours_before_deadline(hours=1)
     feedback = StaticFeedback.from_points(
         assignment=self.assignment1builder.assignment,
         points=5)
     self.assertEquals(feedback.grade, '5/10')
     self.assertEquals(feedback.points, 5)
     self.assertTrue(feedback.is_passing_grade)
Example #9
0
    def test_published_where_is_candidate(self):
        self.add_feedback(self.inf1100_period1_assignment1_g1_deliveries[0], verdict=self.okVerdict)
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1, active=False).count(), 0)
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1, old=False).count(), 1)

        # Feedback on old period
        self.add_feedback(self.inf1100_old_period_assignment1_g1_deliveries[0], verdict=self.okVerdict)
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1).count(), 2)
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1, active=False).count(), 1)
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1, old=False).count(), 1)

        # Set publishing time to future for period1.assignment1
        self.inf1100_period1_assignment1.publishing_time = datetime.now() + timedelta(10)
        self.inf1100_period1_assignment1.save()
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1).count(), 1)
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1, active=False).count(), 1)
        self.assertEquals(StaticFeedback.published_where_is_candidate(self.student1, old=False).count(), 0)
Example #10
0
    def to_staticfeedback(self):
        """ Return a staticfeedback generated from self. """
        config = self._get_config()
        gradeeditor = config._get_gradeeditor()
        kwargs = gradeeditor.draft_to_staticfeedback_kwargs(
            self.draft, config.config)

        # Create StaticFeedback from kwargs. We copy by key instead of **kwargs to make sure we dont get anything extra.
        return StaticFeedback(is_passing_grade=kwargs['is_passing_grade'],
                              grade=kwargs['grade'],
                              points=kwargs['points'],
                              rendered_view=kwargs['rendered_view'],
                              delivery=self.delivery,
                              save_timestamp=None,
                              saved_by=self.saved_by)
    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()
Example #12
0
    def test_published_where_is_examiner(self):
        self.add_delivery("inf1100.period1.assignment1.g2", self.goodFile)
        self.add_delivery("inf1100.period1.assignment1.g2", self.goodFile)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2).count(), 0)
        self.add_feedback(self.inf1100_period1_assignment1_g2_deliveries[0], verdict=self.okVerdict)
        self.add_feedback(self.inf1100_period1_assignment1_g2_deliveries[1], verdict=self.okVerdict)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2).count(), 2)

        # Add to old period
        self.add_delivery("inf1100.old_period.assignment1.g2", self.goodFile)
        self.add_delivery("inf1100.old_period.assignment1.g2", self.goodFile)
        self.add_feedback(self.inf1100_old_period_assignment1_g2_deliveries[0], verdict=self.okVerdict)
        self.add_feedback(self.inf1100_old_period_assignment1_g2_deliveries[1], verdict=self.okVerdict)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2).count(), 4)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2, active=False).count(), 2)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2, old=False).count(), 2)

        # Create assignment2 with delivery and feedback for examiner2
        self.add_to_path('uio.ifi;inf1100.period1.assignment2.group1:candidate(student2):examiner(examiner2).d1')
        d = self.add_delivery("inf1100.period1.assignment2.group1", self.goodFile)
        self.add_feedback(d, verdict=self.okVerdict)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2).count(), 5)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2, active=False).count(), 2)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2, old=False).count(), 3)

        # Set publishing time to future for period1.assignment1
        self.inf1100_period1_assignment1.publishing_time = datetime.now() + timedelta(10)
        self.inf1100_period1_assignment1.save()
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2).count(), 3)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2, active=False).count(), 2)

        # Set publishing time to future old_period.assignment1
        self.inf1100_old_period_assignment1.publishing_time = datetime.now() + timedelta(10)
        self.inf1100_old_period_assignment1.save()
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2).count(), 1)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2, active=False).count(), 0)
        self.assertEquals(StaticFeedback.published_where_is_examiner(self.examiner2, old=False).count(), 1)
Example #13
0
 def test_where_is_candidate(self):
     self.assertEquals(StaticFeedback.where_is_candidate(self.student1).count(), 0)
     self.add_feedback(self.inf1100_period1_assignment1_g1_deliveries[0], verdict=self.okVerdict)
     self.assertEquals(StaticFeedback.where_is_candidate(self.student1).count(), 1)
Example #14
0
 def to_staticfeedback(self, assignment=None):
     return StaticFeedback.from_points(self.points,
                                       assignment=assignment,
                                       delivery=self.delivery,
                                       rendered_view=self.feedbacktext_html,
                                       saved_by=self.saved_by)