Import adjusts points as a feature ?

Description

This issue came about from this email:

Kirk and Trainers,

From going over the import code, I found something that seems very strange to me.

In an import, if the points for a particular learner is greater than the points possible given in the assignment, either entered in the structure information, header line or the default value of 100.00 the import process will round the total points possible up to a new value. This new value depends if the old value is less than 100. If so, then it will round it to the nearest tens. If its bigger than one hundred, then it will round it to the next 100 value.

Example 1:
Student X has 150 points and the total points possible is 100. We round the total points possible to 200.

Example 2:
Student Y has 23 points and the total points possible is 5. We round the total points possible to 30.

My question(s):

1) Is this what we want it to do? I had thought we should flag it, and then let the GB2 user(IOR/Lead TA) change the value.

2) This case only seems to be enabled for completely new items. So if an item already exists and the points of a student are greater than the points possible, then it will not happen. If we are supposed to do this rounding, shouldn't it be consistent?

Attachments

2

Activity

Thomas Amsler August 7, 2010 at 11:17 PM

From Nancy's result , this is a PASS

nancy wilkison August 6, 2010 at 10:16 PM

rSmart dev server
SmartSite@UCDavis - 2.6.4.0 - Sakai 2.6.2 - Server "ucddev1"

TEST PROCESS
set up gb as categories, points based
1 - created 2 categories, added items to each
2 - graded some on-line
3 - exported and re-named item lab 2 to lab 2a, comments to comments lab 2a
4 - graded real people > 10 point score and sakaistus <10 points
5 - imported
6 - popup says "one or more scores cannot be uploaded because they are not in the correct
format or because scores are higher than the maximum...entries have been highlighted in red" - ok
preview shows lab 2a rename BUT it's Unassigned instead of being in the original category.
there's not a lab 2 in the preview items list - ok?
7 - preview scores are highlighted and oddly, text is grey italicized , which makes sense as new item is
Unassigned and currently not included in grade...so lab 2's original association with it's category is not
passed to lab 2a <-------is this how it should be??
8 - after import, gb still has lab 2 in correct category, lab 2a has been imported and only the scores <10 for 2a - ok

QA RESULTS -
pass?
other than the foibles in 6 and 7, the final result looks good.

Thomas Amsler August 6, 2010 at 4:09 PM
Edited

QA Test plan:

  • Create a points gradebook with categories and a few grade items

  • Export the gradebook

  • In the export file, rename one of the assignments (make sure to change the comment name accordingly)

  • Assign points that are greater than points possible for the grade item

  • Import the the export file

You should see that the grade items that have "invalid" point entries that are marked red and an error message. See screen captures GRBK-629-1.png and GRBK-629-2.png
Also, the point values that are marked as red are "dropped" as the import is completed

Thomas Amsler July 8, 2010 at 4:24 PM

The bugfix is as described above:

1. color the cell background red
2. show message, similar to errors, indicating that there are invalid grades
3. have a tool tip explaining the issue

I was able to do 1 and 2 but NOT 3.

Thomas Amsler July 8, 2010 at 2:47 PM
Edited

The "auto" adjusting of total points possible for a Grade Item only occurs in cases where a new Grade Item is added via the import process.

e.g.
User adds new Grade Item to import file, or renames an existing one. In that case the GradeItem has an ItemId of "-1", which triggers the GradeItem's total points adjustment.

private boolean handleSpecialPointsCaseForItem(Item item, double d, ImportExportInformation ieInfo) {
boolean isFailure = false;
if (item != null) {
Double points = item.getPoints();
if (points != null) {
if (points.doubleValue() < d) {

if (item.getItemId() != null && item.getItemId().equals(Long.valueOf(-1l))) {
// Ensure that we have an int
d = Math.ceil(d);
// Round to the nearest hundred if d > 100,
// otherwise, round to the nearest ten
if (d > 100) {
d = d / 100;
d = Math.ceil(d);
d = d * 100;
} else if (d > 10) {
d = d / 10;
d = Math.ceil(d);
d = d * 10;
}
item.setPoints(d);
} else {
isFailure = true;
ieInfo.setInvalidScore(true);
}
}
}
}
return isFailure;
}

Fixed

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

Created June 16, 2010 at 2:02 PM
Updated August 10, 2010 at 9:30 AM
Resolved July 8, 2010 at 4:23 PM