gyorgy@0
|
1
|
gyorgy@0
|
2 import cherrypy, os, random, smtplib, string
|
gyorgy@0
|
3 from cherrypy.lib.static import serve_file
|
gyorgy@0
|
4 from templates import *
|
gyorgy@0
|
5
|
gyorgy@0
|
6 from DirectorySession import DirectorySession
|
gyorgy@0
|
7 from ServerWrapper import ServerWrapper as CherryPyServer
|
gyorgy@0
|
8 from ServerWrapper import Config as ServerConfig
|
gyorgy@0
|
9
|
gyorgy@0
|
10 from email.MIMEBase import MIMEBase
|
gyorgy@0
|
11 from email.MIMEText import MIMEText
|
gyorgy@0
|
12 from email.MIMEMultipart import MIMEMultipart
|
gyorgy@0
|
13 from email.Utils import COMMASPACE, formatdate
|
gyorgy@0
|
14 from email import Encoders
|
gyorgy@0
|
15
|
gyorgy@0
|
16 from pprint import pprint
|
gyorgy@0
|
17
|
gyorgy@0
|
18 PATH = os.path.abspath(os.path.dirname(__file__))
|
gyorgy@0
|
19
|
gyorgy@0
|
20 #audiodir = './audio'
|
gyorgy@0
|
21 #cherrypy.session['fxs'] = [cherrypy.session['f'] for cherrypy.session['f'] in os.listdir(audiodir) if os.path.isdir(os.path.join(audiodir, cherrypy.session['f']))]
|
gyorgy@0
|
22 #cherrypy.session['fxs'].remove('dry')
|
gyorgy@0
|
23 #print cherrypy.session['fxs']
|
gyorgy@0
|
24
|
gyorgy@0
|
25 class Root(object): pass
|
gyorgy@0
|
26
|
gyorgy@0
|
27
|
gyorgy@0
|
28 class HomePage:
|
gyorgy@0
|
29 def index(self):
|
gyorgy@0
|
30
|
gyorgy@0
|
31 return "move along, nothing to see here!"
|
gyorgy@0
|
32
|
gyorgy@0
|
33 index.exposed = True
|
gyorgy@0
|
34
|
gyorgy@0
|
35
|
gyorgy@0
|
36
|
gyorgy@0
|
37 class TestPage:
|
gyorgy@0
|
38
|
gyorgy@0
|
39 def getFiles(self):
|
gyorgy@0
|
40 audiodir = './audio'
|
gyorgy@0
|
41 cherrypy.session['fxs'] = [cherrypy.session['f'] for cherrypy.session['f'] in os.listdir(audiodir) if os.path.isdir(os.path.join(audiodir, cherrypy.session['f']))]
|
gyorgy@0
|
42 cherrypy.session['fxs'].remove('dry')
|
gyorgy@0
|
43 print cherrypy.session['fxs']
|
gyorgy@0
|
44
|
gyorgy@0
|
45 def index(self):
|
gyorgy@0
|
46 TestPage.getFiles(self)
|
gyorgy@0
|
47 cherrypy.session['sid'] = None
|
gyorgy@0
|
48
|
gyorgy@0
|
49 cherrypy.session['sid_filename'] = None
|
gyorgy@0
|
50
|
gyorgy@0
|
51
|
gyorgy@0
|
52 if cherrypy.request.headers.has_key("X-Forwarded-For"):
|
gyorgy@0
|
53 cherrypy.session['ip'] = cherrypy.request.headers["X-Forwarded-For"]
|
gyorgy@0
|
54 elif cherrypy.request.headers.has_key("Remote-Addr"):
|
gyorgy@0
|
55 cherrypy.session['ip'] = cherrypy.request.headers["Remote-Addr"]
|
gyorgy@0
|
56 else :
|
gyorgy@0
|
57 cherrypy.session['ip'] = None
|
gyorgy@0
|
58
|
gyorgy@0
|
59 cherrypy.session['test'] = None
|
gyorgy@0
|
60 cherrypy.session['results'] = None
|
gyorgy@0
|
61 cherrypy.session['tests'] = None
|
gyorgy@0
|
62 cherrypy.session['test_nr'] = None
|
gyorgy@0
|
63 cherrypy.session['audio_pairs'] = None
|
gyorgy@0
|
64 cherrypy.session['page'] = 0
|
gyorgy@0
|
65 cherrypy.session['pages'] = 6
|
gyorgy@0
|
66 cherrypy.session['userinfobox'] = None
|
gyorgy@0
|
67 cherrypy.session['ts'] = None
|
gyorgy@0
|
68 #return '''
|
gyorgy@0
|
69 # <p>
|
gyorgy@0
|
70 # <a href="/test/">start test</a>
|
gyorgy@0
|
71 # </p>'''
|
gyorgy@0
|
72
|
gyorgy@0
|
73 #take 2 examples for each effect
|
gyorgy@0
|
74
|
gyorgy@0
|
75 cherrypy.session['audio_pairs'] = []
|
gyorgy@0
|
76
|
gyorgy@0
|
77 # get effected files:
|
gyorgy@0
|
78
|
gyorgy@0
|
79 for cherrypy.session['fx'] in cherrypy.session['fxs']:
|
gyorgy@0
|
80 cherrypy.session['dirlist'] = os.listdir('./audio/%s/'%cherrypy.session['fx'])
|
gyorgy@0
|
81 cherrypy.session['filelist'] = []
|
gyorgy@0
|
82 for cherrypy.session['item'] in cherrypy.session['dirlist']:
|
gyorgy@0
|
83 if cherrypy.session['item'].split('.')[-1] == 'mp3':
|
gyorgy@0
|
84 cherrypy.session['filelist'].append(cherrypy.session['item'].split('.')[0])
|
gyorgy@0
|
85
|
gyorgy@0
|
86 # create audio pairs for this fx
|
gyorgy@0
|
87
|
gyorgy@0
|
88 cherrypy.session['first'] = cherrypy.session['second'] = random.choice(cherrypy.session['filelist'])
|
gyorgy@0
|
89 while cherrypy.session['first'] == cherrypy.session['second']:
|
gyorgy@0
|
90 cherrypy.session['second'] = random.choice(cherrypy.session['filelist'])
|
gyorgy@0
|
91
|
gyorgy@0
|
92 cherrypy.session['dry1'] = 'dry/%s' %cherrypy.session['first'].split('_%s'%cherrypy.session['fx'])[0]
|
gyorgy@0
|
93 cherrypy.session['fx1'] = '%s/%s' %(cherrypy.session['fx'], cherrypy.session['first'])
|
gyorgy@0
|
94 cherrypy.session['dry2'] = 'dry/%s' %cherrypy.session['second'].split('_%s'%cherrypy.session['fx'])[0]
|
gyorgy@0
|
95 cherrypy.session['fx2'] = '%s/%s' %(cherrypy.session['fx'], cherrypy.session['second'])
|
gyorgy@0
|
96 cherrypy.session['audio_pairs'].append([cherrypy.session['fx'], cherrypy.session['dry1'], cherrypy.session['fx1']])
|
gyorgy@0
|
97 cherrypy.session['audio_pairs'].append([cherrypy.session['fx'], cherrypy.session['dry2'], cherrypy.session['fx2']])
|
gyorgy@0
|
98
|
gyorgy@0
|
99 #print TestPage.audio_pairs
|
gyorgy@0
|
100 random.shuffle(cherrypy.session['audio_pairs'])
|
gyorgy@0
|
101
|
gyorgy@0
|
102 print "NUMBER OF TESTS:"
|
gyorgy@0
|
103 print len(cherrypy.session['audio_pairs'])
|
gyorgy@0
|
104
|
gyorgy@0
|
105 cherrypy.session['sid'] = cherrypy.session.get_session_path().split('/')[1]
|
gyorgy@0
|
106 print cherrypy.session['sid']
|
gyorgy@0
|
107
|
gyorgy@0
|
108 #print cherrypy.session['audio_pairs']
|
gyorgy@0
|
109 pprint(cherrypy.session['audio_pairs'])
|
gyorgy@0
|
110
|
gyorgy@0
|
111
|
gyorgy@0
|
112 TestPage.outfileid = '%s' %cherrypy.session['sid']
|
gyorgy@0
|
113 ida = 0
|
gyorgy@0
|
114 while os.path.exists('./sessions/%s/%s.txt' %(cherrypy.session['sid'], TestPage.outfileid)):
|
gyorgy@0
|
115 TestPage.outfileid += '_%s' %ida
|
gyorgy@0
|
116 ida += 1
|
gyorgy@0
|
117
|
gyorgy@0
|
118
|
gyorgy@0
|
119 return welcome_templ %cherrypy.session['sid']
|
gyorgy@0
|
120
|
gyorgy@0
|
121
|
gyorgy@0
|
122 def doStart(self, pageId, sessionId, startButton, uinfo00=None, uinfo01=None, uinfo02=None, info1=None, info2=None, info3=None, info4=None, info5=None):
|
gyorgy@0
|
123
|
gyorgy@0
|
124
|
gyorgy@0
|
125
|
gyorgy@0
|
126 if cherrypy.session['page'] != int(pageId):
|
gyorgy@0
|
127 print "################################# BACK BUTTON PRESSED #################################"
|
gyorgy@0
|
128
|
gyorgy@0
|
129
|
gyorgy@0
|
130 if cherrypy.session['sid'] != str(sessionId):
|
gyorgy@0
|
131 return TestPage.sessionError(self)
|
gyorgy@0
|
132 #cherrypy.session['page'] = int(pageId)
|
gyorgy@0
|
133
|
gyorgy@0
|
134
|
gyorgy@0
|
135
|
gyorgy@0
|
136
|
gyorgy@0
|
137 cherrypy.session['userinfobox'] = str([str(uinfo00), str(uinfo01), str(uinfo02), int(info1), int(info2), int(info3), int(info4), int(info5)]) + '\n'
|
gyorgy@0
|
138 cherrypy.session['sessionId'] = sessionId
|
gyorgy@0
|
139 #print "sid:"
|
gyorgy@0
|
140 #print TestPage.sid
|
gyorgy@0
|
141 #print sessionId
|
gyorgy@0
|
142 if cherrypy.session['sid'] != str(cherrypy.session['sessionId']):
|
gyorgy@0
|
143 return TestPage.sessionError(self)
|
gyorgy@0
|
144 else:
|
gyorgy@0
|
145 return TestPage.index2(self)
|
gyorgy@0
|
146
|
gyorgy@0
|
147
|
gyorgy@0
|
148
|
gyorgy@0
|
149 def index2(self):
|
gyorgy@0
|
150 #try: print testvar
|
gyorgy@0
|
151 #except: pass
|
gyorgy@0
|
152
|
gyorgy@0
|
153 cherrypy.session['page'] = 1
|
gyorgy@0
|
154 cherrypy.session['pages'] = 7
|
gyorgy@0
|
155 cherrypy.session['tests'] = len(cherrypy.session['audio_pairs']) #should be 66 #10 * cherrypy.session['pages']
|
gyorgy@0
|
156 cherrypy.session['results'] = []
|
gyorgy@0
|
157 for cherrypy.session['n'] in xrange(cherrypy.session['tests']): cherrypy.session['results'].append([None,0,0,0,0])
|
gyorgy@0
|
158
|
gyorgy@0
|
159 # create tuple to fill template
|
gyorgy@0
|
160 cherrypy.session['ts'] = []
|
gyorgy@0
|
161 for cherrypy.session['k'] in xrange(40):
|
gyorgy@0
|
162 cherrypy.session['ts'].append(0)
|
gyorgy@0
|
163
|
gyorgy@0
|
164 return audiotempl%TestPage.makeTuple(self, 10)
|
gyorgy@0
|
165
|
gyorgy@0
|
166 def doAttrib(self, pageId, sessionId, submitButton, attribute1_1=None, attribute1_2=None, attribute1_3=None, attribute1_4=None, attribute2_1=None, attribute2_2=None, attribute2_3=None, attribute2_4=None, attribute3_1=None, attribute3_2=None, attribute3_3=None, attribute3_4=None, attribute4_1=None, attribute4_2=None, attribute4_3=None, attribute4_4=None, attribute5_1=None, attribute5_2=None, attribute5_3=None, attribute5_4=None, attribute6_1=None, attribute6_2=None, attribute6_3=None, attribute6_4=None, attribute7_1=None, attribute7_2=None, attribute7_3=None, attribute7_4=None, attribute8_1=None, attribute8_2=None, attribute8_3=None, attribute8_4=None, attribute9_1=None, attribute9_2=None, attribute9_3=None, attribute9_4=None, attribute10_1=None, attribute10_2=None, attribute10_3=None, attribute10_4=None):
|
gyorgy@0
|
167 #print attribute1 + ' ' + attribute2
|
gyorgy@0
|
168 # Error check
|
gyorgy@0
|
169
|
gyorgy@0
|
170 print "################################# %s" %pageId
|
gyorgy@0
|
171 #_pageId = int(pageId) - 1
|
gyorgy@0
|
172
|
gyorgy@0
|
173 if cherrypy.session['page'] != int(pageId):
|
gyorgy@0
|
174 print "################################# BACK BUTTON PRESSED #################################"
|
gyorgy@0
|
175
|
gyorgy@0
|
176 cherrypy.session['page'] = int(pageId)
|
gyorgy@0
|
177
|
gyorgy@0
|
178 if cherrypy.session['sid'] != str(sessionId):
|
gyorgy@0
|
179 return TestPage.sessionError(self)
|
gyorgy@0
|
180
|
gyorgy@0
|
181 #store results
|
gyorgy@0
|
182
|
gyorgy@0
|
183 cherrypy.session['pos'] = 10 * (cherrypy.session['page'] - 1)
|
gyorgy@0
|
184
|
gyorgy@0
|
185 cherrypy.session['results'][cherrypy.session['pos']] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']][2].split('/')[-1], int(attribute1_1), int(attribute1_2), int(attribute1_3), int(attribute1_4)]
|
gyorgy@0
|
186 cherrypy.session['results'][cherrypy.session['pos']+1] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+1][2].split('/')[-1], int(attribute2_1), int(attribute2_2), int(attribute2_3), int(attribute2_4)]
|
gyorgy@0
|
187 cherrypy.session['results'][cherrypy.session['pos']+2] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+2][2].split('/')[-1], int(attribute3_1), int(attribute3_2), int(attribute3_3), int(attribute3_4)]
|
gyorgy@0
|
188 cherrypy.session['results'][cherrypy.session['pos']+3] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+3][2].split('/')[-1], int(attribute4_1), int(attribute4_2), int(attribute4_3), int(attribute4_4)]
|
gyorgy@0
|
189 cherrypy.session['results'][cherrypy.session['pos']+4] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+4][2].split('/')[-1], int(attribute5_1), int(attribute5_2), int(attribute5_3), int(attribute5_4)]
|
gyorgy@0
|
190 cherrypy.session['results'][cherrypy.session['pos']+5] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+5][2].split('/')[-1], int(attribute6_1), int(attribute6_2), int(attribute6_3), int(attribute6_4)]
|
gyorgy@0
|
191 cherrypy.session['results'][cherrypy.session['pos']+6] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+6][2].split('/')[-1], int(attribute7_1), int(attribute7_2), int(attribute7_3), int(attribute7_4)]
|
gyorgy@0
|
192 cherrypy.session['results'][cherrypy.session['pos']+7] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+7][2].split('/')[-1], int(attribute8_1), int(attribute8_2), int(attribute8_3), int(attribute8_4)]
|
gyorgy@0
|
193 cherrypy.session['results'][cherrypy.session['pos']+8] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+8][2].split('/')[-1], int(attribute9_1), int(attribute9_2), int(attribute9_3), int(attribute9_4)]
|
gyorgy@0
|
194 cherrypy.session['results'][cherrypy.session['pos']+9] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+9][2].split('/')[-1], int(attribute10_1), int(attribute10_2), int(attribute10_3), int(attribute10_4)]
|
gyorgy@0
|
195
|
gyorgy@0
|
196
|
gyorgy@0
|
197 resString = cherrypy.session['ip'] + '\n' + TestPage.outfileid + '\n' + cherrypy.session['userinfobox'] + '\n' + ',\n'.join(str(x) for x in cherrypy.session['results'])
|
gyorgy@0
|
198
|
gyorgy@0
|
199 #f = open(TestPage.sid_filename, 'w')
|
gyorgy@0
|
200 #f.write(resString)
|
gyorgy@0
|
201 #f.close()
|
gyorgy@0
|
202
|
gyorgy@0
|
203 cherrypy.session.write_data(resString,'%s.txt'%TestPage.outfileid)
|
gyorgy@0
|
204
|
gyorgy@0
|
205 #if cherrypy.session['page'] < cherrypy.session['pages'] - 1:
|
gyorgy@0
|
206 cherrypy.session['page'] += 1
|
gyorgy@0
|
207 # create tuple to fill template
|
gyorgy@0
|
208 cherrypy.session['ts'] = []
|
gyorgy@0
|
209 cherrypy.session['npos'] = cherrypy.session['pos'] + 10
|
gyorgy@0
|
210
|
gyorgy@0
|
211 if cherrypy.session['page'] < cherrypy.session['pages']:
|
gyorgy@0
|
212 cherrypy.session['m'] = 10
|
gyorgy@0
|
213 else:
|
gyorgy@0
|
214 cherrypy.session['m'] = 6
|
gyorgy@0
|
215
|
gyorgy@0
|
216 for cherrypy.session['k'] in xrange(cherrypy.session['m']):
|
gyorgy@0
|
217 for cherrypy.session['i'] in xrange(4):
|
gyorgy@0
|
218 #print cherrypy.session['k']
|
gyorgy@0
|
219 #print cherrypy.session['i']
|
gyorgy@0
|
220 cherrypy.session['ts'].append(cherrypy.session['results'][cherrypy.session['npos']+cherrypy.session['k']][cherrypy.session['i']+1])
|
gyorgy@0
|
221
|
gyorgy@0
|
222 if cherrypy.session['page'] < cherrypy.session['pages']:
|
gyorgy@0
|
223 return audiotempl%TestPage.makeTuple(self, cherrypy.session['m'])
|
gyorgy@0
|
224 else:
|
gyorgy@0
|
225 return audiotemplast%TestPage.makeTuple(self, cherrypy.session['m'])
|
gyorgy@0
|
226
|
gyorgy@0
|
227
|
gyorgy@0
|
228 index.exposed = True
|
gyorgy@0
|
229 doAttrib.exposed = True
|
gyorgy@0
|
230 index2.exposed = True
|
gyorgy@0
|
231 doStart.exposed = True
|
gyorgy@0
|
232
|
gyorgy@0
|
233
|
gyorgy@0
|
234 def doAttrib2(self, pageId, sessionId, submitButton, attribute1_1=None, attribute1_2=None, attribute1_3=None, attribute1_4=None, attribute2_1=None, attribute2_2=None, attribute2_3=None, attribute2_4=None, attribute3_1=None, attribute3_2=None, attribute3_3=None, attribute3_4=None, attribute4_1=None, attribute4_2=None, attribute4_3=None, attribute4_4=None, attribute5_1=None, attribute5_2=None, attribute5_3=None, attribute5_4=None, attribute6_1=None, attribute6_2=None, attribute6_3=None, attribute6_4=None):
|
gyorgy@0
|
235 #print attribute1 + ' ' + attribute2
|
gyorgy@0
|
236 # Error check
|
gyorgy@0
|
237
|
gyorgy@0
|
238 print "################################# %s" %pageId
|
gyorgy@0
|
239 #_pageId = int(pageId) - 1
|
gyorgy@0
|
240
|
gyorgy@0
|
241 if cherrypy.session['page'] != int(pageId):
|
gyorgy@0
|
242 print "################################# BACK BUTTON PRESSED #################################"
|
gyorgy@0
|
243
|
gyorgy@0
|
244 cherrypy.session['page'] = int(pageId)
|
gyorgy@0
|
245
|
gyorgy@0
|
246 if cherrypy.session['sid'] != str(sessionId):
|
gyorgy@0
|
247 return TestPage.sessionError(self)
|
gyorgy@0
|
248
|
gyorgy@0
|
249 #store results
|
gyorgy@0
|
250
|
gyorgy@0
|
251 cherrypy.session['pos'] = 10 * (cherrypy.session['page'] - 1)
|
gyorgy@0
|
252
|
gyorgy@0
|
253 cherrypy.session['results'][cherrypy.session['pos']] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']][2].split('/')[-1], int(attribute1_1), int(attribute1_2), int(attribute1_3), int(attribute1_4)]
|
gyorgy@0
|
254 cherrypy.session['results'][cherrypy.session['pos']+1] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+1][2].split('/')[-1], int(attribute2_1), int(attribute2_2), int(attribute2_3), int(attribute2_4)]
|
gyorgy@0
|
255 cherrypy.session['results'][cherrypy.session['pos']+2] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+2][2].split('/')[-1], int(attribute3_1), int(attribute3_2), int(attribute3_3), int(attribute3_4)]
|
gyorgy@0
|
256 cherrypy.session['results'][cherrypy.session['pos']+3] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+3][2].split('/')[-1], int(attribute4_1), int(attribute4_2), int(attribute4_3), int(attribute4_4)]
|
gyorgy@0
|
257 cherrypy.session['results'][cherrypy.session['pos']+4] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+4][2].split('/')[-1], int(attribute5_1), int(attribute5_2), int(attribute5_3), int(attribute5_4)]
|
gyorgy@0
|
258 cherrypy.session['results'][cherrypy.session['pos']+5] = [cherrypy.session['audio_pairs'][cherrypy.session['pos']+5][2].split('/')[-1], int(attribute6_1), int(attribute6_2), int(attribute6_3), int(attribute6_4)]
|
gyorgy@0
|
259
|
gyorgy@0
|
260
|
gyorgy@0
|
261
|
gyorgy@0
|
262 resString = cherrypy.session['ip'] + '\n' + cherrypy.session['sid'] + '\n' + cherrypy.session['userinfobox'] + '\n' + ',\n'.join(str(x) for x in cherrypy.session['results'])
|
gyorgy@0
|
263
|
gyorgy@0
|
264 #f = open(TestPage.sid_filename, 'w')
|
gyorgy@0
|
265 #f.write(resString)
|
gyorgy@0
|
266 #f.close()
|
gyorgy@0
|
267 #os.path.exists()
|
gyorgy@0
|
268
|
gyorgy@0
|
269 cherrypy.session.write_data(resString,'%s.txt'%TestPage.outfileid)
|
gyorgy@0
|
270
|
gyorgy@0
|
271
|
gyorgy@0
|
272 print cherrypy.session['results']
|
gyorgy@0
|
273 #_results = []
|
gyorgy@0
|
274
|
gyorgy@0
|
275 cherrypy.session['templ'] = ''
|
gyorgy@0
|
276 for cherrypy.session['n'] in xrange(cherrypy.session['tests']):
|
gyorgy@0
|
277 #print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
|
gyorgy@0
|
278 #print cherrypy.session['n']
|
gyorgy@0
|
279 cherrypy.session['_templ'] = endtempl2 %(cherrypy.session['results'][cherrypy.session['n']][0], cherrypy.session['results'][cherrypy.session['n']][1], cherrypy.session['results'][cherrypy.session['n']][2], cherrypy.session['results'][cherrypy.session['n']][3], cherrypy.session['results'][cherrypy.session['n']][4])
|
gyorgy@0
|
280 cherrypy.session['templ'] += cherrypy.session['_templ']
|
gyorgy@0
|
281
|
gyorgy@0
|
282 #TestPage.pageComplete += 1
|
gyorgy@0
|
283 try:
|
gyorgy@0
|
284 #print 'skipping email'
|
gyorgy@0
|
285 TestPage.sendMail(self)
|
gyorgy@0
|
286 except:
|
gyorgy@0
|
287 print "WARNING: COULD NOT SEND RESULTS"
|
gyorgy@0
|
288 pass
|
gyorgy@0
|
289 cherrypy.session['sid'] = None
|
gyorgy@0
|
290 return endtempl%cherrypy.session['templ']
|
gyorgy@0
|
291 #return lastpage
|
gyorgy@0
|
292
|
gyorgy@0
|
293
|
gyorgy@0
|
294 index.exposed = True
|
gyorgy@0
|
295 doAttrib.exposed = True
|
gyorgy@0
|
296 doAttrib2.exposed = True
|
gyorgy@0
|
297 index2.exposed = True
|
gyorgy@0
|
298 doStart.exposed = True
|
gyorgy@0
|
299
|
gyorgy@0
|
300
|
gyorgy@0
|
301 def makeTuple(TestPage, nr):
|
gyorgy@0
|
302 cherrypy.session['nr'] = nr
|
gyorgy@0
|
303 cherrypy.session['ts'].append(cherrypy.session['page'])
|
gyorgy@0
|
304 cherrypy.session['ts'].append(cherrypy.session['pages'])
|
gyorgy@0
|
305 for cherrypy.session['k'] in xrange(cherrypy.session['nr']):
|
gyorgy@0
|
306 pos = 10 * (cherrypy.session['page'] - 1) + cherrypy.session['k']
|
gyorgy@0
|
307 #print pos
|
gyorgy@0
|
308 for n in xrange(3): cherrypy.session['ts'].append(cherrypy.session['audio_pairs'][pos][1])
|
gyorgy@0
|
309 for n in xrange(3): cherrypy.session['ts'].append(cherrypy.session['audio_pairs'][pos][2])
|
gyorgy@0
|
310 cherrypy.session['ts'].append(cherrypy.session['page'])
|
gyorgy@0
|
311 cherrypy.session['ts'].append(cherrypy.session['sid'])
|
gyorgy@0
|
312 cherrypy.session['ts'] = tuple(cherrypy.session['ts'])
|
gyorgy@0
|
313 print cherrypy.session['ts']
|
gyorgy@0
|
314 return cherrypy.session['ts']
|
gyorgy@0
|
315
|
gyorgy@0
|
316 def sessionError(TestPage):
|
gyorgy@0
|
317 print "################################# SESSION ERROR #################################"
|
gyorgy@0
|
318 cherrypy.session['resString'] = cherrypy.session['ip'] + '\n' + str(cherrypy.session['sid']) + '\n' + cherrypy.session['userinfobox'] + '\n' + ',\n'.join(str(x) for x in cherrypy.session['results'])
|
gyorgy@0
|
319 cherrypy.session['resString'] += '\n\nERROR: SESSION CONFUSION'
|
gyorgy@0
|
320 #f = open(TestPage.sid_filename, 'w')
|
gyorgy@0
|
321 #f.write(resString)
|
gyorgy@0
|
322 #f.close()
|
gyorgy@0
|
323 cherrypy.session.write_data(cherrypy.session['resString'],'%s.txt'%TestPage.outfileid)
|
gyorgy@0
|
324
|
gyorgy@0
|
325 return '''
|
gyorgy@0
|
326 <p>
|
gyorgy@0
|
327 <a href="/test/">oh noes! there is something wrong with your session, please start again or go for a coffee!</a>
|
gyorgy@0
|
328 </p>'''
|
gyorgy@0
|
329
|
gyorgy@0
|
330
|
gyorgy@0
|
331 def sendMail(TestPage):
|
gyorgy@0
|
332 cherrypy.session['file'] = './sessions/%s/%s.txt'%(cherrypy.session['sid'], TestPage.outfileid)
|
gyorgy@0
|
333 username = 'eecsqmul@gmail.com'
|
gyorgy@0
|
334 password = 'perceptual'
|
gyorgy@0
|
335 fro = 'FX-Test <eecsqmul@gmail.com>'
|
gyorgy@0
|
336 to = ['thomas.wilmering@eecs.qmul.ac.uk', 'gyorgy.fazekas@eecs.qmul.ac.uk']
|
gyorgy@0
|
337 msg = MIMEMultipart()
|
gyorgy@0
|
338 msg['From'] = fro
|
gyorgy@0
|
339 msg['To'] = COMMASPACE.join(to)
|
gyorgy@0
|
340 msg['Date'] = formatdate(localtime=True)
|
gyorgy@0
|
341 msg['Subject'] = 'fx perceptual listening test'
|
gyorgy@0
|
342 msg.attach( MIMEText('Attached are new results from the listening test.'))
|
gyorgy@0
|
343 part = MIMEBase('application', "octet-stream")
|
gyorgy@0
|
344 part.set_payload( open(cherrypy.session['file'],"rb").read() )
|
gyorgy@0
|
345 Encoders.encode_base64(part)
|
gyorgy@0
|
346 part.add_header('Content-Disposition', 'attachment; filename="%s"' % cherrypy.session['file'])
|
gyorgy@0
|
347 msg.attach(part)
|
gyorgy@0
|
348 server = smtplib.SMTP('smtp.gmail.com:587')
|
gyorgy@0
|
349 server.starttls()
|
gyorgy@0
|
350 server.login(username,password)
|
gyorgy@0
|
351 server.sendmail(fro, to, msg.as_string() )
|
gyorgy@0
|
352 server.close()
|
gyorgy@0
|
353
|
gyorgy@0
|
354
|
gyorgy@0
|
355 class OutPage:
|
gyorgy@0
|
356 def index(self):
|
gyorgy@0
|
357 return '''
|
gyorgy@0
|
358 <html>
|
gyorgy@0
|
359 <body>
|
gyorgy@0
|
360 <div id="video">
|
gyorgy@0
|
361 <embed id="roll-video" src="http://www.dafk.net/what/ilovethe80s.swf" width="400" height="300"></embed>
|
gyorgy@0
|
362 </div>
|
gyorgy@0
|
363 </body>
|
gyorgy@0
|
364 </html>
|
gyorgy@0
|
365
|
gyorgy@0
|
366 '''
|
gyorgy@0
|
367 index.exposed = True
|
gyorgy@0
|
368
|
gyorgy@0
|
369
|
gyorgy@0
|
370 # # Of course we can also mount request handler objects right here!
|
gyorgy@0
|
371 # root = HomePage()
|
gyorgy@0
|
372 # root.test = TestPage()
|
gyorgy@0
|
373 # root.out = OutPage()
|
gyorgy@0
|
374 # #root = TestPage()
|
gyorgy@0
|
375 #
|
gyorgy@0
|
376 # tutconf = os.path.join(os.path.dirname(__file__), 'conf.conf')
|
gyorgy@0
|
377
|
gyorgy@0
|
378
|
gyorgy@0
|
379 def startFxTest(args):
|
gyorgy@0
|
380
|
gyorgy@0
|
381 # check local switch
|
gyorgy@0
|
382 if args.count('-local') :
|
gyorgy@0
|
383 local = True; args.remove('-local');
|
gyorgy@0
|
384 print 'Startup: Local mode.'
|
gyorgy@0
|
385 conf = os.path.join(os.path.dirname(__file__), 'local.conf')
|
gyorgy@0
|
386 else:
|
gyorgy@0
|
387 conf = os.path.join(os.path.dirname(__file__), 'server.conf')
|
gyorgy@0
|
388 local = False
|
gyorgy@0
|
389
|
gyorgy@0
|
390 # check string encoding
|
gyorgy@0
|
391 print "Startup: String encoding = '%s'" %(str(sys.getdefaultencoding()))
|
gyorgy@0
|
392
|
gyorgy@0
|
393 # check ip switch
|
gyorgy@0
|
394 ip = ''
|
gyorgy@0
|
395 if args.count('-ip') :
|
gyorgy@0
|
396 try :
|
gyorgy@0
|
397 # here we just see if it's numeric, parsing is done by the server wrapper
|
gyorgy@0
|
398 if args[args.index('-ip')+1].replace('.','').replace(':','').isdigit() :
|
gyorgy@0
|
399 ip = args[args.index('-ip')+1]
|
gyorgy@0
|
400 else :
|
gyorgy@0
|
401 print "Startup: Invalid service IP address. Use format: sawa.py -ip 127.0.0.1:8080"
|
gyorgy@0
|
402 os._exit(-1)
|
gyorgy@0
|
403 except :
|
gyorgy@0
|
404 print "Startup: Invalid service IP address. (Insufficient arguments.) Use format: cherryFxTest.py -ip 127.0.0.1:8080"
|
gyorgy@0
|
405 os._exit(-1)
|
gyorgy@0
|
406 args.remove(args[args.index('-ip')+1]);
|
gyorgy@0
|
407 args.remove('-ip')
|
gyorgy@0
|
408
|
gyorgy@0
|
409
|
gyorgy@0
|
410 # old command:
|
gyorgy@0
|
411 # cherrypy.quickstart(root, config=conf)
|
gyorgy@0
|
412
|
gyorgy@0
|
413 # Of course we can also mount request handler objects right here!
|
gyorgy@0
|
414 root = HomePage()
|
gyorgy@0
|
415 root.test = TestPage()
|
gyorgy@0
|
416 root.out = OutPage()
|
gyorgy@0
|
417 #root = TestPage()
|
gyorgy@0
|
418
|
gyorgy@0
|
419 server = CherryPyServer(ServerConfig(root=root,local=local,conf=conf))
|
gyorgy@0
|
420 # if local :
|
gyorgy@0
|
421 # server = CherryPyServer(ServerConfig(root=root,local=local,conf=conf))
|
gyorgy@0
|
422 # else :
|
gyorgy@0
|
423 # server = CherryPyServer(ServerConfig(root=False,local=local,conf=conf))
|
gyorgy@0
|
424 server.mount(root,path_name='')
|
gyorgy@0
|
425 server.quickstart(ip)
|
gyorgy@0
|
426
|
gyorgy@0
|
427
|
gyorgy@0
|
428 if __name__ == '__main__':
|
gyorgy@0
|
429 # CherryPy always starts with app.root when trying to map request URIs
|
gyorgy@0
|
430 # to objects, so we need to mount a request handler root. A request
|
gyorgy@0
|
431 # to '/' will be mapped to HelloWorld().index().
|
gyorgy@0
|
432 # cherrypy.quickstart(root, config=tutconf)
|
gyorgy@0
|
433 import sys
|
gyorgy@0
|
434 startFxTest(sys.argv[1:])
|
gyorgy@0
|
435 else:
|
gyorgy@0
|
436 # This branch is for the test suite; you can ignore it.
|
gyorgy@0
|
437 cherrypy.tree.mount(root, config=tutconf)
|
gyorgy@0
|
438
|