Hello Alessandro, Thank you for your quick response to my inquiry.
I added the call to tg.decorators.override_template(self, 'genshi:echidna.templates.machine_add') just before the return, but it appears to have no effect. The call is being processed, because when I mangle the argument list, it faults on that line. Changing the template defined in the @expose() dectorator above the add_finish() does have an effect. I also tried removing the @expose() completely and just using the override dectorator. That resulted in a 404 error. I expected both the override approach and the one that Sam suggested to work, and was a bit surprised that the override_template did not. Jeff Makaiwi On Monday, February 9, 2015 at 12:58:10 AM UTC-8, Alessandro Molina wrote: > > In TurboGears2 the controller method decorators are not function > decorators, they do not change the function behaviour in any way, they > instead register various hooks and functions that need to be executed > during the request flow. > > This means that when you call them you just call a plain function, you are > still exposing the template from add_finish. > > If you want to call add_vmware and render its template you should call > override_template ( > http://turbogears.readthedocs.org/en/latest/reference/classes.html#tg.decorators.override_template > > ) right before doing "return self.add_vmware" that way you will switch to > the right template and then return the data from add_vmware for the > template. > > On Mon, Feb 9, 2015 at 3:39 AM, <[email protected] <javascript:>> > wrote: > >> Hello all, >> >> I am a relatively new user of TG2, and came into the project because >> changes in our campus environment finally created a problem that could not >> be fixed in a TG1/Python 2.4 based web application. >> >> The problem I've encountered is in a controller that does some silent >> processing of a form, checks some values and then forwards the user to a >> sub-form to continue adding additional information. This worked well under >> TG1, but in TG2, the framework appears to be unable to find the template >> (template_name is set to None). >> >> The code fragment looks like this with the line that triggers the fault >> highlighted in bold in the "add_finish" function: >> >> @expose(template="echidna.templates.machine_add") >> def add(self, **kw): >> return dict(page='machine_add', >> edit_form=forms.AddMachineFields, >> navigation=Markup(nav(current='add_machine', >> login=False)), >> action='/machine/add_finish', >> params={}, >> defaults={}) >> >> @expose() >> @validate(forms.AddMachineFields, error_handler=add) >> def add_finish(self, number, provider, chartstring): >> if provider=='IST VMware': >> flash('Provider "%s" is supported.'%provider) >> *return self.add_vmware(number, chartstring)* >> else: >> flash('Provider "%s" is not currently supported.'%provider) >> redirect('/machine/add/') >> >> >> @expose(template="echidna.templates.machine_add") >> def add_vmware(self, number, chartstring): >> params=dict(repetitions=dict(hosts=int(number))) >> return dict(edit_form=forms.AddMachineVMWare, >> navigation = Markup(nav(current='add_machine', >> login=False)), >> action = '/machine/vmware_finish' >> params=params, >> defaults={'number':number, >> 'chartstring':chartstring}) >> >> >> >> I have a work-around that changes the add_finish into a confirmation >> page, but before commiting to adding an extra manual step in the process I >> am asking if there is a proper way to call the add_vmware function from the >> add_finish function within the TG2 framework. >> >> The specific problem report for the code above is: >> >> File >> "/projects/tg2env/lib/python2.6/site-packages/tg/renderers/genshi.py", >> line *196*, in get_dotted_filename >> >> if not filename.endswith(self.template_extension): >> >> AttributeError: 'NoneType' object has no attribute 'endswith' >> >> Thanks for any information or assistance. >> >> Jeff Makaiwi >> UC Berkeley >> >> -- >> You received this message because you are subscribed to the Google Groups >> "TurboGears" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://groups.google.com/group/turbogears. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "TurboGears" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/turbogears. For more options, visit https://groups.google.com/d/optout.

