aboutsummaryrefslogtreecommitdiff
path: root/csv2GradeBook.tcl
blob: 7c52ee6910ee0d3b75d46471621a2a377f7cfd28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/sh
# (C) 2011 by Eugeniy Mikhailov, <evgmik@gmail.com>
# vim:set ft=tcl: \
exec tclsh "$0" "$@"

package require sqlite3
package require md5
source ./GradeBook_lib.tcl

if { $argc < 2 } {	
	puts {Usage:}
	puts "  $argv0 database_name file_with_csv"
	puts {}
	puts {  expect the csv file with following fields:}
	puts {    sid, FName, LName, Section, email}
	puts {}
	puts {Example:}
	puts [concat "  $argv0" { 2013_Spring_Phys742 roster.csv}]
	exit
}

set class [lindex $argv 0] 
if { $class eq "" } {
	set class dummy_class
} 

set csvfile [lindex $argv 1]

set dbfile $class

sqlite3 db $dbfile

proc dbg {msg {level 1}} {
	if { $level <=2 } {
		set fid [open log a+]
		puts $fid $msg 
		close $fid
	}
}

proc htmlErrorMsg { msg } {
			puts "<div class=\"errormsg\">error: $msg</div>"
}

proc AddUserNonWeb { first_name last_name user_name {group_name {guest}} {id_number {}} {section_num {} } } {
	set eval_str [concat INSERT INTO GradesTable (FirstName, LastName, UserName, GroupName, IdNum, SectionNum) VALUES('$first_name', '$last_name', '$user_name', '$group_name', '$id_number', '$section_num')]
	set err [catch {db eval $eval_str  } errStat]
	if { $err } {
		htmlErrorMsg  $errStat 
		dbg  "the following error happen: $errStat" msg_level_critical
	} 
}


#AddUserNonWeb  first_name last_name user_name password_hash group_name id_number section_num i
# dummy users


set fp [open $csvfile r]
while {-1 != [gets $fp line]} {
	#puts "The current line is '$line'."
	set data [split $line ,]
	set id     [lindex $data 0]
	set fname  [lindex $data 1]
	set lname  [lindex $data 2]
	set sect   [lindex $data 3]
	set email  [lindex $data 4]
	#puts "$fname $lname $email {} student $id $sect"
	AddUserNonWeb $fname $lname $email student $id $sect
}




# vim: ts=2 sw=2 foldmethod=indent: