cylindertransport-web.py

changeset 18
ff1941c85fd3
parent 14
ba3d8c56e6f5
child 19
32de35694e56
equal deleted inserted replaced
17:dee15870206a 18:ff1941c85fd3
4 Web CGI script for 3D View 4 Web CGI script for 3D View
5 """ 5 """
6 6
7 import cgi, data, json, config 7 import cgi, data, json, config
8 from cylindertransport import CylinderSpacerCalculator 8 from cylindertransport import CylinderSpacerCalculator
9 import base64
10 import cStringIO
9 11
10 # enable debugging 12 # enable debugging
11 #import sys 13 #import sys
12 #sys.stderr = sys.stdout 14 #sys.stderr = sys.stdout
13 #import cgitb 15 import cgitb
14 #cgitb.enable() 16 cgitb.enable()
15 17
16 def do_action(args): 18 def do_action(args):
17 """ 19 """
18 process some actions (like JSON requests) 20 process some actions (like JSON requests)
19 """ 21 """
20 if args["action"].value == "calculate": 22 if args["action"].value == "calculate":
21 cylinders = args.getlist("cylinders[]") 23 cylinders = args.getlist("cylinders[]")
22 calc = CylinderSpacerCalculator(cylinders) 24 calc = CylinderSpacerCalculator(cylinders)
23 calc.calculate() 25 calc.calculate()
26 image = calc.render_image()
27 buffer = cStringIO.StringIO()
28 image.save(buffer, format="PNG")
29 img_str = base64.b64encode(buffer.getvalue())
24 print json.dumps({ 30 print json.dumps({
25 "objects": calc.circles, 31 "objects": calc.circles,
26 "scale3d": config.SCALE3D 32 "scale3d": config.SCALE3D,
33 "image": img_str
27 }) 34 })
28 else: 35 else:
29 print "unknown Action %s" % args["action"].value 36 print "unknown Action %s" % args["action"].value
30 37
31 def run(): 38 def run():

mercurial