Mercurial > hg > env-test-daniele
diff cherry2 copy 2.py @ 0:032bc65ebafc
added core components
author | George Fazekas <gyorgy.fazekas@eecs.qmul.ac.uk> |
---|---|
date | Wed, 06 Mar 2013 15:45:48 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cherry2 copy 2.py Wed Mar 06 15:45:48 2013 +0000 @@ -0,0 +1,316 @@ +""" +Tutorial - Multiple objects + +This tutorial shows you how to create a site structure through multiple +possibly nested request handler objects. +""" + +import cherrypy, os, random +from cherrypy.lib.static import serve_file +from templates import * + +from DirectorySession import DirectorySession + +#from pprint import pprint + +PATH = os.path.abspath(os.path.dirname(__file__)) + + +#audiodir = './audio' +#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']))] +#cherrypy.session['fxs'].remove('dry') +#print cherrypy.session['fxs'] + +class Root(object): pass + + +class HomePage: + def index(self): + + + + return "empty" + + + index.exposed = True + +class TestPage: + + def getFiles(self): + audiodir = './audio' + 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']))] + cherrypy.session['fxs'].remove('dry') + print cherrypy.session['fxs'] + + def index(self): + TestPage.getFiles(self) + cherrypy.session['sid'] = None + cherrypy.session['sid_filename'] = None + + cherrypy.session['test'] = None + cherrypy.session['results'] = None + cherrypy.session['tests'] = None + cherrypy.session['test_nr'] = None + cherrypy.session['audio_pairs'] = None + cherrypy.session['page'] = None + cherrypy.session['pages'] = 4 + cherrypy.session['userinfobox'] = None + #return ''' + # <p> + # <a href="/test/">start test</a> + # </p>''' + cherrypy.session['sid'] = cherrypy.session.get_session_path().split('/')[1] + print cherrypy.session['sid'] + + + + return welcome_templ %cherrypy.session['sid'] + + + + def doStart(self, sessionId, startButton, userinfobox=None): + cherrypy.session['userinfobox'] = userinfobox + cherrypy.session['sessionId'] = sessionId + #print "sid:" + #print TestPage.sid + #print sessionId + if cherrypy.session['sid'] != str(cherrypy.session['sessionId']): + return TestPage.sessionError(self) + else: + return TestPage.index2(self) + + + + + def index2(self): + try: print testvar + except: pass + #testvar = "00000000000000000000000000000000000000000000000000000000000000000000000000" + #TestPage.sid = TestPage.getSid(self) + + #if TestPage.sid != TestPage.sidstart: + # return TestPage.sessionError(self) + + + #TestPage.sid_filename = 'results/%s.txt'%TestPage.sid + #TestPage.sid_userinfofilename = 'results/%s_info.txt'%TestPage.sid + #print TestPage.sid_filename + + #cherrypy.session['userinfo'] = userinfo + + + #cherrypy.session.write_data(userinfo+'\n','results.txt') + + #f = open(TestPage.sid_userinfofilename, 'w') + #f.write('%s\n%s'%(TestPage.sid, str(userinfo))) + #f.close() + + + # TestPage.pageComplete = [] + # for n in xrange(TestPage.pages): + # TestPage.pageComplete.append(0) + + + #take 2 examples for each effect + + cherrypy.session['audio_pairs'] = [] + + # get effected files: + + for cherrypy.session['fx'] in cherrypy.session['fxs']: + cherrypy.session['dirlist'] = os.listdir('./audio/%s/'%cherrypy.session['fx']) + cherrypy.session['filelist'] = [] + for cherrypy.session['item'] in cherrypy.session['dirlist']: + if cherrypy.session['item'].split('.')[-1] == 'mp3': + cherrypy.session['filelist'].append(cherrypy.session['item'].split('.')[0]) + + # create audio pairs for this fx + + cherrypy.session['first'] = cherrypy.session['second'] = random.choice(cherrypy.session['filelist']) + while cherrypy.session['first'] == cherrypy.session['second']: + cherrypy.session['second'] = random.choice(cherrypy.session['filelist']) + + cherrypy.session['dry1'] = 'dry/%s' %cherrypy.session['first'].split('_%s'%cherrypy.session['fx'])[0] + cherrypy.session['fx1'] = '%s/%s' %(cherrypy.session['first'], cherrypy.session['fx']) + cherrypy.session['dry2'] = 'dry/%s' %cherrypy.session['second'].split('_%s'%cherrypy.session['fx'])[0] + cherrypy.session['fx2'] = '%s/%s' %(cherrypy.session['fx'], cherrypy.session['second']) + cherrypy.session['audio_pairs'].append([cherrypy.session['fx'], cherrypy.session['dry1'], cherrypy.session['fx1']]) + cherrypy.session['audio_pairs'].append([cherrypy.session['fx'], cherrypy.session['dry2'], cherrypy.session['fx2']]) + + #print TestPage.audio_pairs + random.shuffle(cherrypy.session['audio_pairs']) + + cherrypy.session['page'] = 1 + cherrypy.session['pages'] = 4 + cherrypy.session['tests'] = 10 * cherrypy.session['pages'] + cherrypy.session['results'] = [] + for cherrypy.session['n'] in xrange(cherrypy.session['tests']): cherrypy.session['results'].append([None,0,0,0,0]) + + + # create tuple to fill template + cherrypy.session['ts'] = [] + for cherrypy.session['k'] in xrange(40): + cherrypy.session['ts'].append(0) + cherrypy.session['ts'].append(cherrypy.session['page']) + cherrypy.session['ts'].append(cherrypy.session['pages']) + for k in xrange(10): + pos = 10 * (cherrypy.session['page'] - 1) + k + #print pos + for n in xrange(3): cherrypy.session['ts'].append(cherrypy.session['audio_pairs'][pos][1]) + for n in xrange(3): cherrypy.session['ts'].append(cherrypy.session['audio_pairs'][pos][2]) + cherrypy.session['ts'].append(cherrypy.session['page']) + cherrypy.session['ts'].append(cherrypy.session['sid']) + cherrypy.session['ts'] = tuple(cherrypy.session['ts']) + print cherrypy.session['ts'] + + return audiotempl %cherrypy.session['ts'] + + + + + + + + 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): + #print attribute1 + ' ' + attribute2 + # Error check + + + + + + print "################################# %s" %pageId + #_pageId = int(pageId) - 1 + + if cherrypy.session['page'] != int(pageId): + print "################################# BACK BUTTON PRESSED #################################" + #resString = ',\n'.join(str(x) for x in TestPage.results) + #resString += '\n\nERROR: BACK BUTTON PRESSED' + #f = open(TestPage.sid_filename, 'w') + #f.write(resString) + #f.close() + #return ''' + # <p> + # <a href="/test/">nooo! you pressed the back button, please start again!</a> + # </p>''' + + # instead: overwrite previously submitted data. WILL THE OLD VALUES BE SUBMITTED AGAIN IN ALL BROWSERS? + cherrypy.session['page'] = int(pageId) + + + + if cherrypy.session['sid'] != str(sessionId): + return TestPage.sessionError(self) + + + + #store results + + cherrypy.session['pos'] = 10 * (cherrypy.session['page'] - 1) + + 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)] + 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)] + 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)] + 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)] + 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)] + 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)] + 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)] + 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)] + 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)] + 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)] + + + resString = cherrypy.session['sid'] + '\n' + cherrypy.session['userinfobox'] + '\n' + ',\n'.join(str(x) for x in cherrypy.session['results']) + + #f = open(TestPage.sid_filename, 'w') + #f.write(resString) + #f.close() + + cherrypy.session.write_data(resString,'%s.txt'%cherrypy.session['sid']) + + if cherrypy.session['page'] < cherrypy.session['pages']: + cherrypy.session['page'] += 1 + + # create tuple to fill template + cherrypy.session['ts'] = [] + cherrypy.session['npos'] = cherrypy.session['pos'] + 10 + for cherrypy.session['k'] in xrange(10): + for cherrypy.session['i'] in xrange(4): + cherrypy.session['ts'].append(cherrypy.session['results'][cherrypy.session['npos']+cherrypy.session['k']][cherrypy.session['i']+1]) + cherrypy.session['ts'].append(cherrypy.session['page']) + cherrypy.session['ts'].append(cherrypy.session['pages']) + for cherrypy.session['n'] in xrange(10): + pos = 10 * (cherrypy.session['page'] - 1) + cherrypy.session['n'] + #print pos + for n in xrange(3): cherrypy.session['ts'].append(cherrypy.session['audio_pairs'][pos][1]) + for n in xrange(3): cherrypy.session['ts'].append(cherrypy.session['audio_pairs'][pos][2]) + cherrypy.session['ts'].append(cherrypy.session['page']) + cherrypy.session['ts'].append(cherrypy.session['sid']) + cherrypy.session['ts'] = tuple(cherrypy.session['ts']) + + return audiotempl %cherrypy.session['ts'] + else: + #end_filename = 'results/%s_f.txt'%TestPage.sid + #os.rename(TestPage.sid_filename, end_filename) + + print cherrypy.session['results'] + #_results = [] + + cherrypy.session['templ'] = '' + for cherrypy.session['n'] in xrange(cherrypy.session['tests']): + 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]) + cherrypy.session['templ'] += cherrypy.session['_templ'] + + #TestPage.pageComplete += 1 + cherrypy.session['sid'] = None + return endtempl%cherrypy.session['templ'] + """\n<a href="/test/">start test</a>""" + + index.exposed = True + doAttrib.exposed = True + index2.exposed = True + doStart.exposed = True + + + def sessionError(TestPage): + print "################################# SESSION ERROR #################################" + cherrypy.session['resString'] = str(cherrypy.session['sid']) + '\n' + cherrypy.session['userinfobox'] + '\n' + ',\n'.join(str(x) for x in cherrypy.session['results']) + cherrypy.session['resString'] += '\n\nERROR: SESSION CONFUSION' + #f = open(TestPage.sid_filename, 'w') + #f.write(resString) + #f.close() + cherrypy.session.write_data(cherrypy.session['resString'],'%s.txt'%cherrypy.session['sid']) + + return ''' + <p> + <a href="/test/">oh noes! there is something wrong with your session, please start again or go for a coffee!</a> + </p>''' + + +# def getSid(TestPage): +# result_txts = os.listdir('results') +# print result_txts +# sid = int(random.random() * 100000000) +# sid_filen = '%s.txt'%sid +# while sid_filen in result_txts: +# sid = int(random.random() * 100000000) +# sid_filen = '%s.txt'%sid +# return sid + + +# Of course we can also mount request handler objects right here! +root = HomePage() +root.test = TestPage() +#root = TestPage() + + +tutconf = os.path.join(os.path.dirname(__file__), 'conf.conf') + +if __name__ == '__main__': + # CherryPy always starts with app.root when trying to map request URIs + # to objects, so we need to mount a request handler root. A request + # to '/' will be mapped to HelloWorld().index(). + cherrypy.quickstart(root, config=tutconf) +else: + # This branch is for the test suite; you can ignore it. + cherrypy.tree.mount(root, config=tutconf) +