Rev 5164 | Rev 9909 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
# GetCSV
# Telecharge un fichier tableur des notes de la classe
# NB : a comparer avec "Download" et "getScores" ?
!bound format within csv, tsv, xls default csv
!read scripts/check.class
!if $error!=$empty
!exit
!endif
!readdef $classdeffile
usercnt=!recordcnt wimshome/log/classes/$qclass/.userlist
!default option=login,name
quote="
fbase=data-$qclass
fbase=!translate internal / to _ in $fbase
fname=$wims_sesdir/spreadsheet
dl=!singlespace $option
dl=!lower $dl
!for t in average,sheet,exam,manual
dl=!replace $t $ by $t in $dl
!next t
dl=!items2words $dl
dl=!replace word names by name in $dl
dl=!replace grade by manual in $dl
dl=!replace word allscores by allscore in $dl
dl=!replace word name by lastname firstname in $dl
dl=!replace word allscore by averages sheets exams manuals in $dl
basic=login lastname firstname password email regnum comments external_auth
scnt=!recordcnt wimshome/log/classes/$qclass/sheets/.sheets
activesh=
!for i=1 to $scnt
l=!record $i of wimshome/log/classes/$qclass/sheets/.sheets
l=!word 1 of $l
!if $l>0
activesh=!append item $i to $activesh
!endif
!next i
sheetcnt=!itemcnt $activesh
sh=
!for i in $activesh
sh=$sh sheet$i
l=!record $i of wimshome/log/classes/$qclass/sheets/.sheets
name=!line 3 of $l
name_sheet$i=$quote$name$quote
!next i
good=$basic $sh
scnt=!recordcnt wimshome/log/classes/$qclass/exams/.exams
activexams=
!for i=1 to $scnt
l=!record $i of wimshome/log/classes/$qclass/exams/.exams
l=!word 1 of $l
!if $l>0
activexams=!append item $i to $activexams
!endif
!next i
examcnt=!itemcnt $activexams
ex=
!for i in $activexams
ex=$ex exam$i
l=!record $i of wimshome/log/classes/$qclass/exams/.exams
name=!line 4 of $l
name_exam$i=$quote$name$quote
!next i
good=$good $ex
ma=
l=!record 1 of wimshome/log/classes/$qclass/.grades
!distribute lines $l into manual,titles,weights
gcnt=!itemcnt $titles
gcnt=$[max(0,$gcnt-2)]
!for i=1 to $gcnt
ma=$ma manual$i
name=!item $i+2 of $titles
name_manual$i=$quote$name$quote
!next i
good=$good $ma
av=
!if $sheetcnt+$examcnt>0 and $gcnt>0
av=$av average0
!endif
!if $sheetcnt+$examcnt>0
av=$av average1
!endif
!if $gcnt>0
av=$av average2
!endif
good=$good $av
dl=!replace word averages by $av in $dl
dl=!replace word sheets by $sh in $dl
dl=!replace word exams by $ex in $dl
dl=!replace word manuals by $ma in $dl
dl=!words2items $dl
dl=!listuniq $dl
good=!words2items $good
dl=!listintersect $dl and $good
dl=!nospace $dl
dlcnt=!itemcnt $dl
!if $dlcnt=0
error=nothing done
!exit
!endif
!if $gcnt>0
mwtot=0
!for g=1 to $gcnt
w$g=!item $g+2 of $weights
mwtot=$[$mwtot+$(w$g)]
!next g
uucnt=!recordcnt wimshome/log/classes/$qclass/.grades
!for i=2 to $uucnt
l=!record $i of wimshome/log/classes/$qclass/.grades
n=!item 1 of $l
g=!item 3 to -1 of $l
Manual_$n=$g
mm=0
!for i=1 to $gcnt
g_=!item $i of $g
mm=$[$mm+($(w$i))*($g_)]
!next i
manual_$n=$[rint(100*$mm/$mwtot)/100]
!next i
!endif
sep_csv=,
sep_xls=;
sep_tsv=$ $
sep=$(sep_$format)
dl2=!replace , by ,user_ in user_$dl
dl2=!translate , to $sep in $dl2
tit=!replace , by $quote,$quote in $quote$tit$quote
tit=!translate , to $sep in $dl
!for n in login,password,lastname,firstname,email,regnum,comments
dl2=!replace user_$n by $(quote)user_$n$quote in $dl2
!next n
dl3=!replace user_ by $$name_ in $dl2
dl2=!replace user_ by $$user_ in $dl2
scores=no
!if average isin $dl or manual isin $dl or sheet isin $dl or exam isin $dl
scores=yes
!endif
!read scripts/csvnames
!writefile wimshome/$fname $tit\
$dl3\
s=!record 0 of wimshome/log/classes/$qclass/sheets/.severity
scoremax=!line 1 of $s
!default scoremax=10
!read adm/class/sheetweights
!for u=1 to $usercnt
!reset user_lastname,user_firstname,user_email,user_regnum,user_comments,user_external_auth
l=!record $u of wimshome/log/classes/$qclass/.userlist
user_login=!item 3 of $l
uu=$user_login
uuu=!hex $uu
!reset $basic
!read adm/class/userdef classes,$wims_class,$user_login
!defread $userdef
!if $scores=yes
!read adm/class/userscore $user_login
user_average1=$per
user_average2=$(manual_$uuu)
!if average0 isitemof $dl
user_average0=$[rint($manual*$user_average2+(100-$manual)*($per))/100]
!endif
!for i=1 to $sheetcnt
!if sheet$i isitemof $dl
p_=!line $i of $percents
!distribute words $p_ into p1,p2
!if $p2!=$empty
!distribute item $[$p1/100],$[$p2/10] into x_,y_
user_sheet$i=$[rint(100*$scoremax*$(f_$i))/100]
!else
user_sheet$i=0
!endif
!endif
!next i
!for i=1 to $examcnt
!if exam$i isitemof $dl
user_exam$i=$[rint(10*$scoremax*$(es_$i))/100]
!endif
!next i
!for i=1 to $gcnt
!if manual$i isitemof $dl
user_manual$i=!item $i of $(Manual_$uuu)
!default user_manual$i=0
!endif
!next i
!endif
!appendfile wimshome/$fname $dl2
!next u