gyorgy@0: import cherrypy, os, random, smtplib, string gyorgy@0: from cherrypy.lib.static import serve_file gyorgy@0: from templates import * gyorgy@0: gyorgy@0: from DirectorySession import DirectorySession gyorgy@0: from ServerWrapper import ServerWrapper as CherryPyServer gyorgy@0: from ServerWrapper import Config as ServerConfig gyorgy@0: gyorgy@0: from email.MIMEBase import MIMEBase gyorgy@0: from email.MIMEText import MIMEText gyorgy@0: from email.MIMEMultipart import MIMEMultipart gyorgy@0: from email.Utils import COMMASPACE, formatdate gyorgy@0: from email import Encoders gyorgy@0: gyorgy@0: from pprint import pprint gyorgy@0: gyorgy@0: PATH = os.path.abspath(os.path.dirname(__file__)) gyorgy@0: gyorgy@0: class Root(object): pass gyorgy@0: gyorgy@0: class HomePage: gyorgy@0: def index(self): gyorgy@0: daniele@11: return "This is the home page..." gyorgy@0: gyorgy@0: index.exposed = True gyorgy@0: gyorgy@0: class TestPage: gyorgy@0: daniele@11: def getAASPFiles(self): daniele@12: audioDir = './AASPAudio' daniele@11: cherrypy.session['cats'] = [cherrypy.session['f'] for cherrypy.session['f'] in os.listdir(audioDir) if os.path.isdir(os.path.join(audioDir,cherrypy.session['f']))] daniele@12: #print cherrypy.session['cats'] gyorgy@0: gyorgy@0: def index(self): daniele@11: TestPage.getAASPFiles(self) gyorgy@0: cherrypy.session['sid'] = None gyorgy@0: gyorgy@0: cherrypy.session['sid_filename'] = None gyorgy@0: gyorgy@0: gyorgy@0: if cherrypy.request.headers.has_key("X-Forwarded-For"): gyorgy@0: cherrypy.session['ip'] = cherrypy.request.headers["X-Forwarded-For"] gyorgy@0: elif cherrypy.request.headers.has_key("Remote-Addr"): gyorgy@0: cherrypy.session['ip'] = cherrypy.request.headers["Remote-Addr"] gyorgy@0: else : gyorgy@0: cherrypy.session['ip'] = None gyorgy@0: gyorgy@0: cherrypy.session['test'] = None gyorgy@0: cherrypy.session['results'] = None gyorgy@0: cherrypy.session['tests'] = None gyorgy@0: cherrypy.session['test_nr'] = None daniele@11: cherrypy.session['audio'] = None gyorgy@0: cherrypy.session['page'] = 0 gyorgy@0: cherrypy.session['pages'] = 6 gyorgy@0: cherrypy.session['userinfobox'] = None gyorgy@0: cherrypy.session['ts'] = None gyorgy@0: daniele@11: cherrypy.session['audio'] = [] gyorgy@0: daniele@11: cherrypy.session['audio'] = [] daniele@11: for cherrypy.session['cat'] in cherrypy.session['cats']: daniele@12: cherrypy.session['dirlist'] = os.listdir('./AASPAudio/%s/'%cherrypy.session['cat']) daniele@11: for cherrypy.session['item'] in cherrypy.session['dirlist']: daniele@11: if cherrypy.session['item'].split('.')[-1] == 'wav': daniele@11: cherrypy.session['audio'].append(cherrypy.session['cat'] + '/' + cherrypy.session['item'].split('.')[0]) daniele@12: daniele@11: random.shuffle(cherrypy.session['audio']) gyorgy@0: daniele@12: #print "NUMBER OF TESTS:" daniele@12: #print len(cherrypy.session['audio']) gyorgy@0: gyorgy@0: cherrypy.session['sid'] = cherrypy.session.get_session_path().split('/')[1] daniele@12: #print cherrypy.session['sid'] daniele@12: #pprint(cherrypy.session['audio']) gyorgy@0: gyorgy@0: TestPage.outfileid = '%s' %cherrypy.session['sid'] gyorgy@0: ida = 0 gyorgy@0: while os.path.exists('./sessions/%s/%s.txt' %(cherrypy.session['sid'], TestPage.outfileid)): gyorgy@0: TestPage.outfileid += '_%s' %ida gyorgy@0: ida += 1 gyorgy@0: gyorgy@0: gyorgy@0: return welcome_templ %cherrypy.session['sid'] gyorgy@0: gyorgy@0: daniele@11: def doStart(self, pageId, sessionId, startButton, uinfo00=None, uinfo01=None, info1=None): gyorgy@0: gyorgy@0: if cherrypy.session['page'] != int(pageId): gyorgy@0: print "################################# BACK BUTTON PRESSED #################################" gyorgy@0: gyorgy@0: gyorgy@0: if cherrypy.session['sid'] != str(sessionId): gyorgy@0: return TestPage.sessionError(self) gyorgy@0: daniele@11: cherrypy.session['userinfobox'] = str([str(uinfo00), str(uinfo01), int(info1)]) + '\n' gyorgy@0: cherrypy.session['sessionId'] = sessionId gyorgy@0: if cherrypy.session['sid'] != str(cherrypy.session['sessionId']): gyorgy@0: return TestPage.sessionError(self) gyorgy@0: else: gyorgy@0: return TestPage.index2(self) gyorgy@0: gyorgy@0: def index2(self): daniele@12: gyorgy@0: cherrypy.session['page'] = 1 daniele@11: cherrypy.session['pages'] = 10 daniele@12: cherrypy.session['tests'] = len(cherrypy.session['audio']) gyorgy@0: cherrypy.session['results'] = [] daniele@11: for cherrypy.session['n'] in xrange(cherrypy.session['tests']): cherrypy.session['results'].append([None]) gyorgy@0: gyorgy@0: cherrypy.session['ts'] = [] daniele@11: for cherrypy.session['k'] in xrange(10): gyorgy@0: cherrypy.session['ts'].append(0) daniele@12: daniele@12: print "################################# %s" %str(cherrypy.session['page']) daniele@12: return audiotempl%TestPage.makeTuple(self, 10) gyorgy@0: daniele@11: def doAttrib(self, pageId, sessionId, submitButton, attribute1=None, attribute2=None, attribute3=None, attribute4=None, attribute5=None, attribute6=None, attribute7=None, attribute8=None, attribute9=None, attribute10=None): gyorgy@0: gyorgy@0: print "################################# %s" %pageId gyorgy@0: gyorgy@0: if cherrypy.session['page'] != int(pageId): gyorgy@0: print "################################# BACK BUTTON PRESSED #################################" gyorgy@0: gyorgy@0: cherrypy.session['page'] = int(pageId) gyorgy@0: gyorgy@0: if cherrypy.session['sid'] != str(sessionId): gyorgy@0: return TestPage.sessionError(self) daniele@12: gyorgy@0: cherrypy.session['pos'] = 10 * (cherrypy.session['page'] - 1) gyorgy@0: daniele@12: cherrypy.session['results'][cherrypy.session['pos']] = [cherrypy.session['audio'][cherrypy.session['pos']].split('/')[-1], int(attribute1)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+1] = [cherrypy.session['audio'][cherrypy.session['pos']+1].split('/')[-1], int(attribute2)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+2] = [cherrypy.session['audio'][cherrypy.session['pos']+2].split('/')[-1], int(attribute3)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+3] = [cherrypy.session['audio'][cherrypy.session['pos']+3].split('/')[-1], int(attribute4)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+4] = [cherrypy.session['audio'][cherrypy.session['pos']+4].split('/')[-1], int(attribute5)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+5] = [cherrypy.session['audio'][cherrypy.session['pos']+5].split('/')[-1], int(attribute6)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+6] = [cherrypy.session['audio'][cherrypy.session['pos']+6].split('/')[-1], int(attribute7)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+7] = [cherrypy.session['audio'][cherrypy.session['pos']+7].split('/')[-1], int(attribute8)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+8] = [cherrypy.session['audio'][cherrypy.session['pos']+8].split('/')[-1], int(attribute9)] daniele@12: cherrypy.session['results'][cherrypy.session['pos']+9] = [cherrypy.session['audio'][cherrypy.session['pos']+9].split('/')[-1], int(attribute10)] daniele@12: resString = cherrypy.session['ip'] + '\n' + TestPage.outfileid + '\n' + cherrypy.session['userinfobox'] + '\n' + ',\n'.join(str(x) for x in cherrypy.session['results']) daniele@12: print resString gyorgy@0: daniele@12: daniele@12: cherrypy.session.write_data(resString,'%s.txt'%TestPage.outfileid) daniele@12: gyorgy@0: gyorgy@0: gyorgy@0: cherrypy.session['page'] += 1 gyorgy@0: cherrypy.session['ts'] = [] gyorgy@0: cherrypy.session['npos'] = cherrypy.session['pos'] + 10 gyorgy@0: daniele@12: cherrypy.session['m'] = 10 gyorgy@0: daniele@12: for cherrypy.session['k'] in xrange(cherrypy.session['m']): cherrypy.session['ts'].append(0) daniele@12: #cherrypy.session['ts'].append(cherrypy.session['results'][cherrypy.session['npos']+cherrypy.session['k']]) daniele@12: daniele@12: daniele@11: return audiotempl%TestPage.makeTuple(self, cherrypy.session['m']) daniele@12: daniele@12: #if cherrypy.session['page'] != cherrypy.session['pages'] daniele@12: # return audiotempl%TestPage.makeTuple(self, cherrypy.session['m']) daniele@12: #else daniele@12: # cherrypy.session['templ'] = '' daniele@12: # for cherrypy.session['n'] in xrange(cherrypy.session['tests']): daniele@12: # 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]) daniele@12: # cherrypy.session['templ'] += cherrypy.session['_templ'] daniele@12: # try: daniele@12: # TestPage.sendMail(self) daniele@12: # except: daniele@12: # print "WARNING: COULD NOT SEND RESULTS" daniele@12: # pass daniele@12: # cherrypy.session['sid'] = None daniele@12: # return endtempl%cherrypy.session['templ'] gyorgy@0: gyorgy@0: index.exposed = True gyorgy@0: doAttrib.exposed = True gyorgy@0: index2.exposed = True gyorgy@0: doStart.exposed = True gyorgy@0: gyorgy@0: def makeTuple(TestPage, nr): gyorgy@0: cherrypy.session['nr'] = nr gyorgy@0: cherrypy.session['ts'].append(cherrypy.session['page']) gyorgy@0: cherrypy.session['ts'].append(cherrypy.session['pages']) gyorgy@0: for cherrypy.session['k'] in xrange(cherrypy.session['nr']): gyorgy@0: pos = 10 * (cherrypy.session['page'] - 1) + cherrypy.session['k'] daniele@12: for n in xrange(3): cherrypy.session['ts'].append(cherrypy.session['audio'][pos]) gyorgy@0: cherrypy.session['ts'].append(cherrypy.session['page']) gyorgy@0: cherrypy.session['ts'].append(cherrypy.session['sid']) gyorgy@0: cherrypy.session['ts'] = tuple(cherrypy.session['ts']) gyorgy@0: print cherrypy.session['ts'] gyorgy@0: return cherrypy.session['ts'] gyorgy@0: gyorgy@0: def sessionError(TestPage): gyorgy@0: print "################################# SESSION ERROR #################################" gyorgy@0: 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: cherrypy.session['resString'] += '\n\nERROR: SESSION CONFUSION' gyorgy@0: #f = open(TestPage.sid_filename, 'w') gyorgy@0: #f.write(resString) gyorgy@0: #f.close() gyorgy@0: cherrypy.session.write_data(cherrypy.session['resString'],'%s.txt'%TestPage.outfileid) gyorgy@0: gyorgy@0: return ''' gyorgy@0:
gyorgy@0: oh noes! there is something wrong with your session, please start again or go for a coffee! gyorgy@0:
''' gyorgy@0: gyorgy@0: gyorgy@0: def sendMail(TestPage): gyorgy@0: cherrypy.session['file'] = './sessions/%s/%s.txt'%(cherrypy.session['sid'], TestPage.outfileid) gyorgy@0: username = 'eecsqmul@gmail.com' gyorgy@0: password = 'perceptual' gyorgy@0: fro = 'FX-Test