def generate_view_class(self, source, target): targetklass = read_target_node(source, target.target) try: module = targetklass.parent except AttributeError: # if there is no parent, this handler is not responsible return tdir = module.parent try: tok = token(str(source.uuid), False) has_view_methods = tok.has_view_methods except: has_view_methods = False view_class = source.stereotype('pyramid:view_class') # create init method if view_class or has_view_methods: inits = targetklass.functions('__init__') if inits: init = inits[0] else: init = Function('__init__') targetklass.insertfirst(init) # import pdb;pdb.set_trace() init.args = ['context', 'request'] if not init.blocks('self.request'): init.insertfirst(Block('self.request = request')) if not init.blocks('self.context'): init.insertfirst(Block('self.context = context')) # if its a view_class create the global_template if view_class: gtemplate = view_class.taggedvalue('global_template').value from_gtemplate = view_class.taggedvalue('from_global_template').value create_template_file(tdir, gtemplate, from_gtemplate) imps = Imports(module) imps.set('pyramid.renderers', 'get_renderer') if not init.blocks('global_template'): init.insertlast(Block('renderer = get_renderer("%s")' % gtemplate)) init.insertlast(Block('self.global_template = renderer.implementation()')) init.insertlast(Block('self.macros = self.global_template.macros'))