[LON-CAPA-cvs] cvs: loncom /homework grades.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Sat, 12 Feb 2005 03:14:44 -0000
albertel Fri Feb 11 22:14:44 2005 EDT
Modified files:
/loncom/homework grades.pm
Log:
- now allows one to upload 'Points' -> this sets the internal awarded status, and solved status correctly
- if there is no data to be set for a student it notifies the user of this
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.243 loncom/homework/grades.pm:1.244
--- loncom/homework/grades.pm:1.243 Fri Feb 11 21:37:00 2005
+++ loncom/homework/grades.pm Fri Feb 11 22:14:44 2005
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.243 2005/02/12 02:37:00 albertel Exp $
+# $Id: grades.pm,v 1.244 2005/02/12 03:14:44 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -2781,6 +2781,9 @@
my $name=$part;
if (!$display) { $display = $name; }
@datum=($name,$display);
+ if ($name=~/^stores_(.*)_awarded/) {
+ push(@fields,['stores_'.$1.'_points',"Points [Part: $1]"]);
+ }
push(@fields,\@datum);
}
return (@fields);
@@ -2923,16 +2926,33 @@
push(@notallowed,"$username:$domain");
next;
}
+ my %points;
my %grades;
foreach my $dest (keys(%fields)) {
- if ($dest eq 'username' || $dest eq 'domain') { next; }
- if ($entries{$fields{$dest}} eq '') { next; }
- my $store_key=$dest;
- $store_key=~s/^stores/resource/;
- $store_key=~s/_/\./g;
- $grades{$store_key}=$entries{$fields{$dest}};
+ if ($dest eq 'ID' || $dest eq 'username' ||
+ $dest eq 'domain') { next; }
+ if ($entries{$fields{$dest}} =~ /^\s*$/) { next; }
+ if ($dest=~/stores_(.*)_points/) {
+ my $part=$1;
+ my $wgt =&Apache::lonnet::EXT('resource.'.$part.'.weight',
+ $symb,$domain,$username);
+ my $pcr=$entries{$fields{$dest}} / $wgt;
+ my $award='correct_by_override';
+ $grades{"resource.$part.awarded"}=$pcr;
+ $grades{"resource.$part.solved"}=$award;
+ $points{$part}=1;
+ } else {
+ if ($dest=~/stores_(.*)_awarded/) { if ($points{$1}) {next;} }
+ if ($dest=~/stores_(.*)_solved/) { if ($points{$1}) {next;} }
+ my $store_key=$dest;
+ $store_key=~s/^stores/resource/;
+ $store_key=~s/_/\./g;
+ $grades{$store_key}=$entries{$fields{$dest}};
+ }
}
+ if (! %grades) { push(@skipped,"$username:$domain no data to store"); }
$grades{"resource.regrader"}="$ENV{'user.name'}:$ENV{'user.domain'}";
+# &Apache::lonnet::logthis(" storing ".(join('-',%grades)));
&Apache::lonnet::cstore(\%grades,$symb,$ENV{'request.course.id'},
$domain,$username);
$request->print('.');