Subversion Repositories wimsdev

Rev

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
# TODO : appeler directement les fonctions de userscore, comme c'est fait avec getcsv.
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
#Le dossier des etudiants se situe toujours dans la superclasse
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
 data_scores=!append item $dl2 to $data_scores
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