diff options
Diffstat (limited to 'GradeBook_lib.tcl')
-rwxr-xr-x | GradeBook_lib.tcl | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/GradeBook_lib.tcl b/GradeBook_lib.tcl index f534c84..0b91928 100755 --- a/GradeBook_lib.tcl +++ b/GradeBook_lib.tcl @@ -27,6 +27,7 @@ proc default_grades_category {} { Quiz\ HomeWork\ LabReport\ + Participation\ MidTerm\ FinalExam\ ] @@ -34,17 +35,33 @@ proc default_grades_category {} { } proc getGradingWeights { } { - return [ list \ - HomeWork .15 \ - Quiz .10 \ - LabReport .25 \ - Participation .05 \ - MidTerm .20 \ - Final .25 \ - ] + set category_name_weight_list {} + set eval_str [concat SELECT CategoryName,CategoryWeight FROM GradesCategoryTable] + set err [catch { + db eval $eval_str v { + set category $v(CategoryName) + set weight $v(CategoryWeight) + if { ![string is double -strict $weight] } { + htmlInfoMsg "weight for category: $category is not a number, setting it to 0" + set weight 0 + ModifyWeightForGradesCategory db $category 0 + } + lappend category_name_weight_list $category $weight + } + } errStat ] + if { $err } { + dbg "we should never be here if GradesCategoryTable exists" 1 + dbg $errStat 1 + htmlErrorMsg $errStat + } + return $category_name_weight_list } proc isCalculateTotalForCategorySet { category } { + if {![db exists {SELECT 1 FROM GradesCategoryTable WHERE CategoryName=$category}]} { + dbg "Category: $category does not exists in the GradesCategoryTable, setting CalculateTotal to false" 3 + return false + } switch $category { "unset" {set flag false} Quiz {set flag true} @@ -355,6 +372,19 @@ proc GetDefaultGradesTableColumn {} { return $l } +proc ModifyNeedsTotalForGradesCategory {db category flag} { + if {![db exists {SELECT 1 FROM GradesCategoryTable WHERE CategoryName=$category}]} { + dbg "Category: $category already does not exists in the GradesCategoryTable, creating it" 3 + AddGradesCategory db $category + } + set eval_str [concat UPDATE GradesCategoryTable SET \"NeedsTotal\"='$flag' WHERE \"CategoryName\"=\'$category\'] + set err [catch {db eval $eval_str } errStat] + if { $err } { + htmlErrorMsg $errStat + dbg "the following error happen: $errStat" 3 + } +} + proc ModifyWeightForGradesCategory {db category weight} { if {![db exists {SELECT 1 FROM GradesCategoryTable WHERE CategoryName=$category}]} { dbg "Category: $category already does not exists in the GradesCategoryTable, creating it" 3 @@ -379,11 +409,13 @@ proc AddGradesCategory {db category} { htmlErrorMsg $errStat dbg "the following error happen: $errStat" 3 } + ModifyWeightForGradesCategory db $category 0 + ModifyNeedsTotalForGradesCategory db $category false } proc CreateGradesCategoryTable {db} { # construct sql string for table creation - set sql_str {CREATE TABLE GradesCategoryTable(CategoryName text, CategoryWeight float)} + set sql_str {CREATE TABLE GradesCategoryTable(CategoryName text, CategoryWeight float, NeedsTotal text)} set err [catch {db eval $sql_str } errStat] if { $err && ($errStat ne "table GradesCategoryTable already exists") } { @@ -424,7 +456,7 @@ proc UpdateGradesCategores { db permission_list user } { proc EditGradesCategories { db permission_list user } { global script_name - lappend column_list CategoryName CategoryWeight + lappend column_list CategoryName CategoryWeight NeedsTotal set sql_column_list [join $column_list ","] puts {<div class="change_categories">} puts {<div class="categories_table">} |