annotate cherryFxTest.py @ 8:abf246c42105

added audio part 8
author George Fazekas <gyorgy.fazekas@eecs.qmul.ac.uk>
date Wed, 06 Mar 2013 15:55:39 +0000
parents 032bc65ebafc
children 9ab73065952b
rev   line source
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