[LON-CAPA-cvs] cvs: loncom /homework grades.pm

bowersj2 lon-capa-cvs@mail.lon-capa.org
Sun, 02 Apr 2006 00:17:30 -0000


bowersj2		Sat Apr  1 19:17:30 2006 EDT

  Modified files:              
    /loncom/homework	grades.pm 
  Log:
  For bug 4648, don't die when uploading a CSV score value on problems
  of weight 0, and show a message that some scores were skipped as a result.
  
  
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.344 loncom/homework/grades.pm:1.345
--- loncom/homework/grades.pm:1.344	Tue Mar 28 13:07:24 2006
+++ loncom/homework/grades.pm	Sat Apr  1 19:17:26 2006
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.344 2006/03/28 18:07:24 albertel Exp $
+# $Id: grades.pm,v 1.345 2006/04/02 00:17:26 bowersj2 Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -3510,6 +3510,7 @@
     my ($request)= @_;
     my ($symb)=&get_symb($request);
     if (!$symb) {return '';}
+    my $error_msg = '';
     &Apache::loncommon::load_tmp_file($request);
     my @gradedata = &Apache::loncommon::upfile_record_sep();
     if ($env{'form.noFirstLine'}) { shift(@gradedata); }
@@ -3562,12 +3563,20 @@
 		my $part=$1;
 		my $wgt =&Apache::lonnet::EXT('resource.'.$part.'.weight',
 					      $symb,$domain,$username);
-		$entries{$fields{$dest}}=~s/\s//g;
-		my $pcr=$entries{$fields{$dest}} / $wgt;
-		my $award='correct_by_override';
-		$grades{"resource.$part.awarded"}=$pcr;
-		$grades{"resource.$part.solved"}=$award;
-		$points{$part}=1;
+                if ($wgt) {
+                    $entries{$fields{$dest}}=~s/\s//g;
+                    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 {
+                    $error_msg = "<br />" .
+                        &mt("Some point values were assigned"
+                            ." for problems with a weight "
+                            ."of zero. These values were "
+                            ."ignored.");
+                }
 	    } else {
 		if ($dest=~/stores_(.*)_awarded/) { if ($points{$1}) {next;} }
 		if ($dest=~/stores_(.*)_solved/)  { if ($points{$1}) {next;} }
@@ -3607,7 +3616,7 @@
     }
     $request->print("<br />\n");
     $request->print(&show_grading_menu_form($symb));
-    return '';
+    return $error_msg;
 }
 #------------- end of section for handling csv file upload ---------
 #