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 |