Rev 9909 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 9909 | Rev 9912 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | # GetScores |
1 | # GetScores (GetClassScores) |
| 2 | # Fournit les notes de la classes, separees par le caractere associe au format specifie |
- | |
| 3 | # |
2 | # Get all scores (defined in $option) of class $qclass |
| 4 | 3 | ||
| 5 | !bound format within csv, tsv, xls default xls |
- | |
| 6 | - | ||
| 7 | !read scripts/check.class |
- | |
| 8 | !if $error!=$empty |
- | |
| 9 | !exit |
- | |
| 10 | !endif |
- | |
| 11 | - | ||
| 12 | usercnt=!recordcnt wimshome/log/classes/$qclass/.userlist |
- | |
| 13 | - | ||
| 14 | !default option=login,name,allscores |
- | |
| 15 | - | ||
| 16 | quote=" |
- | |
| 17 | - | ||
| 18 | - | ||
| 19 | dl=!singlespace $option |
- | |
| 20 | dl=!lower $dl |
- | |
| 21 | !for t in average,sheet,exam,manual |
- | |
| 22 | dl=!replace $t $ by $t in $dl |
- | |
| 23 | !next t |
- | |
| 24 | dl=!items2words $dl |
- | |
| 25 | dl=!replace word names by name in $dl |
- | |
| 26 | dl=!replace grade by manual in $dl |
- | |
| 27 | dl=!replace word allscores by allscore in $dl |
- | |
| 28 | dl=!replace word name by lastname firstname in $dl |
- | |
| 29 | dl=!replace word allscore by averages sheets exams manuals in $dl |
- | |
| 30 | - | ||
| 31 | good=login password lastname firstname email regnum comments |
- | |
| 32 | scnt=!recordcnt wimshome/log/classes/$qclass/sheets/.sheets |
- | |
| 33 | activesh= |
- | |
| 34 | !for i=1 to $scnt |
- | |
| 35 | l=!record $i of wimshome/log/classes/$qclass/sheets/.sheets |
- | |
| 36 | l=!word 1 of $l |
- | |
| 37 | !if $l>0 |
- | |
| 38 | activesh=!append item $i to $activesh |
- | |
| 39 | !endif |
- | |
| 40 | !next i |
- | |
| 41 | sheetcnt=!itemcnt $activesh |
- | |
| 42 | sh= |
- | |
| 43 | !for i in $activesh |
- | |
| 44 | sh=$sh sheet$i |
- | |
| 45 | l=!record $i of wimshome/log/classes/$qclass/sheets/.sheets |
- | |
| 46 | name=!line 3 of $l |
- | |
| 47 | name_sheet$i=$quote$name$quote |
- | |
| 48 | !next i |
- | |
| 49 | good=$good $sh |
- | |
| 50 | - | ||
| 51 | scnt=!recordcnt wimshome/log/classes/$qclass/exams/.exams |
- | |
| 52 | activexams= |
- | |
| 53 | !for i=1 to $scnt |
- | |
| 54 | l=!record $i of wimshome/log/classes/$qclass/exams/.exams |
- | |
| 55 | l=!word 1 of $l |
- | |
| 56 | !if $l>0 |
- | |
| 57 | activexams=!append item $i to $activexams |
- | |
| 58 | !endif |
- | |
| 59 | !next i |
- | |
| 60 | examcnt=!itemcnt $activexams |
- | |
| 61 | ex= |
- | |
| 62 | !for i in $activexams |
- | |
| 63 | ex=$ex exam$i |
- | |
| 64 | l=!record $i of wimshome/log/classes/$qclass/exams/.exams |
- | |
| 65 | name=!line 4 of $l |
- | |
| 66 | name_exam$i=$quote$name$quote |
- | |
| 67 | !next i |
- | |
| 68 | good=$good $ex |
- | |
| 69 | - | ||
| 70 | l=!record 1 of wimshome/log/classes/$qclass/.grades |
- | |
| 71 | !distribute lines $l into manual,titles,weights |
- | |
| 72 | gcnt=!itemcnt $titles |
- | |
| 73 | gcnt=$[max(0,$gcnt-2)] |
- | |
| 74 | ma= |
- | |
| 75 | !for i=1 to $gcnt |
- | |
| 76 | ma=$ma manual$i |
- | |
| 77 | name=!item $i+2 of $titles |
- | |
| 78 | name_manual$i=$quote$name$quote |
- | |
| 79 | !next i |
- | |
| 80 | good=$good $ma |
- | |
| 81 | - | ||
| 82 | av= |
- | |
| 83 | !if $sheetcnt+$examcnt>0 and $gcnt>0 |
- | |
| 84 | av=$av average0 |
- | |
| 85 | !endif |
- | |
| 86 | !if $sheetcnt+$examcnt>0 |
- | |
| 87 | av=$av average1 |
- | |
| 88 | !endif |
- | |
| 89 | !if $gcnt>0 |
- | |
| 90 | av=$av average2 |
- | |
| 91 | !endif |
- | |
| 92 | good=$good $av |
- | |
| 93 | - | ||
| 94 | dl=!replace word averages by $av in $dl |
- | |
| 95 | dl=!replace word sheets by $sh in $dl |
- | |
| 96 | dl=!replace word exams by $ex in $dl |
- | |
| 97 | dl=!replace word manuals by $ma in $dl |
- | |
| 98 | dl=!words2items $dl |
- | |
| 99 | dl=!listuniq $dl |
- | |
| 100 | good=!words2items $good |
- | |
| 101 | dl=!listintersect $dl and $good |
- | |
| 102 | dl=!nospace $dl |
- | |
| 103 | dlcnt=!itemcnt $dl |
- | |
| 104 | !if $dlcnt=0 |
- | |
| 105 | error=nothing done |
- | |
| 106 | !exit |
- | |
| 107 | !endif |
- | |
| 108 | - | ||
| 109 | !if $gcnt>0 |
- | |
| 110 | mwtot=0 |
- | |
| 111 | !for g=1 to $gcnt |
- | |
| 112 | w$g=!item $g+2 of $weights |
- | |
| 113 | mwtot=$[$mwtot+$(w$g)] |
- | |
| 114 | !next g |
- | |
| 115 | uucnt=!recordcnt wimshome/log/classes/$qclass/.grades |
- | |
| 116 | !for i=2 to $uucnt |
- | |
| 117 | l=!record $i of wimshome/log/classes/$qclass/.grades |
- | |
| 118 | n=!item 1 of $l |
- | |
| 119 | g=!item 3 to -1 of $l |
- | |
| 120 | Manual_$n=$g |
- | |
| 121 | mm=0 |
- | |
| 122 | !for i=1 to $gcnt |
- | |
| 123 | g_=!item $i of $g |
- | |
| 124 | mm=$[$mm+($(w$i))*($g_)] |
- | |
| 125 | !next i |
- | |
| 126 | manual_$n=$[rint(100*$mm/$mwtot)/100] |
- | |
| 127 | !next i |
- | |
| 128 | !endif |
- | |
| 129 | - | ||
| 130 | sep_csv=, |
- | |
| 131 | sep_xls=; |
- | |
| 132 | sep_tsv=$ $ |
- | |
| 133 | sep=$(sep_$format) |
- | |
| 134 | dl2=!replace , by ,user_ in user_$dl |
- | |
| 135 | dl2=!translate , to $sep in $dl2 |
- | |
| 136 | tit=!replace , by $quote,$quote in $quote$tit$quote |
- | |
| 137 | tit=!translate , to $sep in $dl |
- | |
| 138 | !for n in login,password,lastname,firstname,email,regnum,comments |
- | |
| 139 | dl2=!replace user_$n by $(quote)user_$n$quote in $dl2 |
- | |
| 140 | !next n |
- | |
| 141 | - | ||
| 142 | !read csv/csvnames |
- | |
| 143 | - | ||
| 144 | dl3=!replace user_ by $$name_ in $dl2 |
- | |
| 145 | dl2=!replace user_ by $$user_ in $dl2 |
- | |
| 146 | - | ||
| 147 | scores=no |
- | |
| 148 | !if average isin $dl or manual isin $dl or sheet isin $dl or exam isin $dl |
- | |
| 149 | scores=yes |
- | |
| 150 | !endif |
- | |
| 151 | - | ||
| 152 | !read csv/csvnames |
- | |
| 153 | !read names.$lang |
- | |
| 154 | - | ||
| 155 | s=!record 0 of wimshome/log/classes/$qclass/sheets/.severity |
- | |
| 156 | scoremax=!line 1 of $s |
- | |
| 157 | !default scoremax=20 |
- | |
| 158 | - | ||
| 159 | !read adm/class/sheetweights |
- | |
| 160 | - | ||
| 161 | class_superclass=!defof class_superclass in $classdeffile |
- | |
| 162 |
|
4 | # The only difference between this job and getcsv, is that this one returns a usual |
| 163 | !if $class_superclass != $empty |
- | |
| 164 | users_dir = wimshome/log/classes/$class_superclass/.users |
- | |
| 165 | !else |
- | |
| 166 | users_dir = wimshome/log/classes/$qclass/.users |
- | |
| 167 | !endif |
- | |
| 168 | - | ||
| 169 | - | ||
| 170 | !for u=1 to $usercnt |
- | |
| 171 | l=!record $u of wimshome/log/classes/$qclass/.userlist |
- | |
| 172 | user_login=!item 3 of $l |
- | |
| 173 | !defread $users_dir/$user_login |
- | |
| 174 | !if $scores=yes |
- | |
| 175 | uu=$user_login |
- | |
| 176 | !read adm/class/userscore $user_login |
- | |
| 177 | user_average1=$per |
- | |
| 178 | user_average2=$(manual_$user_login) |
- | |
| 179 | !if average0 isitemof $dl |
- | |
| 180 | user_average0=$[rint($manual*$user_average2+(100-$manual)*($per))/100] |
- | |
| 181 | !endif |
- | |
| 182 | !for i=1 to $sheetcnt |
- | |
| 183 | !if sheet$i isitemof $dl |
- | |
| 184 | p_=!line $i of $percents |
- | |
| 185 | !! cf r7612-r7638 for adm/class/userscore |
- | |
| 186 | !! and r7638-r7664 |
- | |
| 187 | !distribute words $p_ into p1,p2,p3,p4 |
- | |
| 188 | !if $p2!=$empty |
- | |
| 189 | !distribute item $[$p1/100],$[$p2/10],$[$p3/100],$[$p4/100] into x0_,y_,x1_,x2_ |
- | |
| 190 | !set ff_$i=!mathsubst Q=$y_ in $(f_$i) |
- | |
| 191 | !for sev=0 to 2 |
- | |
| 192 | !set ff_$i=!mathsubst I$sev=$(x$(sev)_) in $(ff_$i) |
- | |
| 193 | !next |
- | |
| 194 | user_sheet$i=$[rint(100*$scoremax*$(ff_$i))/100] |
- | |
| 195 | !else |
- | |
| 196 | user_sheet$i=0 |
- | |
| 197 | !endif |
- | |
| 198 | !endif |
- | |
| 199 | !next i |
- | |
| 200 | !for i=1 to $examcnt |
- | |
| 201 | !if exam$i isitemof $dl |
- | |
| 202 | user_exam$i=$[rint(10*$scoremax*$(es_$i))/100] |
- | |
| 203 | !endif |
- | |
| 204 | !next i |
- | |
| 205 | !for i=1 to $gcnt |
- | |
| 206 | !if manual$i isitemof $dl |
- | |
| 207 | user_manual$i=!item $i of $(Manual_$user_login) |
- | |
| 208 | !default user_manual$i=0 |
- | |
| 209 | !endif |
- | |
| 210 | !next i |
- | |
| 211 | !endif |
- | |
| 212 |
|
5 | # response, not a directly donwloadable file. |
| 213 | data_csv=!append line $dl2 to $data_csv |
- | |
| 214 | !next u |
- | |
| 215 | 6 | ||
| - | 7 | #by now, only "xls" format is supported, if you want a correct JSON export. |
|
| - | 8 | format = xls |
|
| - | 9 | !changeto jobs/getcsv.proc |
|