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