11import glob2
22import os
33import json
4+ import balanced
5+ import pprint
6+ from pprint import PrettyPrinter
47from mako .template import Template
58from mako .lookup import TemplateLookup
69
10+ def construct_response (scenario_name ):
11+ # load up response data
12+ data = json .load (open ('scenario.cache' ,'r' ))
13+ lookup = TemplateLookup (directories = ['./scenarios' ])
14+
15+ for path in glob2 .glob ('./scenarios/**/request.mako' ):
16+ if path != scenario_name :
17+ continue
18+ event_name = path .split ('/' )[- 2 ]
19+ template = Template ("${response}" )
20+ try :
21+ response = data [event_name ].get ('response' , {})
22+ text = template .render (response = response ).strip ()
23+ response = json .loads (text )
24+ del response ["links" ]
25+ for key , value in response .items ():
26+ response = value [0 ]
27+ type = key
28+ resource = balanced .Resource ()
29+ object_type = resource .registry [type ]
30+ object_instance = object_type ()
31+ for key , value in response .items ():
32+ setattr (object_instance , key , value )
33+ text = template .render (response = object_instance )
34+ except KeyError :
35+ text = ''
36+ return text
37+
738def render_executables ():
839 # load up scenario data
940 data = json .load (open ('scenario.cache' ,'r' ))
1041 lookup = TemplateLookup (directories = ['./scenarios' ])
11-
42+
1243 for path in glob2 .glob ('./scenarios/**/request.mako' ):
1344 event_name = path .split ('/' )[- 2 ]
1445 template = Template (filename = path , lookup = lookup ,)
@@ -31,8 +62,10 @@ def render_mako():
3162 with open (os .path .join (dir , 'python.mako' ), 'w+b' ) as wfile :
3263 definition = open (os .path .join (dir , 'definition.mako' ),'r' ).read ()
3364 request = open (os .path .join (dir , 'executable.py' ),'r' ).read ()
65+ response = construct_response (path )
3466 body = "% if mode == 'definition':\n {}" .format (definition ) + "\n " \
35- "% elif mode == 'request':\n " + request + "\n % endif"
67+ "% elif mode == 'request':\n " + request + "\n " \
68+ "% elif mode == 'response':\n " + response + "\n % endif"
3669 wfile .write (body )
3770
3871def issue_no_mako_warnings ():
0 commit comments